jquery-datatables 1.10.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +27 -0
  5. data/README.md +118 -0
  6. data/Rakefile +166 -0
  7. data/app/assets/images/datatables/sort_asc.png +0 -0
  8. data/app/assets/images/datatables/sort_asc_disabled.png +0 -0
  9. data/app/assets/images/datatables/sort_both.png +0 -0
  10. data/app/assets/images/datatables/sort_desc.png +0 -0
  11. data/app/assets/images/datatables/sort_desc_disabled.png +0 -0
  12. data/app/assets/javascripts/datatables/dataTables.bootstrap.js +182 -0
  13. data/app/assets/javascripts/datatables/dataTables.bootstrap4.js +184 -0
  14. data/app/assets/javascripts/datatables/dataTables.foundation.js +174 -0
  15. data/app/assets/javascripts/datatables/dataTables.jqueryui.js +164 -0
  16. data/app/assets/javascripts/datatables/dataTables.material.js +191 -0
  17. data/app/assets/javascripts/datatables/dataTables.semanticui.js +208 -0
  18. data/app/assets/javascripts/datatables/dataTables.uikit.js +176 -0
  19. data/app/assets/javascripts/datatables/extensions/AutoFill/autoFill.bootstrap.js +43 -0
  20. data/app/assets/javascripts/datatables/extensions/AutoFill/autoFill.bootstrap4.js +43 -0
  21. data/app/assets/javascripts/datatables/extensions/AutoFill/autoFill.foundation.js +43 -0
  22. data/app/assets/javascripts/datatables/extensions/AutoFill/autoFill.jqueryui.js +43 -0
  23. data/app/assets/javascripts/datatables/extensions/AutoFill/autoFill.semanticui.js +43 -0
  24. data/app/assets/javascripts/datatables/extensions/AutoFill/dataTables.autoFill.js +1036 -0
  25. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap.js +68 -0
  26. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap4.js +60 -0
  27. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.colVis.js +199 -0
  28. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.flash.js +1325 -0
  29. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.foundation.js +85 -0
  30. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.html5.js +1322 -0
  31. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.jqueryui.js +62 -0
  32. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.print.js +172 -0
  33. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.semanticui.js +57 -0
  34. data/app/assets/javascripts/datatables/extensions/Buttons/dataTables.buttons.js +1634 -0
  35. data/app/assets/javascripts/datatables/extensions/ColReorder/dataTables.colReorder.js +1335 -0
  36. data/app/assets/javascripts/datatables/extensions/FixedColumns/dataTables.fixedColumns.js +1623 -0
  37. data/app/assets/javascripts/datatables/extensions/FixedHeader/dataTables.fixedHeader.js +672 -0
  38. data/app/assets/javascripts/datatables/extensions/KeyTable/dataTables.keyTable.js +883 -0
  39. data/app/assets/javascripts/datatables/extensions/Responsive/dataTables.responsive.js +1232 -0
  40. data/app/assets/javascripts/datatables/extensions/Responsive/responsive.bootstrap.js +81 -0
  41. data/app/assets/javascripts/datatables/extensions/Responsive/responsive.bootstrap4.js +81 -0
  42. data/app/assets/javascripts/datatables/extensions/Responsive/responsive.foundation.js +62 -0
  43. data/app/assets/javascripts/datatables/extensions/Responsive/responsive.jqueryui.js +63 -0
  44. data/app/assets/javascripts/datatables/extensions/Responsive/responsive.semanticui.js +77 -0
  45. data/app/assets/javascripts/datatables/extensions/RowReorder/dataTables.rowReorder.js +709 -0
  46. data/app/assets/javascripts/datatables/extensions/Scroller/dataTables.scroller.js +1349 -0
  47. data/app/assets/javascripts/datatables/extensions/Select/dataTables.select.js +1109 -0
  48. data/app/assets/javascripts/datatables/jquery.dataTables.js +15278 -0
  49. data/app/assets/media/swf/flashExport.swf +0 -0
  50. data/app/assets/stylesheets/datatables/dataTables.bootstrap.css +185 -0
  51. data/app/assets/stylesheets/datatables/dataTables.bootstrap4.css +193 -0
  52. data/app/assets/stylesheets/datatables/dataTables.foundation.css +116 -0
  53. data/app/assets/stylesheets/datatables/dataTables.jqueryui.css +481 -0
  54. data/app/assets/stylesheets/datatables/dataTables.material.css +87 -0
  55. data/app/assets/stylesheets/datatables/dataTables.semanticui.css +103 -0
  56. data/app/assets/stylesheets/datatables/dataTables.uikit.css +146 -0
  57. data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.bootstrap.css +81 -0
  58. data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.bootstrap4.css +81 -0
  59. data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.dataTables.css +92 -0
  60. data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.foundation.css +85 -0
  61. data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.jqueryui.css +85 -0
  62. data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.semanticui.css +81 -0
  63. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap.css +102 -0
  64. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap4.css +163 -0
  65. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.dataTables.css +298 -0
  66. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.foundation.css +129 -0
  67. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.jqueryui.css +162 -0
  68. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.semanticui.css +114 -0
  69. data/app/assets/stylesheets/datatables/extensions/Buttons/common.scss +27 -0
  70. data/app/assets/stylesheets/datatables/extensions/Buttons/mixins.scss +89 -0
  71. data/app/assets/stylesheets/datatables/extensions/ColReorder/colReorder.bootstrap.css +11 -0
  72. data/app/assets/stylesheets/datatables/extensions/ColReorder/colReorder.bootstrap4.css +11 -0
  73. data/app/assets/stylesheets/datatables/extensions/ColReorder/colReorder.dataTables.css +11 -0
  74. data/app/assets/stylesheets/datatables/extensions/ColReorder/colReorder.foundation.css +11 -0
  75. data/app/assets/stylesheets/datatables/extensions/ColReorder/colReorder.jqueryui.css +11 -0
  76. data/app/assets/stylesheets/datatables/extensions/ColReorder/colReorder.semanticui.css +11 -0
  77. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.bootstrap.css +44 -0
  78. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.bootstrap4.css +44 -0
  79. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.dataTables.css +18 -0
  80. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.foundation.css +27 -0
  81. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.jqueryui.css +8 -0
  82. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.semanticui.css +16 -0
  83. data/app/assets/stylesheets/datatables/extensions/FixedHeader/fixedHeader.bootstrap.css +20 -0
  84. data/app/assets/stylesheets/datatables/extensions/FixedHeader/fixedHeader.bootstrap4.css +20 -0
  85. data/app/assets/stylesheets/datatables/extensions/FixedHeader/fixedHeader.dataTables.css +19 -0
  86. data/app/assets/stylesheets/datatables/extensions/FixedHeader/fixedHeader.foundation.css +20 -0
  87. data/app/assets/stylesheets/datatables/extensions/FixedHeader/fixedHeader.jqueryui.css +15 -0
  88. data/app/assets/stylesheets/datatables/extensions/FixedHeader/fixedHeader.semanticui.css +14 -0
  89. data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.bootstrap.css +5 -0
  90. data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.bootstrap4.css +5 -0
  91. data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.dataTables.css +5 -0
  92. data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.foundation.css +5 -0
  93. data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.jqueryui.css +5 -0
  94. data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.semanticui.css +5 -0
  95. data/app/assets/stylesheets/datatables/extensions/Responsive/responsive.bootstrap.css +181 -0
  96. data/app/assets/stylesheets/datatables/extensions/Responsive/responsive.bootstrap4.css +181 -0
  97. data/app/assets/stylesheets/datatables/extensions/Responsive/responsive.dataTables.css +178 -0
  98. data/app/assets/stylesheets/datatables/extensions/Responsive/responsive.foundation.css +181 -0
  99. data/app/assets/stylesheets/datatables/extensions/Responsive/responsive.jqueryui.css +178 -0
  100. data/app/assets/stylesheets/datatables/extensions/Responsive/responsive.semanticui.css +181 -0
  101. data/app/assets/stylesheets/datatables/extensions/RowReorder/rowReorder.bootstrap.css +22 -0
  102. data/app/assets/stylesheets/datatables/extensions/RowReorder/rowReorder.bootstrap4.css +22 -0
  103. data/app/assets/stylesheets/datatables/extensions/RowReorder/rowReorder.dataTables.css +22 -0
  104. data/app/assets/stylesheets/datatables/extensions/RowReorder/rowReorder.foundation.css +22 -0
  105. data/app/assets/stylesheets/datatables/extensions/RowReorder/rowReorder.jqueryui.css +22 -0
  106. data/app/assets/stylesheets/datatables/extensions/RowReorder/rowReorder.semanticui.css +22 -0
  107. data/app/assets/stylesheets/datatables/extensions/RowReorder/semanticui.scss +5 -0
  108. data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.bootstrap.css +24 -0
  109. data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.bootstrap4.css +24 -0
  110. data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.dataTables.css +20 -0
  111. data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.foundation.css +17 -0
  112. data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.jqueryui.css +20 -0
  113. data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.semanticui.css +20 -0
  114. data/app/assets/stylesheets/datatables/extensions/Select/select.bootstrap.css +110 -0
  115. data/app/assets/stylesheets/datatables/extensions/Select/select.bootstrap4.css +110 -0
  116. data/app/assets/stylesheets/datatables/extensions/Select/select.dataTables.css +100 -0
  117. data/app/assets/stylesheets/datatables/extensions/Select/select.foundation.css +112 -0
  118. data/app/assets/stylesheets/datatables/extensions/Select/select.jqueryui.css +100 -0
  119. data/app/assets/stylesheets/datatables/extensions/Select/select.semanticui.css +105 -0
  120. data/app/assets/stylesheets/datatables/jquery.dataTables.css +452 -0
  121. data/app/assets/stylesheets/datatables/jquery.dataTables_themeroller.css +416 -0
  122. data/jquery-datatables.gemspec +27 -0
  123. data/lib/generators/jquery/datatables/install_generator.rb +63 -0
  124. data/lib/generators/jquery/datatables/templates/bootstrap.css.tt +15 -0
  125. data/lib/generators/jquery/datatables/templates/bootstrap.js.tt +22 -0
  126. data/lib/generators/jquery/datatables/templates/bootstrap4.css.tt +15 -0
  127. data/lib/generators/jquery/datatables/templates/bootstrap4.js.tt +22 -0
  128. data/lib/generators/jquery/datatables/templates/foundation.css.tt +15 -0
  129. data/lib/generators/jquery/datatables/templates/foundation.js.tt +24 -0
  130. data/lib/generators/jquery/datatables/templates/jqueryui.css.tt +15 -0
  131. data/lib/generators/jquery/datatables/templates/jqueryui.js.tt +18 -0
  132. data/lib/generators/jquery/datatables/templates/material.css.tt +15 -0
  133. data/lib/generators/jquery/datatables/templates/material.js.tt +19 -0
  134. data/lib/generators/jquery/datatables/templates/regular.css.tt +15 -0
  135. data/lib/generators/jquery/datatables/templates/regular.js.tt +18 -0
  136. data/lib/generators/jquery/datatables/templates/semanticui.css.tt +16 -0
  137. data/lib/generators/jquery/datatables/templates/semanticui.js.tt +22 -0
  138. data/lib/generators/jquery/datatables/templates/uikit.css.tt +15 -0
  139. data/lib/generators/jquery/datatables/templates/uikit.js.tt +19 -0
  140. data/lib/jquery-datatables.rb +26 -0
  141. data/lib/jquery-datatables/engine.rb +11 -0
  142. data/lib/jquery-datatables/version.rb +6 -0
  143. metadata +269 -0
@@ -0,0 +1,81 @@
1
+ /*! Bootstrap integration for DataTables' Responsive
2
+ * ©2015-2016 SpryMedia Ltd - datatables.net/license
3
+ */
4
+
5
+ (function( factory ){
6
+ if ( typeof define === 'function' && define.amd ) {
7
+ // AMD
8
+ define( ['jquery', 'datatables.net-bs', 'datatables.net-responsive'], function ( $ ) {
9
+ return factory( $, window, document );
10
+ } );
11
+ }
12
+ else if ( typeof exports === 'object' ) {
13
+ // CommonJS
14
+ module.exports = function (root, $) {
15
+ if ( ! root ) {
16
+ root = window;
17
+ }
18
+
19
+ if ( ! $ || ! $.fn.dataTable ) {
20
+ $ = require('datatables.net-bs')(root, $).$;
21
+ }
22
+
23
+ if ( ! $.fn.dataTable.Responsive ) {
24
+ require('datatables.net-responsive')(root, $);
25
+ }
26
+
27
+ return factory( $, root, root.document );
28
+ };
29
+ }
30
+ else {
31
+ // Browser
32
+ factory( jQuery, window, document );
33
+ }
34
+ }(function( $, window, document, undefined ) {
35
+ 'use strict';
36
+ var DataTable = $.fn.dataTable;
37
+
38
+
39
+ var _display = DataTable.Responsive.display;
40
+ var _original = _display.modal;
41
+ var _modal = $(
42
+ '<div class="modal fade dtr-bs-modal" role="dialog">'+
43
+ '<div class="modal-dialog" role="document">'+
44
+ '<div class="modal-content">'+
45
+ '<div class="modal-header">'+
46
+ '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
47
+ '</div>'+
48
+ '<div class="modal-body"/>'+
49
+ '</div>'+
50
+ '</div>'+
51
+ '</div>'
52
+ );
53
+
54
+ _display.modal = function ( options ) {
55
+ return function ( row, update, render ) {
56
+ if ( ! $.fn.modal ) {
57
+ _original( row, update, render );
58
+ }
59
+ else {
60
+ if ( ! update ) {
61
+ if ( options && options.header ) {
62
+ _modal.find('div.modal-header')
63
+ .empty()
64
+ .append( '<h4 class="modal-title">'+options.header( row )+'</h4>' );
65
+ }
66
+
67
+ _modal.find( 'div.modal-body' )
68
+ .empty()
69
+ .append( render() );
70
+
71
+ _modal
72
+ .appendTo( 'body' )
73
+ .modal();
74
+ }
75
+ }
76
+ };
77
+ };
78
+
79
+
80
+ return DataTable.Responsive;
81
+ }));
@@ -0,0 +1,81 @@
1
+ /*! Bootstrap 4 integration for DataTables' Responsive
2
+ * ©2016 SpryMedia Ltd - datatables.net/license
3
+ */
4
+
5
+ (function( factory ){
6
+ if ( typeof define === 'function' && define.amd ) {
7
+ // AMD
8
+ define( ['jquery', 'datatables.net-bs4', 'datatables.net-responsive'], function ( $ ) {
9
+ return factory( $, window, document );
10
+ } );
11
+ }
12
+ else if ( typeof exports === 'object' ) {
13
+ // CommonJS
14
+ module.exports = function (root, $) {
15
+ if ( ! root ) {
16
+ root = window;
17
+ }
18
+
19
+ if ( ! $ || ! $.fn.dataTable ) {
20
+ $ = require('datatables.net-bs4')(root, $).$;
21
+ }
22
+
23
+ if ( ! $.fn.dataTable.Responsive ) {
24
+ require('datatables.net-responsive')(root, $);
25
+ }
26
+
27
+ return factory( $, root, root.document );
28
+ };
29
+ }
30
+ else {
31
+ // Browser
32
+ factory( jQuery, window, document );
33
+ }
34
+ }(function( $, window, document, undefined ) {
35
+ 'use strict';
36
+ var DataTable = $.fn.dataTable;
37
+
38
+
39
+ var _display = DataTable.Responsive.display;
40
+ var _original = _display.modal;
41
+ var _modal = $(
42
+ '<div class="modal fade dtr-bs-modal" role="dialog">'+
43
+ '<div class="modal-dialog" role="document">'+
44
+ '<div class="modal-content">'+
45
+ '<div class="modal-header">'+
46
+ '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
47
+ '</div>'+
48
+ '<div class="modal-body"/>'+
49
+ '</div>'+
50
+ '</div>'+
51
+ '</div>'
52
+ );
53
+
54
+ _display.modal = function ( options ) {
55
+ return function ( row, update, render ) {
56
+ if ( ! $.fn.modal ) {
57
+ _original( row, update, render );
58
+ }
59
+ else {
60
+ if ( ! update ) {
61
+ if ( options && options.header ) {
62
+ _modal.find('div.modal-header')
63
+ .empty()
64
+ .append( '<h4 class="modal-title">'+options.header( row )+'</h4>' );
65
+ }
66
+
67
+ _modal.find( 'div.modal-body' )
68
+ .empty()
69
+ .append( render() );
70
+
71
+ _modal
72
+ .appendTo( 'body' )
73
+ .modal();
74
+ }
75
+ }
76
+ };
77
+ };
78
+
79
+
80
+ return DataTable.Responsive;
81
+ }));
@@ -0,0 +1,62 @@
1
+ /*! Foundation integration for DataTables' Responsive
2
+ * ©2015 SpryMedia Ltd - datatables.net/license
3
+ */
4
+
5
+ (function( factory ){
6
+ if ( typeof define === 'function' && define.amd ) {
7
+ // AMD
8
+ define( ['jquery', 'datatables.net-zf', 'datatables.net-responsive'], function ( $ ) {
9
+ return factory( $, window, document );
10
+ } );
11
+ }
12
+ else if ( typeof exports === 'object' ) {
13
+ // CommonJS
14
+ module.exports = function (root, $) {
15
+ if ( ! root ) {
16
+ root = window;
17
+ }
18
+
19
+ if ( ! $ || ! $.fn.dataTable ) {
20
+ $ = require('datatables.net-zf')(root, $).$;
21
+ }
22
+
23
+ if ( ! $.fn.dataTable.Responsive ) {
24
+ require('datatables.net-responsive')(root, $);
25
+ }
26
+
27
+ return factory( $, root, root.document );
28
+ };
29
+ }
30
+ else {
31
+ // Browser
32
+ factory( jQuery, window, document );
33
+ }
34
+ }(function( $, window, document, undefined ) {
35
+ 'use strict';
36
+ var DataTable = $.fn.dataTable;
37
+
38
+
39
+ var _display = DataTable.Responsive.display;
40
+ var _original = _display.modal;
41
+
42
+ _display.modal = function ( options ) {
43
+ return function ( row, update, render ) {
44
+ if ( ! $.fn.foundation ) {
45
+ _original( row, update, render );
46
+ }
47
+ else {
48
+ if ( ! update ) {
49
+ $( '<div class="reveal-modal" data-reveal/>' )
50
+ .append( '<a class="close-reveal-modal" aria-label="Close">&#215;</a>' )
51
+ .append( options && options.header ? '<h4>'+options.header( row )+'</h4>' : null )
52
+ .append( render() )
53
+ .appendTo( 'body' )
54
+ .foundation( 'reveal', 'open' );
55
+ }
56
+ }
57
+ };
58
+ };
59
+
60
+
61
+ return DataTable.Responsive;
62
+ }));
@@ -0,0 +1,63 @@
1
+ /*! jQuery UI integration for DataTables' Responsive
2
+ * ©2015 SpryMedia Ltd - datatables.net/license
3
+ */
4
+
5
+ (function( factory ){
6
+ if ( typeof define === 'function' && define.amd ) {
7
+ // AMD
8
+ define( ['jquery', 'datatables.net-jqui', 'datatables.net-responsive'], function ( $ ) {
9
+ return factory( $, window, document );
10
+ } );
11
+ }
12
+ else if ( typeof exports === 'object' ) {
13
+ // CommonJS
14
+ module.exports = function (root, $) {
15
+ if ( ! root ) {
16
+ root = window;
17
+ }
18
+
19
+ if ( ! $ || ! $.fn.dataTable ) {
20
+ $ = require('datatables.net-jqui')(root, $).$;
21
+ }
22
+
23
+ if ( ! $.fn.dataTable.Responsive ) {
24
+ require('datatables.net-responsive')(root, $);
25
+ }
26
+
27
+ return factory( $, root, root.document );
28
+ };
29
+ }
30
+ else {
31
+ // Browser
32
+ factory( jQuery, window, document );
33
+ }
34
+ }(function( $, window, document, undefined ) {
35
+ 'use strict';
36
+ var DataTable = $.fn.dataTable;
37
+
38
+
39
+ var _display = DataTable.Responsive.display;
40
+ var _original = _display.modal;
41
+
42
+ _display.modal = function ( options ) {
43
+ return function ( row, update, render ) {
44
+ if ( ! $.fn.dialog ) {
45
+ _original( row, update, render );
46
+ }
47
+ else {
48
+ if ( ! update ) {
49
+ $( '<div/>' )
50
+ .append( render() )
51
+ .appendTo( 'body' )
52
+ .dialog( $.extend( true, {
53
+ title: options && options.header ? options.header( row ) : '',
54
+ width: 500
55
+ }, options.dialog ) );
56
+ }
57
+ }
58
+ };
59
+ };
60
+
61
+
62
+ return DataTable.Responsive;
63
+ }));
@@ -0,0 +1,77 @@
1
+ /*! Bootstrap integration for DataTables' Responsive
2
+ * ©2015-2016 SpryMedia Ltd - datatables.net/license
3
+ */
4
+
5
+ (function( factory ){
6
+ if ( typeof define === 'function' && define.amd ) {
7
+ // AMD
8
+ define( ['jquery', 'datatables.net-se', 'datatables.net-responsive'], function ( $ ) {
9
+ return factory( $, window, document );
10
+ } );
11
+ }
12
+ else if ( typeof exports === 'object' ) {
13
+ // CommonJS
14
+ module.exports = function (root, $) {
15
+ if ( ! root ) {
16
+ root = window;
17
+ }
18
+
19
+ if ( ! $ || ! $.fn.dataTable ) {
20
+ $ = require('datatables.net-se')(root, $).$;
21
+ }
22
+
23
+ if ( ! $.fn.dataTable.Responsive ) {
24
+ require('datatables.net-responsive')(root, $);
25
+ }
26
+
27
+ return factory( $, root, root.document );
28
+ };
29
+ }
30
+ else {
31
+ // Browser
32
+ factory( jQuery, window, document );
33
+ }
34
+ }(function( $, window, document, undefined ) {
35
+ 'use strict';
36
+ var DataTable = $.fn.dataTable;
37
+
38
+
39
+ var _display = DataTable.Responsive.display;
40
+ var _original = _display.modal;
41
+ var _modal = $(
42
+ '<div class="ui modal" role="dialog">'+
43
+ '<div class="header">'+
44
+ '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
45
+ '</div>'+
46
+ '<div class="content"/>'+
47
+ '</div>'
48
+ );
49
+
50
+ _display.modal = function ( options ) {
51
+ return function ( row, update, render ) {
52
+ if ( ! $.fn.modal ) {
53
+ _original( row, update, render );
54
+ }
55
+ else {
56
+ if ( ! update ) {
57
+ if ( options && options.header ) {
58
+ _modal.find('div.header')
59
+ .empty()
60
+ .append( '<h4 class="title">'+options.header( row )+'</h4>' );
61
+ }
62
+
63
+ _modal.find( 'div.content' )
64
+ .empty()
65
+ .append( render() );
66
+
67
+ _modal
68
+ .appendTo( 'body' )
69
+ .modal('show');
70
+ }
71
+ }
72
+ };
73
+ };
74
+
75
+
76
+ return DataTable.Responsive;
77
+ }));
@@ -0,0 +1,709 @@
1
+ /*! RowReorder 1.1.2
2
+ * 2015-2016 SpryMedia Ltd - datatables.net/license
3
+ */
4
+
5
+ /**
6
+ * @summary RowReorder
7
+ * @description Row reordering extension for DataTables
8
+ * @version 1.1.2
9
+ * @file dataTables.rowReorder.js
10
+ * @author SpryMedia Ltd (www.sprymedia.co.uk)
11
+ * @contact www.sprymedia.co.uk/contact
12
+ * @copyright Copyright 2015-2016 SpryMedia Ltd.
13
+ *
14
+ * This source file is free software, available under the following license:
15
+ * MIT license - http://datatables.net/license/mit
16
+ *
17
+ * This source file is distributed in the hope that it will be useful, but
18
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
20
+ *
21
+ * For details please refer to: http://www.datatables.net
22
+ */
23
+
24
+ (function( factory ){
25
+ if ( typeof define === 'function' && define.amd ) {
26
+ // AMD
27
+ define( ['jquery', 'datatables.net'], function ( $ ) {
28
+ return factory( $, window, document );
29
+ } );
30
+ }
31
+ else if ( typeof exports === 'object' ) {
32
+ // CommonJS
33
+ module.exports = function (root, $) {
34
+ if ( ! root ) {
35
+ root = window;
36
+ }
37
+
38
+ if ( ! $ || ! $.fn.dataTable ) {
39
+ $ = require('datatables.net')(root, $).$;
40
+ }
41
+
42
+ return factory( $, root, root.document );
43
+ };
44
+ }
45
+ else {
46
+ // Browser
47
+ factory( jQuery, window, document );
48
+ }
49
+ }(function( $, window, document, undefined ) {
50
+ 'use strict';
51
+ var DataTable = $.fn.dataTable;
52
+
53
+
54
+ /**
55
+ * RowReorder provides the ability in DataTables to click and drag rows to
56
+ * reorder them. When a row is dropped the data for the rows effected will be
57
+ * updated to reflect the change. Normally this data point should also be the
58
+ * column being sorted upon in the DataTable but this does not need to be the
59
+ * case. RowReorder implements a "data swap" method - so the rows being
60
+ * reordered take the value of the data point from the row that used to occupy
61
+ * the row's new position.
62
+ *
63
+ * Initialisation is done by either:
64
+ *
65
+ * * `rowReorder` parameter in the DataTable initialisation object
66
+ * * `new $.fn.dataTable.RowReorder( table, opts )` after DataTables
67
+ * initialisation.
68
+ *
69
+ * @class
70
+ * @param {object} settings DataTables settings object for the host table
71
+ * @param {object} [opts] Configuration options
72
+ * @requires jQuery 1.7+
73
+ * @requires DataTables 1.10.7+
74
+ */
75
+ var RowReorder = function ( dt, opts ) {
76
+ // Sanity check that we are using DataTables 1.10 or newer
77
+ if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
78
+ throw 'DataTables RowReorder requires DataTables 1.10.8 or newer';
79
+ }
80
+
81
+ // User and defaults configuration object
82
+ this.c = $.extend( true, {},
83
+ DataTable.defaults.rowReorder,
84
+ RowReorder.defaults,
85
+ opts
86
+ );
87
+
88
+ // Internal settings
89
+ this.s = {
90
+ /** @type {integer} Scroll body top cache */
91
+ bodyTop: null,
92
+
93
+ /** @type {DataTable.Api} DataTables' API instance */
94
+ dt: new DataTable.Api( dt ),
95
+
96
+ /** @type {function} Data fetch function */
97
+ getDataFn: DataTable.ext.oApi._fnGetObjectDataFn( this.c.dataSrc ),
98
+
99
+ /** @type {array} Pixel positions for row insertion calculation */
100
+ middles: null,
101
+
102
+ /** @type {Object} Cached dimension information for use in the mouse move event handler */
103
+ scroll: {},
104
+
105
+ /** @type {integer} Interval object used for smooth scrolling */
106
+ scrollInterval: null,
107
+
108
+ /** @type {function} Data set function */
109
+ setDataFn: DataTable.ext.oApi._fnSetObjectDataFn( this.c.dataSrc ),
110
+
111
+ /** @type {Object} Mouse down information */
112
+ start: {
113
+ top: 0,
114
+ left: 0,
115
+ offsetTop: 0,
116
+ offsetLeft: 0,
117
+ nodes: []
118
+ },
119
+
120
+ /** @type {integer} Window height cached value */
121
+ windowHeight: 0
122
+ };
123
+
124
+ // DOM items
125
+ this.dom = {
126
+ /** @type {jQuery} Cloned row being moved around */
127
+ clone: null,
128
+
129
+ /** @type {jQuery} DataTables scrolling container */
130
+ dtScroll: $('div.dataTables_scrollBody', this.s.dt.table().container())
131
+ };
132
+
133
+ // Check if row reorder has already been initialised on this table
134
+ var settings = this.s.dt.settings()[0];
135
+ var exisiting = settings.rowreorder;
136
+ if ( exisiting ) {
137
+ return exisiting;
138
+ }
139
+
140
+ settings.rowreorder = this;
141
+ this._constructor();
142
+ };
143
+
144
+
145
+ $.extend( RowReorder.prototype, {
146
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
147
+ * Constructor
148
+ */
149
+
150
+ /**
151
+ * Initialise the RowReorder instance
152
+ *
153
+ * @private
154
+ */
155
+ _constructor: function ()
156
+ {
157
+ var that = this;
158
+ var dt = this.s.dt;
159
+ var table = $( dt.table().node() );
160
+
161
+ // Need to be able to calculate the row positions relative to the table
162
+ if ( table.css('position') === 'static' ) {
163
+ table.css( 'position', 'relative' );
164
+ }
165
+
166
+ // listen for mouse down on the target column - we have to implement
167
+ // this rather than using HTML5 drag and drop as drag and drop doesn't
168
+ // appear to work on table rows at this time. Also mobile browsers are
169
+ // not supported.
170
+ // Use `table().container()` rather than just the table node for IE8 -
171
+ // otherwise it only works once...
172
+ $(dt.table().container()).on( 'mousedown.rowReorder touchstart.rowReorder', this.c.selector, function (e) {
173
+ var tr = $(this).closest('tr');
174
+
175
+ // Double check that it is a DataTable row
176
+ if ( dt.row( tr ).any() ) {
177
+ that._mouseDown( e, tr );
178
+ return false;
179
+ }
180
+ } );
181
+
182
+ dt.on( 'destroy.rowReorder', function () {
183
+ $(dt.table().container()).off( '.rowReorder' );
184
+ dt.off( '.rowReorder' );
185
+ } );
186
+ },
187
+
188
+
189
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
190
+ * Private methods
191
+ */
192
+
193
+ /**
194
+ * Cache the measurements that RowReorder needs in the mouse move handler
195
+ * to attempt to speed things up, rather than reading from the DOM.
196
+ *
197
+ * @private
198
+ */
199
+ _cachePositions: function ()
200
+ {
201
+ var dt = this.s.dt;
202
+
203
+ // Frustratingly, if we add `position:relative` to the tbody, the
204
+ // position is still relatively to the parent. So we need to adjust
205
+ // for that
206
+ var headerHeight = $( dt.table().node() ).find('thead').outerHeight();
207
+
208
+ // Need to pass the nodes through jQuery to get them in document order,
209
+ // not what DataTables thinks it is, since we have been altering the
210
+ // order
211
+ var nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
212
+ var tops = $.map( nodes, function ( node, i ) {
213
+ return $(node).position().top - headerHeight;
214
+ } );
215
+
216
+ var middles = $.map( tops, function ( top, i ) {
217
+ return tops.length < i-1 ?
218
+ (top + tops[i+1]) / 2 :
219
+ (top + top + $( dt.row( ':last-child' ).node() ).outerHeight() ) / 2;
220
+ } );
221
+
222
+ this.s.middles = middles;
223
+ this.s.bodyTop = $( dt.table().body() ).offset().top;
224
+ this.s.windowHeight = $(window).height();
225
+ },
226
+
227
+
228
+ /**
229
+ * Clone a row so it can be floated around the screen
230
+ *
231
+ * @param {jQuery} target Node to be cloned
232
+ * @private
233
+ */
234
+ _clone: function ( target )
235
+ {
236
+ var dt = this.s.dt;
237
+ var clone = $( dt.table().node().cloneNode(false) )
238
+ .addClass( 'dt-rowReorder-float' )
239
+ .append('<tbody/>')
240
+ .append( target.clone( false ) );
241
+
242
+ // Match the table and column widths - read all sizes before setting
243
+ // to reduce reflows
244
+ var tableWidth = target.outerWidth();
245
+ var tableHeight = target.outerHeight();
246
+ var sizes = target.children().map( function () {
247
+ return $(this).width();
248
+ } );
249
+
250
+ clone
251
+ .width( tableWidth )
252
+ .height( tableHeight )
253
+ .find('tr').children().each( function (i) {
254
+ this.style.width = sizes[i]+'px';
255
+ } );
256
+
257
+ // Insert into the document to have it floating around
258
+ clone.appendTo( 'body' );
259
+
260
+ this.dom.clone = clone;
261
+ },
262
+
263
+
264
+ /**
265
+ * Update the cloned item's position in the document
266
+ *
267
+ * @param {object} e Event giving the mouse's position
268
+ * @private
269
+ */
270
+ _clonePosition: function ( e )
271
+ {
272
+ var start = this.s.start;
273
+ var topDiff = this._eventToPage( e, 'Y' ) - start.top;
274
+ var leftDiff = this._eventToPage( e, 'X' ) - start.left;
275
+ var snap = this.c.snapX;
276
+ var left;
277
+
278
+ if ( snap === true ) {
279
+ left = start.offsetLeft;
280
+ }
281
+ else if ( typeof snap === 'number' ) {
282
+ left = start.offsetLeft + snap;
283
+ }
284
+ else {
285
+ left = leftDiff + start.offsetLeft;
286
+ }
287
+
288
+ this.dom.clone.css( {
289
+ top: topDiff + start.offsetTop,
290
+ left: left
291
+ } );
292
+ },
293
+
294
+
295
+ /**
296
+ * Emit an event on the DataTable for listeners
297
+ *
298
+ * @param {string} name Event name
299
+ * @param {array} args Event arguments
300
+ * @private
301
+ */
302
+ _emitEvent: function ( name, args )
303
+ {
304
+ this.s.dt.iterator( 'table', function ( ctx, i ) {
305
+ $(ctx.nTable).triggerHandler( name+'.dt', args );
306
+ } );
307
+ },
308
+
309
+
310
+ /**
311
+ * Get pageX/Y position from an event, regardless of if it is a mouse or
312
+ * touch event.
313
+ *
314
+ * @param {object} e Event
315
+ * @param {string} pos X or Y (must be a capital)
316
+ * @private
317
+ */
318
+ _eventToPage: function ( e, pos )
319
+ {
320
+ if ( e.type.indexOf( 'touch' ) !== -1 ) {
321
+ return e.originalEvent.touches[0][ 'page'+pos ];
322
+ }
323
+
324
+ return e[ 'page'+pos ];
325
+ },
326
+
327
+
328
+ /**
329
+ * Mouse down event handler. Read initial positions and add event handlers
330
+ * for the move.
331
+ *
332
+ * @param {object} e Mouse event
333
+ * @param {jQuery} target TR element that is to be moved
334
+ * @private
335
+ */
336
+ _mouseDown: function ( e, target )
337
+ {
338
+ var that = this;
339
+ var dt = this.s.dt;
340
+ var start = this.s.start;
341
+
342
+ var offset = target.offset();
343
+ start.top = this._eventToPage( e, 'Y' );
344
+ start.left = this._eventToPage( e, 'X' );
345
+ start.offsetTop = offset.top;
346
+ start.offsetLeft = offset.left;
347
+ start.nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
348
+
349
+ this._cachePositions();
350
+ this._clone( target );
351
+ this._clonePosition( e );
352
+
353
+ this.dom.target = target;
354
+ target.addClass( 'dt-rowReorder-moving' );
355
+
356
+ $( document )
357
+ .on( 'mouseup.rowReorder touchend.rowReorder', function (e) {
358
+ that._mouseUp(e);
359
+ } )
360
+ .on( 'mousemove.rowReorder touchmove.rowReorder', function (e) {
361
+ that._mouseMove(e);
362
+ } );
363
+
364
+ // Check if window is x-scrolling - if not, disable it for the duration
365
+ // of the drag
366
+ if ( $(window).width() === $(document).width() ) {
367
+ $(document.body).addClass( 'dt-rowReorder-noOverflow' );
368
+ }
369
+
370
+ // Cache scrolling information so mouse move doesn't need to read.
371
+ // This assumes that the window and DT scroller will not change size
372
+ // during an row drag, which I think is a fair assumption
373
+ var scrollWrapper = this.dom.dtScroll;
374
+ this.s.scroll = {
375
+ windowHeight: $(window).height(),
376
+ windowWidth: $(window).width(),
377
+ dtTop: scrollWrapper.length ? scrollWrapper.offset().top : null,
378
+ dtLeft: scrollWrapper.length ? scrollWrapper.offset().left : null,
379
+ dtHeight: scrollWrapper.length ? scrollWrapper.outerHeight() : null,
380
+ dtWidth: scrollWrapper.length ? scrollWrapper.outerWidth() : null
381
+ };
382
+ },
383
+
384
+
385
+ /**
386
+ * Mouse move event handler - move the cloned row and shuffle the table's
387
+ * rows if required.
388
+ *
389
+ * @param {object} e Mouse event
390
+ * @private
391
+ */
392
+ _mouseMove: function ( e )
393
+ {
394
+ this._clonePosition( e );
395
+
396
+ // Transform the mouse position into a position in the table's body
397
+ var bodyY = this._eventToPage( e, 'Y' ) - this.s.bodyTop;
398
+ var middles = this.s.middles;
399
+ var insertPoint = null;
400
+ var dt = this.s.dt;
401
+ var body = dt.table().body();
402
+
403
+ // Determine where the row should be inserted based on the mouse
404
+ // position
405
+ for ( var i=0, ien=middles.length ; i<ien ; i++ ) {
406
+ if ( bodyY < middles[i] ) {
407
+ insertPoint = i;
408
+ break;
409
+ }
410
+ }
411
+
412
+ if ( insertPoint === null ) {
413
+ insertPoint = middles.length;
414
+ }
415
+
416
+ // Perform the DOM shuffle if it has changed from last time
417
+ if ( this.s.lastInsert === null || this.s.lastInsert !== insertPoint ) {
418
+ if ( insertPoint === 0 ) {
419
+ this.dom.target.prependTo( body );
420
+ }
421
+ else {
422
+ var nodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
423
+
424
+ if ( insertPoint > this.s.lastInsert ) {
425
+ this.dom.target.insertAfter( nodes[ insertPoint-1 ] );
426
+ }
427
+ else {
428
+ this.dom.target.insertBefore( nodes[ insertPoint ] );
429
+ }
430
+ }
431
+
432
+ this._cachePositions();
433
+
434
+ this.s.lastInsert = insertPoint;
435
+ }
436
+
437
+ this._shiftScroll( e );
438
+ },
439
+
440
+
441
+ /**
442
+ * Mouse up event handler - release the event handlers and perform the
443
+ * table updates
444
+ *
445
+ * @param {object} e Mouse event
446
+ * @private
447
+ */
448
+ _mouseUp: function ( e )
449
+ {
450
+ var dt = this.s.dt;
451
+ var i, ien;
452
+ var dataSrc = this.c.dataSrc;
453
+
454
+ this.dom.clone.remove();
455
+ this.dom.clone = null;
456
+
457
+ this.dom.target.removeClass( 'dt-rowReorder-moving' );
458
+ //this.dom.target = null;
459
+
460
+ $(document).off( '.rowReorder' );
461
+ $(document.body).removeClass( 'dt-rowReorder-noOverflow' );
462
+
463
+ clearInterval( this.s.scrollInterval );
464
+ this.s.scrollInterval = null;
465
+
466
+ // Calculate the difference
467
+ var startNodes = this.s.start.nodes;
468
+ var endNodes = $.unique( dt.rows( { page: 'current' } ).nodes().toArray() );
469
+ var idDiff = {};
470
+ var fullDiff = [];
471
+ var diffNodes = [];
472
+ var getDataFn = this.s.getDataFn;
473
+ var setDataFn = this.s.setDataFn;
474
+
475
+ for ( i=0, ien=startNodes.length ; i<ien ; i++ ) {
476
+ if ( startNodes[i] !== endNodes[i] ) {
477
+ var id = dt.row( endNodes[i] ).id();
478
+ var endRowData = dt.row( endNodes[i] ).data();
479
+ var startRowData = dt.row( startNodes[i] ).data();
480
+
481
+ if ( id ) {
482
+ idDiff[ id ] = getDataFn( startRowData );
483
+ }
484
+
485
+ fullDiff.push( {
486
+ node: endNodes[i],
487
+ oldData: getDataFn( endRowData ),
488
+ newData: getDataFn( startRowData ),
489
+ newPosition: i,
490
+ oldPosition: $.inArray( endNodes[i], startNodes )
491
+ } );
492
+
493
+ diffNodes.push( endNodes[i] );
494
+ }
495
+ }
496
+
497
+ // Create event args
498
+ var eventArgs = [ fullDiff, {
499
+ dataSrc: dataSrc,
500
+ nodes: diffNodes,
501
+ values: idDiff,
502
+ triggerRow: dt.row( this.dom.target )
503
+ } ];
504
+
505
+ // Emit event
506
+ this._emitEvent( 'row-reorder', eventArgs );
507
+
508
+ // Editor interface
509
+ if ( this.c.editor ) {
510
+ this.c.editor
511
+ .edit( diffNodes, false, {
512
+ submit: 'changed'
513
+ } )
514
+ .multiSet( dataSrc, idDiff )
515
+ .submit();
516
+ }
517
+
518
+ // Do update if required
519
+ if ( this.c.update ) {
520
+ for ( i=0, ien=fullDiff.length ; i<ien ; i++ ) {
521
+ var row = dt.row( fullDiff[i].node );
522
+ var rowData = row.data();
523
+
524
+ setDataFn( rowData, fullDiff[i].newData );
525
+
526
+ // Invalidate the cell that has the same data source as the dataSrc
527
+ dt.columns().every( function () {
528
+ if ( this.dataSrc() === dataSrc ) {
529
+ dt.cell( fullDiff[i].node, this.index() ).invalidate( 'data' );
530
+ }
531
+ } );
532
+ }
533
+
534
+ // Trigger row reordered event
535
+ this._emitEvent( 'row-reordered', eventArgs );
536
+
537
+ dt.draw( false );
538
+ }
539
+ },
540
+
541
+
542
+ /**
543
+ * Move the window and DataTables scrolling during a drag to scroll new
544
+ * content into view.
545
+ *
546
+ * This matches the `_shiftScroll` method used in AutoFill, but only
547
+ * horizontal scrolling is considered here.
548
+ *
549
+ * @param {object} e Mouse move event object
550
+ * @private
551
+ */
552
+ _shiftScroll: function ( e )
553
+ {
554
+ var that = this;
555
+ var dt = this.s.dt;
556
+ var scroll = this.s.scroll;
557
+ var runInterval = false;
558
+ var scrollSpeed = 5;
559
+ var buffer = 65;
560
+ var
561
+ windowY = e.pageY - document.body.scrollTop,
562
+ windowVert,
563
+ dtVert;
564
+
565
+ // Window calculations - based on the mouse position in the window,
566
+ // regardless of scrolling
567
+ if ( windowY < buffer ) {
568
+ windowVert = scrollSpeed * -1;
569
+ }
570
+ else if ( windowY > scroll.windowHeight - buffer ) {
571
+ windowVert = scrollSpeed;
572
+ }
573
+
574
+ // DataTables scrolling calculations - based on the table's position in
575
+ // the document and the mouse position on the page
576
+ if ( scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer ) {
577
+ dtVert = scrollSpeed * -1;
578
+ }
579
+ else if ( scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer ) {
580
+ dtVert = scrollSpeed;
581
+ }
582
+
583
+ // This is where it gets interesting. We want to continue scrolling
584
+ // without requiring a mouse move, so we need an interval to be
585
+ // triggered. The interval should continue until it is no longer needed,
586
+ // but it must also use the latest scroll commands (for example consider
587
+ // that the mouse might move from scrolling up to scrolling left, all
588
+ // with the same interval running. We use the `scroll` object to "pass"
589
+ // this information to the interval. Can't use local variables as they
590
+ // wouldn't be the ones that are used by an already existing interval!
591
+ if ( windowVert || dtVert ) {
592
+ scroll.windowVert = windowVert;
593
+ scroll.dtVert = dtVert;
594
+ runInterval = true;
595
+ }
596
+ else if ( this.s.scrollInterval ) {
597
+ // Don't need to scroll - remove any existing timer
598
+ clearInterval( this.s.scrollInterval );
599
+ this.s.scrollInterval = null;
600
+ }
601
+
602
+ // If we need to run the interval to scroll and there is no existing
603
+ // interval (if there is an existing one, it will continue to run)
604
+ if ( ! this.s.scrollInterval && runInterval ) {
605
+ this.s.scrollInterval = setInterval( function () {
606
+ // Don't need to worry about setting scroll <0 or beyond the
607
+ // scroll bound as the browser will just reject that.
608
+ if ( scroll.windowVert ) {
609
+ document.body.scrollTop += scroll.windowVert;
610
+ }
611
+
612
+ // DataTables scrolling
613
+ if ( scroll.dtVert ) {
614
+ var scroller = that.dom.dtScroll[0];
615
+
616
+ if ( scroll.dtVert ) {
617
+ scroller.scrollTop += scroll.dtVert;
618
+ }
619
+ }
620
+ }, 20 );
621
+ }
622
+ }
623
+ } );
624
+
625
+
626
+
627
+ /**
628
+ * RowReorder default settings for initialisation
629
+ *
630
+ * @namespace
631
+ * @name RowReorder.defaults
632
+ * @static
633
+ */
634
+ RowReorder.defaults = {
635
+ /**
636
+ * Data point in the host row's data source object for where to get and set
637
+ * the data to reorder. This will normally also be the sorting column.
638
+ *
639
+ * @type {Number}
640
+ */
641
+ dataSrc: 0,
642
+
643
+ /**
644
+ * Editor instance that will be used to perform the update
645
+ *
646
+ * @type {DataTable.Editor}
647
+ */
648
+ editor: null,
649
+
650
+ /**
651
+ * Drag handle selector. This defines the element that when dragged will
652
+ * reorder a row.
653
+ *
654
+ * @type {String}
655
+ */
656
+ selector: 'td:first-child',
657
+
658
+ /**
659
+ * Optionally lock the dragged row's x-position. This can be `true` to
660
+ * fix the position match the host table's, `false` to allow free movement
661
+ * of the row, or a number to define an offset from the host table.
662
+ *
663
+ * @type {Boolean|number}
664
+ */
665
+ snapX: false,
666
+
667
+ /**
668
+ * Update the table's data on drop
669
+ *
670
+ * @type {Boolean}
671
+ */
672
+ update: true
673
+ };
674
+
675
+
676
+ /**
677
+ * Version information
678
+ *
679
+ * @name RowReorder.version
680
+ * @static
681
+ */
682
+ RowReorder.version = '1.1.2';
683
+
684
+
685
+ $.fn.dataTable.RowReorder = RowReorder;
686
+ $.fn.DataTable.RowReorder = RowReorder;
687
+
688
+ // Attach a listener to the document which listens for DataTables initialisation
689
+ // events so we can automatically initialise
690
+ $(document).on( 'init.dt.dtr', function (e, settings, json) {
691
+ if ( e.namespace !== 'dt' ) {
692
+ return;
693
+ }
694
+
695
+ var init = settings.oInit.rowReorder;
696
+ var defaults = DataTable.defaults.rowReorder;
697
+
698
+ if ( init || defaults ) {
699
+ var opts = $.extend( {}, init, defaults );
700
+
701
+ if ( init !== false ) {
702
+ new RowReorder( settings, opts );
703
+ }
704
+ }
705
+ } );
706
+
707
+
708
+ return RowReorder;
709
+ }));