Explorar el Código

update plugin files

REJack hace 3 años
padre
commit
961c26595d
Se han modificado 100 ficheros con 9008 adiciones y 7335 borrados
  1. 810 883
      plugins/bootstrap/js/bootstrap.bundle.js
  2. 1 1
      plugins/bootstrap/js/bootstrap.bundle.js.map
  3. 2 2
      plugins/bootstrap/js/bootstrap.bundle.min.js
  4. 1 1
      plugins/bootstrap/js/bootstrap.bundle.min.js.map
  5. 787 862
      plugins/bootstrap/js/bootstrap.js
  6. 1 1
      plugins/bootstrap/js/bootstrap.js.map
  7. 2 2
      plugins/bootstrap/js/bootstrap.min.js
  8. 1 1
      plugins/bootstrap/js/bootstrap.min.js.map
  9. 54 43
      plugins/codemirror/addon/fold/brace-fold.js
  10. 2 2
      plugins/codemirror/addon/runmode/runmode-standalone.js
  11. 2 2
      plugins/codemirror/addon/runmode/runmode.node.js
  12. 1 0
      plugins/codemirror/codemirror.css
  13. 5 3
      plugins/codemirror/codemirror.js
  14. 16 0
      plugins/codemirror/keymap/vim.js
  15. 1 0
      plugins/codemirror/mode/commonlisp/commonlisp.js
  16. 3 3
      plugins/codemirror/mode/css/css.js
  17. 1 1
      plugins/codemirror/mode/factor/factor.js
  18. 1 1
      plugins/codemirror/mode/fortran/fortran.js
  19. 1 0
      plugins/codemirror/mode/javascript/javascript.js
  20. 1 1
      plugins/codemirror/mode/mllike/mllike.js
  21. 20 20
      plugins/codemirror/mode/nsis/nsis.js
  22. 2 3
      plugins/codemirror/mode/perl/perl.js
  23. 29 10
      plugins/codemirror/mode/scheme/scheme.js
  24. 2 2
      plugins/codemirror/mode/sql/sql.js
  25. 1 1
      plugins/codemirror/mode/stylus/stylus.js
  26. 25 9
      plugins/datatables-bs4/css/dataTables.bootstrap4.css
  27. 1 1
      plugins/datatables-bs4/css/dataTables.bootstrap4.min.css
  28. 253 22
      plugins/datatables-buttons/css/buttons.bootstrap4.css
  29. 1 1
      plugins/datatables-buttons/css/buttons.bootstrap4.min.css
  30. 20 1
      plugins/datatables-buttons/js/buttons.bootstrap4.js
  31. 3 2
      plugins/datatables-buttons/js/buttons.bootstrap4.min.js
  32. 24 1
      plugins/datatables-buttons/js/buttons.colVis.js
  33. 10 6
      plugins/datatables-buttons/js/buttons.colVis.min.js
  34. 76 93
      plugins/datatables-buttons/js/buttons.flash.js
  35. 36 30
      plugins/datatables-buttons/js/buttons.flash.min.js
  36. 2 2
      plugins/datatables-buttons/js/buttons.html5.js
  37. 33 26
      plugins/datatables-buttons/js/buttons.html5.min.js
  38. 9 5
      plugins/datatables-buttons/js/buttons.print.min.js
  39. 567 216
      plugins/datatables-buttons/js/dataTables.buttons.js
  40. 52 41
      plugins/datatables-buttons/js/dataTables.buttons.min.js
  41. 3 4
      plugins/datatables-fixedheader/js/dataTables.fixedHeader.js
  42. 5 5
      plugins/datatables-fixedheader/js/dataTables.fixedHeader.min.js
  43. 7 0
      plugins/datatables-searchbuilder/css/searchBuilder.bootstrap4.css
  44. 1 1
      plugins/datatables-searchbuilder/css/searchBuilder.bootstrap4.min.css
  45. 181 91
      plugins/datatables-searchbuilder/js/dataTables.searchBuilder.js
  46. 113 109
      plugins/datatables-searchbuilder/js/dataTables.searchBuilder.min.js
  47. 48 55
      plugins/datatables-searchbuilder/js/searchBuilder.bootstrap4.js
  48. 0 1
      plugins/datatables-select/css/select.bootstrap4.css
  49. 1 1
      plugins/datatables-select/css/select.bootstrap4.min.css
  50. 57 6
      plugins/datatables-select/js/dataTables.select.js
  51. 37 25
      plugins/datatables-select/js/dataTables.select.min.js
  52. 1 1
      plugins/datatables-select/js/select.bootstrap4.min.js
  53. 38 25
      plugins/datatables/jquery.dataTables.js
  54. 144 144
      plugins/datatables/jquery.dataTables.min.js
  55. 18 18
      plugins/flag-icon-css/flags/1x1/ac.svg
  56. 16 16
      plugins/flag-icon-css/flags/1x1/as.svg
  57. 2 2
      plugins/flag-icon-css/flags/1x1/bh.svg
  58. 14 14
      plugins/flag-icon-css/flags/1x1/gd.svg
  59. 2 2
      plugins/flag-icon-css/flags/1x1/gl.svg
  60. 11 11
      plugins/flag-icon-css/flags/1x1/gs.svg
  61. 7 7
      plugins/flag-icon-css/flags/1x1/kn.svg
  62. 3 3
      plugins/flag-icon-css/flags/1x1/mr.svg
  63. 8 8
      plugins/flag-icon-css/flags/1x1/pn.svg
  64. 18 18
      plugins/flag-icon-css/flags/1x1/sh.svg
  65. 18 18
      plugins/flag-icon-css/flags/1x1/ta.svg
  66. 49 71
      plugins/flag-icon-css/flags/1x1/tc.svg
  67. 2 2
      plugins/flag-icon-css/flags/1x1/vg.svg
  68. 21 21
      plugins/flag-icon-css/flags/4x3/ac.svg
  69. 2 2
      plugins/flag-icon-css/flags/4x3/dz.svg
  70. 2 2
      plugins/flag-icon-css/flags/4x3/gl.svg
  71. 15 15
      plugins/flag-icon-css/flags/4x3/gs.svg
  72. 3 3
      plugins/flag-icon-css/flags/4x3/ir.svg
  73. 2 2
      plugins/flag-icon-css/flags/4x3/la.svg
  74. 13 13
      plugins/flag-icon-css/flags/4x3/pn.svg
  75. 2 2
      plugins/flag-icon-css/flags/4x3/pw.svg
  76. 21 21
      plugins/flag-icon-css/flags/4x3/sh.svg
  77. 21 21
      plugins/flag-icon-css/flags/4x3/ta.svg
  78. 50 65
      plugins/flag-icon-css/flags/4x3/tc.svg
  79. 2 2
      plugins/flag-icon-css/flags/4x3/vg.svg
  80. 5 0
      plugins/inputmask/inputmask.es6.js
  81. 1460 1283
      plugins/inputmask/inputmask.js
  82. 2 2
      plugins/inputmask/inputmask.min.js
  83. 1296 1112
      plugins/inputmask/jquery.inputmask.js
  84. 2 2
      plugins/inputmask/jquery.inputmask.min.js
  85. BIN
      plugins/jquery-ui/images/ui-icons_444444_256x240.png
  86. BIN
      plugins/jquery-ui/images/ui-icons_555555_256x240.png
  87. BIN
      plugins/jquery-ui/images/ui-icons_777620_256x240.png
  88. BIN
      plugins/jquery-ui/images/ui-icons_777777_256x240.png
  89. BIN
      plugins/jquery-ui/images/ui-icons_cc0000_256x240.png
  90. BIN
      plugins/jquery-ui/images/ui-icons_ffffff_256x240.png
  91. 12 9
      plugins/jquery-ui/jquery-ui.css
  92. 1083 743
      plugins/jquery-ui/jquery-ui.js
  93. 2 2
      plugins/jquery-ui/jquery-ui.min.css
  94. 3 10
      plugins/jquery-ui/jquery-ui.min.js
  95. 4 4
      plugins/jquery-ui/jquery-ui.structure.css
  96. 2 2
      plugins/jquery-ui/jquery-ui.structure.min.css
  97. 9 6
      plugins/jquery-ui/jquery-ui.theme.css
  98. 2 2
      plugins/jquery-ui/jquery-ui.theme.min.css
  99. 1309 1030
      plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.css
  100. 0 0
      plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.min.css

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 810 - 883
plugins/bootstrap/js/bootstrap.bundle.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/bootstrap/js/bootstrap.bundle.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/bootstrap/js/bootstrap.bundle.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/bootstrap/js/bootstrap.bundle.min.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 787 - 862
plugins/bootstrap/js/bootstrap.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/bootstrap/js/bootstrap.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/bootstrap/js/bootstrap.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/bootstrap/js/bootstrap.min.js.map


+ 54 - 43
plugins/codemirror/addon/fold/brace-fold.js

@@ -11,56 +11,67 @@
 })(function(CodeMirror) {
 "use strict";
 
-CodeMirror.registerHelper("fold", "brace", function(cm, start) {
-  var line = start.line, lineText = cm.getLine(line);
-  var tokenType;
+function bracketFolding(pairs) {
+  return function(cm, start) {
+    var line = start.line, lineText = cm.getLine(line);
 
-  function findOpening(openCh) {
-    for (var at = start.ch, pass = 0;;) {
-      var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);
-      if (found == -1) {
-        if (pass == 1) break;
-        pass = 1;
-        at = lineText.length;
-        continue;
+    function findOpening(pair) {
+      var tokenType;
+      for (var at = start.ch, pass = 0;;) {
+        var found = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);
+        if (found == -1) {
+          if (pass == 1) break;
+          pass = 1;
+          at = lineText.length;
+          continue;
+        }
+        if (pass == 1 && found < start.ch) break;
+        tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));
+        if (!/^(comment|string)/.test(tokenType)) return {ch: found + 1, tokenType: tokenType, pair: pair};
+        at = found - 1;
       }
-      if (pass == 1 && found < start.ch) break;
-      tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));
-      if (!/^(comment|string)/.test(tokenType)) return found + 1;
-      at = found - 1;
     }
-  }
-
-  var startBrace = findOpening("{"), startBracket = findOpening("[")
-  var startToken, endToken, startCh
-  if (startBrace != null && (startBracket == null || startBracket > startBrace)) {
-    startCh = startBrace; startToken = "{"; endToken = "}"
-  } else if (startBracket != null) {
-    startCh = startBracket; startToken = "["; endToken = "]"
-  } else {
-    return
-  }
 
-  var count = 1, lastLine = cm.lastLine(), end, endCh;
-  outer: for (var i = line; i <= lastLine; ++i) {
-    var text = cm.getLine(i), pos = i == line ? startCh : 0;
-    for (;;) {
-      var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);
-      if (nextOpen < 0) nextOpen = text.length;
-      if (nextClose < 0) nextClose = text.length;
-      pos = Math.min(nextOpen, nextClose);
-      if (pos == text.length) break;
-      if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {
-        if (pos == nextOpen) ++count;
-        else if (!--count) { end = i; endCh = pos; break outer; }
+    function findRange(found) {
+      var count = 1, lastLine = cm.lastLine(), end, startCh = found.ch, endCh
+      outer: for (var i = line; i <= lastLine; ++i) {
+        var text = cm.getLine(i), pos = i == line ? startCh : 0;
+        for (;;) {
+          var nextOpen = text.indexOf(found.pair[0], pos), nextClose = text.indexOf(found.pair[1], pos);
+          if (nextOpen < 0) nextOpen = text.length;
+          if (nextClose < 0) nextClose = text.length;
+          pos = Math.min(nextOpen, nextClose);
+          if (pos == text.length) break;
+          if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == found.tokenType) {
+            if (pos == nextOpen) ++count;
+            else if (!--count) { end = i; endCh = pos; break outer; }
+          }
+          ++pos;
+        }
       }
-      ++pos;
+
+      if (end == null || line == end) return null
+      return {from: CodeMirror.Pos(line, startCh),
+              to: CodeMirror.Pos(end, endCh)};
+    }
+
+    var found = []
+    for (var i = 0; i < pairs.length; i++) {
+      var open = findOpening(pairs[i])
+      if (open) found.push(open)
+    }
+    found.sort(function(a, b) { return a.ch - b.ch })
+    for (var i = 0; i < found.length; i++) {
+      var range = findRange(found[i])
+      if (range) return range
     }
+    return null
   }
-  if (end == null || line == end) return;
-  return {from: CodeMirror.Pos(line, startCh),
-          to: CodeMirror.Pos(end, endCh)};
-});
+}
+
+CodeMirror.registerHelper("fold", "brace", bracketFolding([["{", "}"], ["[", "]"]]));
+
+CodeMirror.registerHelper("fold", "brace-paren", bracketFolding([["{", "}"], ["[", "]"], ["(", ")"]]));
 
 CodeMirror.registerHelper("fold", "import", function(cm, start) {
   function hasImport(line) {

+ 2 - 2
plugins/codemirror/addon/runmode/runmode-standalone.js

@@ -220,7 +220,7 @@
     return mode.startState ? mode.startState(a1, a2) : true
   }
 
-  var modeMethods = ({
+  var modeMethods = {
     __proto__: null,
     modes: modes,
     mimeModes: mimeModes,
@@ -233,7 +233,7 @@
     copyState: copyState,
     innerMode: innerMode,
     startState: startState
-  });
+  };
 
   // declare global: globalThis, CodeMirror
 

+ 2 - 2
plugins/codemirror/addon/runmode/runmode.node.js

@@ -219,7 +219,7 @@ function startState(mode, a1, a2) {
   return mode.startState ? mode.startState(a1, a2) : true
 }
 
-var modeMethods = ({
+var modeMethods = {
   __proto__: null,
   modes: modes,
   mimeModes: mimeModes,
@@ -232,7 +232,7 @@ var modeMethods = ({
   copyState: copyState,
   innerMode: innerMode,
   startState: startState
-});
+};
 
 // Copy StringStream and mode methods into exports (CodeMirror) object.
 exports.StringStream = StringStream;

+ 1 - 0
plugins/codemirror/codemirror.css

@@ -164,6 +164,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}
   height: 100%;
   outline: none; /* Prevent dragging from highlighting the element */
   position: relative;
+  z-index: 0;
 }
 .CodeMirror-sizer {
   position: relative;

+ 5 - 3
plugins/codemirror/codemirror.js

@@ -2585,9 +2585,11 @@
   }
 
   function widgetTopHeight(lineObj) {
+    var ref = visualLine(lineObj);
+    var widgets = ref.widgets;
     var height = 0;
-    if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)
-      { height += widgetHeight(lineObj.widgets[i]); } } }
+    if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)
+      { height += widgetHeight(widgets[i]); } } }
     return height
   }
 
@@ -9840,7 +9842,7 @@
 
   addLegacyProps(CodeMirror);
 
-  CodeMirror.version = "5.64.0";
+  CodeMirror.version = "5.65.1";
 
   return CodeMirror;
 

+ 16 - 0
plugins/codemirror/keymap/vim.js

@@ -72,6 +72,8 @@
     { keys: '<Right>', type: 'keyToKey', toKeys: 'l' },
     { keys: '<Up>', type: 'keyToKey', toKeys: 'k' },
     { keys: '<Down>', type: 'keyToKey', toKeys: 'j' },
+    { keys: 'g<Up>', type: 'keyToKey', toKeys: 'gk' },
+    { keys: 'g<Down>', type: 'keyToKey', toKeys: 'gj' },
     { keys: '<Space>', type: 'keyToKey', toKeys: 'l' },
     { keys: '<BS>', type: 'keyToKey', toKeys: 'h', context: 'normal'},
     { keys: '<Del>', type: 'keyToKey', toKeys: 'x', context: 'normal'},
@@ -94,6 +96,7 @@
     { keys: '<PageUp>', type: 'keyToKey', toKeys: '<C-b>' },
     { keys: '<PageDown>', type: 'keyToKey', toKeys: '<C-f>' },
     { keys: '<CR>', type: 'keyToKey', toKeys: 'j^', context: 'normal' },
+    { keys: '<Ins>', type: 'keyToKey', toKeys: 'i', context: 'normal'},
     { keys: '<Ins>', type: 'action', action: 'toggleOverwrite', context: 'insert' },
     // Motions
     { keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true }},
@@ -123,6 +126,9 @@
     { keys: '<C-u>', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: false, explicitRepeat: true }},
     { keys: 'gg', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true }},
     { keys: 'G', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true }},
+    {keys: "g$", type: "motion", motion: "moveToEndOfDisplayLine"},
+    {keys: "g^", type: "motion", motion: "moveToStartOfDisplayLine"},
+    {keys: "g0", type: "motion", motion: "moveToStartOfDisplayLine"},
     { keys: '0', type: 'motion', motion: 'moveToStartOfLine' },
     { keys: '^', type: 'motion', motion: 'moveToFirstNonWhiteSpaceCharacter' },
     { keys: '+', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true }},
@@ -2086,6 +2092,16 @@
         return new Pos(lineNum,
                    findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum)));
       },
+      moveToStartOfDisplayLine: function(cm) {
+        cm.execCommand("goLineLeft");
+        return cm.getCursor();
+      },
+      moveToEndOfDisplayLine: function(cm) {
+        cm.execCommand("goLineRight");
+        var head = cm.getCursor();
+        if (head.sticky == "before") head.ch--;
+        return head;
+      },
       textObjectManipulation: function(cm, head, motionArgs, vim) {
         // TODO: lots of possible exceptions that can be thrown here. Try da(
         //     outside of a () block.

+ 1 - 0
plugins/codemirror/mode/commonlisp/commonlisp.js

@@ -114,6 +114,7 @@ CodeMirror.defineMode("commonlisp", function (config) {
 
     closeBrackets: {pairs: "()[]{}\"\""},
     lineComment: ";;",
+    fold: "brace-paren",
     blockCommentStart: "#|",
     blockCommentEnd: "|#"
   };

+ 3 - 3
plugins/codemirror/mode/css/css.js

@@ -637,7 +637,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
     "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch",
     "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
     "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse",
-    "compact", "condensed", "contain", "content", "contents",
+    "compact", "condensed", "conic-gradient", "contain", "content", "contents",
     "content-box", "context-menu", "continuous", "contrast", "copy", "counter", "counters", "cover", "crop",
     "cross", "crosshair", "cubic-bezier", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
     "decimal-leading-zero", "default", "default-button", "dense", "destination-atop",
@@ -687,8 +687,8 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
     "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d",
     "progress", "push-button", "radial-gradient", "radio", "read-only",
     "read-write", "read-write-plaintext-only", "rectangle", "region",
-    "relative", "repeat", "repeating-linear-gradient",
-    "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse",
+    "relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient",
+    "repeating-conic-gradient", "repeat-x", "repeat-y", "reset", "reverse",
     "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY",
     "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running",
     "s-resize", "sans-serif", "saturate", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",

+ 1 - 1
plugins/codemirror/mode/factor/factor.js

@@ -77,7 +77,7 @@
     // specific to simple modes.
     meta: {
       dontIndentStates: ["start", "vocabulary", "string", "string3", "stack"],
-      lineComment: [ "!", "#!" ]
+      lineComment: "!"
     }
   });
 

+ 1 - 1
plugins/codemirror/mode/fortran/fortran.js

@@ -112,7 +112,7 @@ CodeMirror.defineMode("fortran", function() {
                      "c_short", "c_signed_char", "c_size_t", "character",
                      "complex", "double", "integer", "logical", "real"]);
   var isOperatorChar = /[+\-*&=<>\/\:]/;
-  var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i");
+  var litOperator = /^\.(and|or|eq|lt|le|gt|ge|ne|not|eqv|neqv)\./i;
 
   function tokenBase(stream, state) {
 

+ 1 - 0
plugins/codemirror/mode/javascript/javascript.js

@@ -330,6 +330,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
     cx.state.context = new Context(cx.state.context, cx.state.localVars, true)
     cx.state.localVars = null
   }
+  pushcontext.lex = pushblockcontext.lex = true
   function popcontext() {
     cx.state.localVars = cx.state.context.vars
     cx.state.context = cx.state.context.prev

+ 1 - 1
plugins/codemirror/mode/mllike/mllike.js

@@ -60,7 +60,7 @@ CodeMirror.defineMode('mllike', function(_config, parserConfig) {
       }
     }
     if (ch === '(') {
-      if (stream.eat('*')) {
+      if (stream.match(/^\*(?!\))/)) {
         state.commentLevel++;
         state.tokenize = tokenComment;
         return state.tokenize(stream, state);

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 20 - 20
plugins/codemirror/mode/nsis/nsis.js


+ 2 - 3
plugins/codemirror/mode/perl/perl.js

@@ -513,9 +513,8 @@ CodeMirror.defineMode("perl",function(){
                         return null;
                 if(state.chain)
                         return tokenChain(stream,state,state.chain,state.style,state.tail);
-                if(stream.match(/^\-?[\d\.]/,false))
-                        if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/))
-                                return 'number';
+                if(stream.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))
+                        return 'number';
                 if(stream.match(/^<<(?=[_a-zA-Z])/)){                  // NOTE: <<SOMETHING\n...\nSOMETHING\n
                         stream.eatWhile(/\w/);
                         return tokenSOMETHING(stream,state,stream.current().substr(2));}

+ 29 - 10
plugins/codemirror/mode/scheme/scheme.js

@@ -3,6 +3,7 @@
 
 /**
  * Author: Koh Zi Han, based on implementation by Koh Zi Chun
+ * Improved by: Jakub T. Jankiewicz
  */
 
 (function(mod) {
@@ -17,7 +18,7 @@
 
 CodeMirror.defineMode("scheme", function () {
     var BUILTIN = "builtin", COMMENT = "comment", STRING = "string",
-        ATOM = "atom", NUMBER = "number", BRACKET = "bracket";
+        SYMBOL = "symbol", ATOM = "atom", NUMBER = "number", BRACKET = "bracket";
     var INDENT_WORD_SKIP = 2;
 
     function makeKeywords(str) {
@@ -67,6 +68,18 @@ CodeMirror.defineMode("scheme", function () {
         return stream.match(hexMatcher);
     }
 
+    function processEscapedSequence(stream, options) {
+        var next, escaped = false;
+        while ((next = stream.next()) != null) {
+            if (next == options.token && !escaped) {
+
+                options.state.mode = false;
+                break;
+            }
+            escaped = !escaped && next == "\\";
+        }
+    }
+
     return {
         startState: function () {
             return {
@@ -92,17 +105,19 @@ CodeMirror.defineMode("scheme", function () {
 
             switch(state.mode){
                 case "string": // multi-line string parsing mode
-                    var next, escaped = false;
-                    while ((next = stream.next()) != null) {
-                        if (next == "\"" && !escaped) {
-
-                            state.mode = false;
-                            break;
-                        }
-                        escaped = !escaped && next == "\\";
-                    }
+                    processEscapedSequence(stream, {
+                        token: "\"",
+                        state: state
+                    });
                     returnType = STRING; // continue on in scheme-string mode
                     break;
+                case "symbol": // escape symbol
+                    processEscapedSequence(stream, {
+                        token: "|",
+                        state: state
+                    });
+                    returnType = SYMBOL; // continue on in scheme-symbol mode
+                    break;
                 case "comment": // comment parsing mode
                     var next, maybeEnd = false;
                     while ((next = stream.next()) != null) {
@@ -143,6 +158,9 @@ CodeMirror.defineMode("scheme", function () {
                             stream.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/);
                             returnType = ATOM;
                         }
+                    } else if (ch == '|') {
+                        state.mode = "symbol";
+                        returnType = SYMBOL;
                     } else if (ch == '#') {
                         if (stream.eat("|")) {                    // Multi-line comment
                             state.mode = "comment"; // toggle to comment mode
@@ -255,6 +273,7 @@ CodeMirror.defineMode("scheme", function () {
             return state.indentStack.indent;
         },
 
+        fold: "brace-paren",
         closeBrackets: {pairs: "()[]{}\"\""},
         lineComment: ";;"
     };

+ 2 - 2
plugins/codemirror/mode/sql/sql.js

@@ -122,9 +122,9 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
       if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/)))
         return "number";
       if (atoms.hasOwnProperty(word)) return "atom";
-      if (builtin.hasOwnProperty(word)) return "builtin";
+      if (builtin.hasOwnProperty(word)) return "type";
       if (keywords.hasOwnProperty(word)) return "keyword";
-      if (client.hasOwnProperty(word)) return "string-2";
+      if (client.hasOwnProperty(word)) return "builtin";
       return null;
     }
   }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/codemirror/mode/stylus/stylus.js


+ 25 - 9
plugins/datatables-bs4/css/dataTables.bootstrap4.css

@@ -1,13 +1,4 @@
 @charset "UTF-8";
-td.dt-control {
-  background: url("https://www.datatables.net/examples/resources/details_open.png") no-repeat center center;
-  cursor: pointer;
-}
-
-tr.dt-hasChild td.dt-control {
-  background: url("https://www.datatables.net/examples/resources/details_close.png") no-repeat center center;
-}
-
 table.dataTable th.dt-left,
 table.dataTable td.dt-left {
   text-align: left;
@@ -79,6 +70,31 @@ table.dataTable tbody th.dt-body-nowrap,
 table.dataTable tbody td.dt-body-nowrap {
   white-space: nowrap;
 }
+table.dataTable td.dt-control {
+  text-align: center;
+  cursor: pointer;
+}
+table.dataTable td.dt-control:before {
+  height: 1em;
+  width: 1em;
+  margin-top: -9px;
+  display: inline-block;
+  color: white;
+  border: 0.15em solid white;
+  border-radius: 1em;
+  box-shadow: 0 0 0.2em #444;
+  box-sizing: content-box;
+  text-align: center;
+  text-indent: 0 !important;
+  font-family: "Courier New", Courier, monospace;
+  line-height: 1em;
+  content: "+";
+  background-color: #31b131;
+}
+table.dataTable tr.dt-hasChild td.dt-control:before {
+  content: "-";
+  background-color: #d33333;
+}
 
 table.dataTable {
   clear: both;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/datatables-bs4/css/dataTables.bootstrap4.min.css


+ 253 - 22
plugins/datatables-buttons/css/buttons.bootstrap4.css

@@ -27,6 +27,14 @@
     transform: rotate(360deg);
   }
 }
+div.dataTables_wrapper {
+  position: relative;
+}
+
+div.dt-buttons {
+  position: initial;
+}
+
 div.dt-button-info {
   position: fixed;
   top: 50%;
@@ -36,7 +44,7 @@ div.dt-button-info {
   margin-left: -200px;
   background-color: white;
   border: 2px solid #111;
-  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
+  box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.3);
   border-radius: 3px;
   text-align: center;
   z-index: 21;
@@ -52,9 +60,29 @@ div.dt-button-info > div {
   padding: 1em;
 }
 
+div.dtb-popover-close {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  width: 22px;
+  height: 22px;
+  border: 1px solid #eaeaea;
+  background-color: #f9f9f9;
+  text-align: center;
+  border-radius: 3px;
+  cursor: pointer;
+  z-index: 12;
+}
+
+button.dtb-hide-drop {
+  display: none !important;
+}
+
 div.dt-button-collection-title {
   text-align: center;
   padding: 0.3em 0 0.5em;
+  margin-left: 0.5em;
+  margin-right: 0.5em;
   font-size: 0.9em;
 }
 
@@ -62,25 +90,67 @@ div.dt-button-collection-title:empty {
   display: none;
 }
 
+span.dt-button-spacer {
+  display: inline-block;
+  margin: 0.5em;
+  white-space: nowrap;
+}
+span.dt-button-spacer.bar {
+  border-left: 1px solid rgba(0, 0, 0, 0.3);
+  vertical-align: middle;
+  padding-left: 0.5em;
+}
+span.dt-button-spacer.bar:empty {
+  height: 1em;
+  width: 1px;
+  padding-left: 0;
+}
+
+div.dt-button-collection span.dt-button-spacer {
+  width: 100%;
+  font-size: 0.9em;
+  text-align: center;
+  margin: 0.5em 0;
+}
+div.dt-button-collection span.dt-button-spacer:empty {
+  height: 0;
+  width: 100%;
+}
+div.dt-button-collection span.dt-button-spacer.bar {
+  border-left: none;
+  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
+  padding-left: 0;
+}
+
 div.dt-button-collection {
   position: absolute;
   z-index: 2001;
+  background-color: white;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  padding: 0.5rem 0;
+  width: 200px;
 }
 div.dt-button-collection div.dropdown-menu {
+  position: relative;
   display: block;
   z-index: 2002;
   min-width: 100%;
-}
-div.dt-button-collection div.dt-button-collection-title {
-  background-color: white;
-  border: 1px solid rgba(0, 0, 0, 0.15);
+  background-color: transparent;
+  border: none;
+  box-shadow: none;
+  padding: 0;
+  border-radius: 0;
 }
 div.dt-button-collection.fixed {
   position: fixed;
+  display: block;
   top: 50%;
   left: 50%;
   margin-left: -75px;
-  border-radius: 0;
+  border-radius: 5px;
+  background-color: white;
 }
 div.dt-button-collection.fixed.two-column {
   margin-left: -200px;
@@ -91,7 +161,29 @@ div.dt-button-collection.fixed.three-column {
 div.dt-button-collection.fixed.four-column {
   margin-left: -300px;
 }
-div.dt-button-collection > :last-child {
+div.dt-button-collection.fixed.columns {
+  margin-left: -409px;
+}
+@media screen and (max-width: 1024px) {
+  div.dt-button-collection.fixed.columns {
+    margin-left: -308px;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dt-button-collection.fixed.columns {
+    margin-left: -203px;
+  }
+}
+@media screen and (max-width: 460px) {
+  div.dt-button-collection.fixed.columns {
+    margin-left: -100px;
+  }
+}
+div.dt-button-collection.fixed > :last-child {
+  max-height: 100vh;
+  overflow: auto;
+}
+div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
   display: block !important;
   -webkit-column-gap: 8px;
   -moz-column-gap: 8px;
@@ -99,7 +191,7 @@ div.dt-button-collection > :last-child {
   -o-column-gap: 8px;
   column-gap: 8px;
 }
-div.dt-button-collection > :last-child > * {
+div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
   -webkit-column-break-inside: avoid;
   break-inside: avoid;
 }
@@ -108,10 +200,6 @@ div.dt-button-collection.two-column {
 }
 div.dt-button-collection.two-column > :last-child {
   padding-bottom: 1px;
-  -webkit-column-count: 2;
-  -moz-column-count: 2;
-  -ms-column-count: 2;
-  -o-column-count: 2;
   column-count: 2;
 }
 div.dt-button-collection.three-column {
@@ -119,10 +207,6 @@ div.dt-button-collection.three-column {
 }
 div.dt-button-collection.three-column > :last-child {
   padding-bottom: 1px;
-  -webkit-column-count: 3;
-  -moz-column-count: 3;
-  -ms-column-count: 3;
-  -o-column-count: 3;
   column-count: 3;
 }
 div.dt-button-collection.four-column {
@@ -130,21 +214,91 @@ div.dt-button-collection.four-column {
 }
 div.dt-button-collection.four-column > :last-child {
   padding-bottom: 1px;
-  -webkit-column-count: 4;
-  -moz-column-count: 4;
-  -ms-column-count: 4;
-  -o-column-count: 4;
   column-count: 4;
 }
 div.dt-button-collection .dt-button {
   border-radius: 0;
 }
-div.dt-button-collection.fixed {
-  max-width: none;
+div.dt-button-collection.columns {
+  width: auto;
+}
+div.dt-button-collection.columns > :last-child {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  align-items: center;
+  gap: 6px;
+  width: 818px;
+  padding-bottom: 1px;
+}
+div.dt-button-collection.columns > :last-child .dt-button {
+  min-width: 200px;
+  flex: 0 1;
+  margin: 0;
+}
+div.dt-button-collection.columns.dtb-b3 > :last-child, div.dt-button-collection.columns.dtb-b2 > :last-child, div.dt-button-collection.columns.dtb-b1 > :last-child {
+  justify-content: space-between;
+}
+div.dt-button-collection.columns.dtb-b3 .dt-button {
+  flex: 1 1 32%;
+}
+div.dt-button-collection.columns.dtb-b2 .dt-button {
+  flex: 1 1 48%;
+}
+div.dt-button-collection.columns.dtb-b1 .dt-button {
+  flex: 1 1 100%;
+}
+@media screen and (max-width: 1024px) {
+  div.dt-button-collection.columns > :last-child {
+    width: 612px;
+  }
+}
+@media screen and (max-width: 640px) {
+  div.dt-button-collection.columns > :last-child {
+    width: 406px;
+  }
+  div.dt-button-collection.columns.dtb-b3 .dt-button {
+    flex: 0 1 32%;
+  }
+}
+@media screen and (max-width: 460px) {
+  div.dt-button-collection.columns > :last-child {
+    width: 200px;
+  }
 }
 div.dt-button-collection.fixed:before, div.dt-button-collection.fixed:after {
   display: none;
 }
+div.dt-button-collection .btn-group {
+  flex: 1 1 auto;
+}
+div.dt-button-collection .dt-button {
+  min-width: 200px;
+}
+div.dt-button-collection div.dt-btn-split-wrapper {
+  width: 100%;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+div.dt-button-collection button.dt-btn-split-drop-button {
+  width: 100%;
+  color: #212529;
+  border: none;
+  background-color: white;
+  border-radius: 0px;
+  margin-left: 0px !important;
+}
+div.dt-button-collection button.dt-btn-split-drop-button:focus {
+  border: none;
+  border-radius: 0px;
+  outline: none;
+}
+div.dt-button-collection button.dt-btn-split-drop-button:hover {
+  background-color: #e9ecef;
+}
+div.dt-button-collection button.dt-btn-split-drop-button:active {
+  background-color: #007bff !important;
+}
 
 div.dt-button-background {
   position: fixed;
@@ -193,3 +347,80 @@ div.dt-buttons a.btn.processing:after {
   -webkit-animation: dtb-spinner 1500ms infinite linear;
   -moz-animation: dtb-spinner 1500ms infinite linear;
 }
+div.dt-buttons div.btn-group {
+  position: initial;
+}
+
+div.dt-btn-split-wrapper:active:not(.disabled) button, div.dt-btn-split-wrapper.active:not(.disabled) button {
+  background-color: #5a6268;
+  border-color: #545b62;
+}
+div.dt-btn-split-wrapper:active:not(.disabled) button.dt-btn-split-drop, div.dt-btn-split-wrapper.active:not(.disabled) button.dt-btn-split-drop {
+  box-shadow: none;
+  background-color: #6c757d;
+  border-color: #6c757d;
+}
+div.dt-btn-split-wrapper:active:not(.disabled) button:hover, div.dt-btn-split-wrapper.active:not(.disabled) button:hover {
+  background-color: #5a6268;
+  border-color: #545b62;
+}
+
+div.dataTables_wrapper div.dt-buttons.btn-group div.btn-group {
+  border-radius: 4px !important;
+}
+div.dataTables_wrapper div.dt-buttons.btn-group div.btn-group:last-child {
+  border-top-left-radius: 0px !important;
+  border-bottom-left-radius: 0px !important;
+}
+div.dataTables_wrapper div.dt-buttons.btn-group div.btn-group:first-child {
+  border-top-right-radius: 0px !important;
+  border-bottom-right-radius: 0px !important;
+}
+div.dataTables_wrapper div.dt-buttons.btn-group div.btn-group:last-child:first-child {
+  border-top-left-radius: 4px !important;
+  border-bottom-left-radius: 4px !important;
+  border-top-right-radius: 4px !important;
+  border-bottom-right-radius: 4px !important;
+}
+div.dataTables_wrapper div.dt-buttons.btn-group div.btn-group button.dt-btn-split-drop:last-child {
+  border: 1px solid #6c757d;
+}
+div.dataTables_wrapper div.dt-buttons.btn-group div.btn-group div.dt-btn-split-wrapper {
+  border: none;
+}
+
+div.dt-button-collection div.btn-group {
+  border-radius: 4px !important;
+}
+div.dt-button-collection div.btn-group button {
+  border-radius: 4px;
+}
+div.dt-button-collection div.btn-group button:last-child {
+  border-top-left-radius: 0px !important;
+  border-bottom-left-radius: 0px !important;
+}
+div.dt-button-collection div.btn-group button:first-child {
+  border-top-right-radius: 0px !important;
+  border-bottom-right-radius: 0px !important;
+}
+div.dt-button-collection div.btn-group button:last-child:first-child {
+  border-top-left-radius: 4px !important;
+  border-bottom-left-radius: 4px !important;
+  border-top-right-radius: 4px !important;
+  border-bottom-right-radius: 4px !important;
+}
+div.dt-button-collection div.btn-group button.dt-btn-split-drop:last-child {
+  border: 1px solid #6c757d;
+}
+div.dt-button-collection div.btn-group div.dt-btn-split-wrapper {
+  border: none;
+}
+
+span.dt-button-spacer.bar:empty {
+  height: inherit;
+}
+
+div.dt-button-collection span.dt-button-spacer {
+  padding-left: 1rem !important;
+  text-align: left;
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/datatables-buttons/css/buttons.bootstrap4.min.css


+ 20 - 1
plugins/datatables-buttons/js/buttons.bootstrap4.js

@@ -46,13 +46,32 @@ $.extend( true, DataTable.Buttons.defaults, {
 		collection: {
 			tag: 'div',
 			className: 'dropdown-menu',
+			closeButton: false,
 			button: {
 				tag: 'a',
 				className: 'dt-button dropdown-item',
 				active: 'active',
 				disabled: 'disabled'
 			}
-		}
+		},
+		splitWrapper: {
+			tag: 'div',
+			className: 'dt-btn-split-wrapper btn-group',
+			closeButton: false,
+		},
+		splitDropdown: {
+			tag: 'button',
+			text: '',
+			className: 'btn btn-secondary dt-btn-split-drop dropdown-toggle dropdown-toggle-split',
+			closeButton: false,
+			align: 'split-left',
+			splitAlignClass: 'dt-button-split-left'
+		},
+		splitDropdownButton: {
+			tag: 'button',
+			className: 'dt-btn-split-drop-button btn btn-secondary',
+			closeButton: false
+		} 
 	},
 	buttonCreated: function ( config, button ) {
 		return config.buttons ?

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 3 - 2
plugins/datatables-buttons/js/buttons.bootstrap4.min.js


+ 24 - 1
plugins/datatables-buttons/js/buttons.colVis.js

@@ -40,18 +40,36 @@ var DataTable = $.fn.dataTable;
 $.extend( DataTable.ext.buttons, {
 	// A collection of column visibility buttons
 	colvis: function ( dt, conf ) {
-		return {
+		var node = null;
+		var buttonConf = {
 			extend: 'collection',
+			init: function ( dt, n ) {
+				node = n;
+			},
 			text: function ( dt ) {
 				return dt.i18n( 'buttons.colvis', 'Column visibility' );
 			},
 			className: 'buttons-colvis',
+			closeButton: false,
 			buttons: [ {
 				extend: 'columnsToggle',
 				columns: conf.columns,
 				columnText: conf.columnText
 			} ]
 		};
+
+		// Rebuild the collection with the new column structure if columns are reordered
+		dt.on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
+			// console.log(node);
+			// console.log('node', dt.button(null, node).node());
+			dt.button(null, dt.button(null, node).node()).collectionRebuild([{
+				extend: 'columnsToggle',
+				columns: conf.columns,
+				columnText: conf.columnText
+			}]);
+		});
+
+		return buttonConf;
 	},
 
 	// Selected columns with individual buttons - toggle column visibility
@@ -117,6 +135,11 @@ $.extend( DataTable.ext.buttons, {
 					}
 				} )
 				.on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
+					// Button has been removed from the DOM
+					if ( conf.destroying ) {
+						return;
+					}
+
 					if ( dt.columns( conf.columns ).count() !== 1 ) {
 						return;
 					}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 10 - 6
plugins/datatables-buttons/js/buttons.colVis.min.js


+ 76 - 93
plugins/datatables-buttons/js/buttons.flash.js

@@ -1,6 +1,6 @@
 /*!
  * Flash export buttons for Buttons and DataTables.
- * 2015-2017 SpryMedia Ltd - datatables.net/license
+ * 2015 SpryMedia Ltd - datatables.net/license
  *
  * ZeroClipbaord - MIT license
  * Copyright (c) 2012 Joseph Huckaby
@@ -492,6 +492,35 @@ var _glue = function ( flash, node )
 };
 
 /**
+ * Get the file name for an exported file.
+ *
+ * @param {object}  config       Button configuration
+ * @param {boolean} incExtension Include the file name extension
+ */
+var _filename = function ( config, incExtension )
+{
+	// Backwards compatibility
+	var filename = config.filename === '*' && config.title !== '*' && config.title !== undefined ?
+		config.title :
+		config.filename;
+
+	if ( typeof filename === 'function' ) {
+		filename = filename();
+	}
+
+	if ( filename.indexOf( '*' ) !== -1 ) {
+		filename = $.trim( filename.replace( '*', $('title').text() ) );
+	}
+
+	// Strip characters which the OS will object to
+	filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
+
+	return incExtension === undefined || incExtension === true ?
+		filename+config.extension :
+		filename;
+};
+
+/**
  * Get the sheet name for Excel exports.
  *
  * @param {object}  config       Button configuration
@@ -508,6 +537,24 @@ var _sheetname = function ( config )
 };
 
 /**
+ * Get the title for an exported file.
+ *
+ * @param {object}  config  Button configuration
+ */
+var _title = function ( config )
+{
+	var title = config.title;
+
+	if ( typeof title === 'function' ) {
+		title = title();
+	}
+
+	return title.indexOf( '*' ) !== -1 ?
+		title.replace( '*', $('title').text() || 'Exported data' ) :
+		title;
+};
+
+/**
  * Set the flash text. This has to be broken up into chunks as the Javascript /
  * Flash bridge has a size limit. There is no indication in the Flash
  * documentation what this is, and it probably depends upon the browser.
@@ -629,10 +676,6 @@ var flashButton = {
 
 	title: '*',
 
-	messageTop: '*',
-
-	messageBottom: '*',
-
 	filename: '*',
 
 	extension: '.csv',
@@ -680,13 +723,13 @@ function _createNode( doc, nodeName, opts ){
 			$(tempNode).attr( opts.attr );
 		}
 
-		if ( opts.children ) {
+		if( opts.children ) {
 			$.each( opts.children, function ( key, value ) {
 				tempNode.appendChild( value );
-			} );
+			});
 		}
 
-		if ( opts.text !== null && opts.text !== undefined ) {
+		if( opts.text ) {
 			tempNode.appendChild( doc.createTextNode( opts.text ) );
 		}
 	}
@@ -871,7 +914,6 @@ var excelStrings = {
 		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+
 		'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">'+
 			'<sheetData/>'+
-			'<mergeCells count="0"/>'+
 		'</worksheet>',
 
 	"xl/styles.xml":
@@ -915,9 +957,7 @@ var excelStrings = {
 				'<fill>'+
 					'<patternFill patternType="none" />'+
 				'</fill>'+
-				'<fill>'+ // Excel appears to use this as a dotted background regardless of values but
-					'<patternFill patternType="none" />'+ // to be valid to the schema, use a patternFill
-				'</fill>'+
+				'<fill/>'+ // Excel appears to use this as a dotted background regardless of values
 				'<fill>'+
 					'<patternFill patternType="solid">'+
 						'<fgColor rgb="FFD9D9D9" />'+
@@ -1080,7 +1120,7 @@ var _excelSpecials = [
  */
 
 // Set the default SWF path
-DataTable.Buttons.swfPath = '//cdn.datatables.net/buttons/'+DataTable.Buttons.version+'/swf/flashExport.swf';
+DataTable.Buttons.swfPath = '//cdn.datatables.net/buttons/1.2.4/swf/flashExport.swf';
 
 // Method to allow Flash buttons to be resized when made visible - as they are
 // of zero height and width if initialised hidden
@@ -1114,26 +1154,10 @@ DataTable.ext.buttons.copyFlash = $.extend( {}, flashButton, {
 		this.processing( true );
 
 		var flash = config._flash;
-		var exportData = _exportData( dt, config );
-		var info = dt.buttons.exportInfo( config );
-		var newline = _newLine(config);
-		var output = exportData.str;
-
-		if ( info.title ) {
-			output = info.title + newline + newline + output;
-		}
-
-		if ( info.messageTop ) {
-			output = info.messageTop + newline + newline + output;
-		}
-
-		if ( info.messageBottom ) {
-			output = output + newline + newline + info.messageBottom;
-		}
-
-		if ( config.customize ) {
-			output = config.customize( output, config, dt );
-		}
+		var data = _exportData( dt, config );
+		var output = config.customize ?
+			config.customize( data.str, config ) :
+			data.str;
 
 		flash.setAction( 'copy' );
 		_setText( flash, output );
@@ -1167,13 +1191,12 @@ DataTable.ext.buttons.csvFlash = $.extend( {}, flashButton, {
 		// Set the text
 		var flash = config._flash;
 		var data = _exportData( dt, config );
-		var info = dt.buttons.exportInfo( config );
 		var output = config.customize ?
-			config.customize( data.str, config, dt ) :
+			config.customize( data.str, config ) :
 			data.str;
 
 		flash.setAction( 'csv' );
-		flash.setFileName( info.filename );
+		flash.setFileName( _filename( config ) );
 		_setText( flash, output );
 	},
 
@@ -1227,17 +1250,10 @@ DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
 
 				// For null, undefined of blank cell, continue so it doesn't create the _createNode
 				if ( row[i] === null || row[i] === undefined || row[i] === '' ) {
-					if ( config.createEmptyCells === true ) {
-						row[i] = '';
-					}
-					else {
-						continue;
-					}
+					continue;
 				}
 
-				row[i] = typeof row[i].trim === 'function'
-					? row[i].trim()
-					: row[i];
+				row[i] = $.trim( row[i] );
 
 				// Special number formatting options
 				for ( var j=0, jen=_excelSpecials.length ; j<jen ; j++ ) {
@@ -1322,34 +1338,9 @@ DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
 			config.customizeData( data );
 		}
 
-		var mergeCells = function ( row, colspan ) {
-			var mergeCells = $('mergeCells', rels);
-
-			mergeCells[0].appendChild( _createNode( rels, 'mergeCell', {
-				attr: {
-					ref: 'A'+row+':'+createCellPos(colspan)+row
-				}
-			} ) );
-			mergeCells.attr( 'count', mergeCells.attr( 'count' )+1 );
-			$('row:eq('+(row-1)+') c', rels).attr( 's', '51' ); // centre
-		};
-
-		// Title and top messages
-		var exportInfo = dt.buttons.exportInfo( config );
-		if ( exportInfo.title ) {
-			addRow( [exportInfo.title], rowPos );
-			mergeCells( rowPos, data.header.length-1 );
-		}
-
-		if ( exportInfo.messageTop ) {
-			addRow( [exportInfo.messageTop], rowPos );
-			mergeCells( rowPos, data.header.length-1 );
-		}
-
-		// Table itself
 		if ( config.header ) {
 			addRow( data.header, rowPos );
-			$('row:last c', rels).attr( 's', '2' ); // bold
+			$('row c', rels).attr( 's', '2' ); // bold
 		}
 
 		for ( var n=0, ie=data.body.length ; n<ie ; n++ ) {
@@ -1361,12 +1352,6 @@ DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
 			$('row:last c', rels).attr( 's', '2' ); // bold
 		}
 
-		// Below the table
-		if ( exportInfo.messageBottom ) {
-			addRow( [exportInfo.messageBottom], rowPos );
-			mergeCells( rowPos, data.header.length-1 );
-		}
-
 		// Set column widths
 		var cols = _createNode( rels, 'cols' );
 		$('worksheet', rels).prepend( cols );
@@ -1384,22 +1369,20 @@ DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
 
 		// Let the developer customise the document if they want to
 		if ( config.customize ) {
-			config.customize( xlsx, config, dt );
+			config.customize( xlsx );
 		}
 
 		_xlsxToStrings( xlsx );
 
 		flash.setAction( 'excel' );
-		flash.setFileName( exportInfo.filename );
+		flash.setFileName( _filename( config ) );
 		flash.setSheetData( xlsx );
 		_setText( flash, '' );
 
 		this.processing( false );
 	},
 
-	extension: '.xlsx',
-	
-	createEmptyCells: false
+	extension: '.xlsx'
 } );
 
 
@@ -1418,7 +1401,6 @@ DataTable.ext.buttons.pdfFlash = $.extend( {}, flashButton, {
 		// Set the text
 		var flash = config._flash;
 		var data = dt.buttons.exportData( config.exportOptions );
-		var info = dt.buttons.exportInfo( config );
 		var totalWidth = dt.table().node().offsetWidth;
 
 		// Calculate the column width ratios for layout of the table in the PDF
@@ -1427,18 +1409,17 @@ DataTable.ext.buttons.pdfFlash = $.extend( {}, flashButton, {
 		} );
 
 		flash.setAction( 'pdf' );
-		flash.setFileName( info.filename );
+		flash.setFileName( _filename( config ) );
 
 		_setText( flash, JSON.stringify( {
-			title:         info.title || '',
-			messageTop:    info.messageTop || '',
-			messageBottom: info.messageBottom || '',
-			colWidth:      ratios.toArray(),
-			orientation:   config.orientation,
-			size:          config.pageSize,
-			header:        config.header ? data.header : null,
-			footer:        config.footer ? data.footer : null,
-			body:          data.body
+			title:       _filename(config, false),
+			message: typeof config.message == 'function' ? config.message(dt, button, config) : config.message,
+			colWidth:    ratios.toArray(),
+			orientation: config.orientation,
+			size:        config.pageSize,
+			header:      config.header ? data.header : null,
+			footer:      config.footer ? data.footer : null,
+			body:        data.body
 		} ) );
 
 		this.processing( false );
@@ -1450,6 +1431,8 @@ DataTable.ext.buttons.pdfFlash = $.extend( {}, flashButton, {
 
 	pageSize: 'A4',
 
+	message: '',
+
 	newline: '\n'
 } );
 

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 36 - 30
plugins/datatables-buttons/js/buttons.flash.min.js


+ 2 - 2
plugins/datatables-buttons/js/buttons.html5.js

@@ -772,7 +772,7 @@ var excelStrings = {
 // Ref: section 3.8.30 - built in formatters in open spreadsheet
 //   https://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%204%20-%20Markup%20Language%20Reference.pdf
 var _excelSpecials = [
-	{ match: /^\-?\d+\.\d%$/,               style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p.
+	{ match: /^\-?\d+\.\d%$/,               style: 60, fmt: function (d) { return d/100; } }, // Percent with d.p.
 	{ match: /^\-?\d+\.?\d*%$/,             style: 56, fmt: function (d) { return d/100; } }, // Percent
 	{ match: /^\-?\$[\d,]+.?\d*$/,          style: 57 }, // Dollars
 	{ match: /^\-?£[\d,]+.?\d*$/,           style: 58 }, // Pounds
@@ -1098,7 +1098,7 @@ DataTable.ext.buttons.excelHtml5 = {
 				if ( ! cell ) {
 					if ( typeof row[i] === 'number' || (
 						row[i].match &&
-						row[i].match(/^-?\d+(\.\d+)?$/) &&
+						row[i].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/) && // Includes exponential format
 						! row[i].match(/^0\d+/) )
 					) {
 						// Detect numbers - don't match numbers with leading zeros

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 33 - 26
plugins/datatables-buttons/js/buttons.html5.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9 - 5
plugins/datatables-buttons/js/buttons.print.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 567 - 216
plugins/datatables-buttons/js/dataTables.buttons.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 52 - 41
plugins/datatables-buttons/js/dataTables.buttons.min.js


+ 3 - 4
plugins/datatables-fixedheader/js/dataTables.fixedHeader.js

@@ -1,4 +1,4 @@
-/*! FixedHeader 3.2.0
+/*! FixedHeader 3.2.1
  * ©2009-2021 SpryMedia Ltd - datatables.net/license
  */
 
@@ -6,7 +6,7 @@
  * @summary     FixedHeader
  * @description Fix a table's header or footer, so it is always visible while
  *              scrolling
- * @version     3.2.0
+ * @version     3.2.1
  * @file        dataTables.fixedHeader.js
  * @author      SpryMedia Ltd (www.sprymedia.co.uk)
  * @contact     www.sprymedia.co.uk/contact
@@ -280,7 +280,6 @@ $.extend( FixedHeader.prototype, {
 		} );
 
 		this._positions();
-		$('div.dataTables_scrollHeadInner').height(this.s.position.theadHeight);
 		this._scroll();
 	},
 
@@ -928,7 +927,7 @@ $.extend( FixedHeader.prototype, {
  * @type {String}
  * @static
  */
-FixedHeader.version = "3.2.0";
+FixedHeader.version = "3.2.1";
 
 /**
  * Defaults

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 5 - 5
plugins/datatables-fixedheader/js/dataTables.fixedHeader.min.js


+ 7 - 0
plugins/datatables-searchbuilder/css/searchBuilder.bootstrap4.css

@@ -8,6 +8,10 @@ div.dt-button-collection div.dtsb-searchBuilder {
   padding-right: 10px !important;
 }
 
+div.dt-button-collection.dtb-collection-closeable div.dtsb-titleRow {
+  padding-right: 40px;
+}
+
 .dtsb-greyscale {
   border: 1px solid #cecece !important;
 }
@@ -34,6 +38,9 @@ div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title {
   display: inline-block;
   padding-top: 6px;
 }
+div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title:empty {
+  display: inline;
+}
 div.dtsb-searchBuilder div.dtsb-titleRow button.dtsb-clearAll {
   float: right;
   margin-bottom: 0.333em;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/datatables-searchbuilder/css/searchBuilder.bootstrap4.min.css


+ 181 - 91
plugins/datatables-searchbuilder/js/dataTables.searchBuilder.js

@@ -1,4 +1,4 @@
-/*! SearchBuilder 1.2.1
+/*! SearchBuilder 1.3.1
  * ©SpryMedia Ltd - datatables.net/license/mit
  */
 (function () {
@@ -60,7 +60,7 @@
                     .addClass(this.classes.italic)
                     .attr('autocomplete', 'hacking'),
                 conditionTitle: $$2('<option value="" disabled selected hidden/>')
-                    .text(this.s.dt.i18n('searchBuilder.condition', i18n.condition)),
+                    .html(this.s.dt.i18n('searchBuilder.condition', i18n.condition)),
                 container: $$2('<div/>')
                     .addClass(this.classes.container),
                 data: $$2('<select/>')
@@ -68,24 +68,28 @@
                     .addClass(this.classes.dropDown)
                     .addClass(this.classes.italic),
                 dataTitle: $$2('<option value="" disabled selected hidden/>')
-                    .text(this.s.dt.i18n('searchBuilder.data', i18n.data)),
+                    .html(this.s.dt.i18n('searchBuilder.data', i18n.data)),
                 defaultValue: $$2('<select disabled/>')
                     .addClass(this.classes.value)
                     .addClass(this.classes.dropDown)
-                    .addClass(this.classes.select),
-                "delete": $$2('<button>&times</button>')
+                    .addClass(this.classes.select)
+                    .addClass(this.classes.italic),
+                "delete": $$2('<button/>')
+                    .html(this.s.dt.i18n('searchBuilder.delete', i18n["delete"]))
                     .addClass(this.classes["delete"])
                     .addClass(this.classes.button)
                     .attr('title', this.s.dt.i18n('searchBuilder.deleteTitle', i18n.deleteTitle))
                     .attr('type', 'button'),
                 // eslint-disable-next-line no-useless-escape
-                left: $$2('<button>\<</button>')
+                left: $$2('<button/>')
+                    .html(this.s.dt.i18n('searchBuilder.left', i18n.left))
                     .addClass(this.classes.left)
                     .addClass(this.classes.button)
                     .attr('title', this.s.dt.i18n('searchBuilder.leftTitle', i18n.leftTitle))
                     .attr('type', 'button'),
                 // eslint-disable-next-line no-useless-escape
-                right: $$2('<button>\></button>')
+                right: $$2('<button/>')
+                    .html(this.s.dt.i18n('searchBuilder.right', i18n.right))
                     .addClass(this.classes.right)
                     .addClass(this.classes.button)
                     .attr('title', this.s.dt.i18n('searchBuilder.rightTitle', i18n.rightTitle))
@@ -97,8 +101,8 @@
                         .addClass(this.classes.italic)
                         .addClass(this.classes.select)
                 ],
-                valueTitle: $$2('<option value="--valueTitle--" selected/>')
-                    .text(this.s.dt.i18n('searchBuilder.value', i18n.value))
+                valueTitle: $$2('<option value="--valueTitle--" disabled selected hidden/>')
+                    .html(this.s.dt.i18n('searchBuilder.value', i18n.value))
             };
             // If the greyscale option is selected then add the class to add the grey colour to SearchBuilder
             if (this.c.greyscale) {
@@ -111,19 +115,33 @@
                 }
             }
             // For responsive design, adjust the criterias properties on the following events
-            this.s.dt.on('draw.dtsp', function () {
+            this.s.dt.on('draw.dtsb', function () {
                 _this._adjustCriteria();
             });
-            this.s.dt.on('buttons-action', function () {
+            this.s.dt.on('buttons-action.dtsb', function () {
                 _this._adjustCriteria();
             });
-            $$2(window).on('resize.dtsp', dataTable$2.util.throttle(function () {
+            $$2(window).on('resize.dtsb', dataTable$2.util.throttle(function () {
                 _this._adjustCriteria();
             }));
             this._buildCriteria();
             return this;
         }
         /**
+         * Escape html characters within a string
+         *
+         * @param txt the string to be escaped
+         * @returns the escaped string
+         */
+        Criteria._escapeHTML = function (txt) {
+            return txt
+                .toString()
+                .replace(/&amp;/g, '&')
+                .replace(/&lt;/g, '<')
+                .replace(/&gt;/g, '>')
+                .replace(/&quot;/g, '"');
+        };
+        /**
          * Adds the left button to the criteria
          */
         Criteria.prototype.updateArrows = function (hasSiblings, redraw) {
@@ -217,15 +235,15 @@
                     filter.sort();
                     for (var _i = 0, filter_1 = filter; _i < filter_1.length; _i++) {
                         var filt = filter_1[_i];
-                        if (filt) {
+                        if (filt && typeof filt === 'string') {
                             filt = filt.replace(/[\r\n\u2028]/g, ' ');
                         }
                     }
                 }
-                else if (filter !== null) {
+                else if (filter !== null && typeof filter === 'string') {
                     filter = filter.replace(/[\r\n\u2028]/g, ' ');
                 }
-                if (this.s.type.includes('html')) {
+                if (this.s.type.includes('html') && typeof filter === 'string') {
                     filter = filter.replace(/(<([^>]+)>)/ig, '');
                 }
                 // Not ideal, but jqueries .val() returns an empty string even
@@ -328,7 +346,9 @@
                 var italic_1 = this.classes.italic;
                 var data_1 = this.dom.data;
                 this.dom.data.children('option').each(function () {
-                    if ($$2(this).text() === loadedCriteria.data) {
+                    if (!foundData &&
+                        ($$2(this).text() === loadedCriteria.data ||
+                            loadedCriteria.origData && $$2(this).prop('origData') === loadedCriteria.origData)) {
                         $$2(this).prop('selected', true);
                         data_1.removeClass(italic_1);
                         foundData = true;
@@ -391,7 +411,7 @@
             var _this = this;
             this.dom.data
                 .unbind('change')
-                .on('change', function () {
+                .on('change.dtsb', function () {
                 _this.dom.dataTitle.removeProp('selected');
                 // Need to go over every option to identify the correct selection
                 var options = _this.dom.data.children('option.' + _this.classes.option);
@@ -426,7 +446,7 @@
             });
             this.dom.condition
                 .unbind('change')
-                .on('change', function () {
+                .on('change.dtsb', function () {
                 _this.dom.conditionTitle.removeProp('selected');
                 // Need to go over every option to identify the correct selection
                 var options = _this.dom.condition.children('option.' + _this.classes.option);
@@ -876,7 +896,11 @@
             this.setListeners();
             // If it can and this is different to before then trigger a draw
             if (prevFilled !== this.s.filled) {
-                this.s.dt.draw();
+                // If using SSP we want to restrict the amount of server calls that take place
+                //  and this will already have taken place
+                if (!this.s.dt.page.info().serverSide) {
+                    this.s.dt.draw();
+                }
                 this.setListeners();
             }
         };
@@ -943,6 +967,7 @@
             var column = that.dom.data.children('option:selected').val();
             var indexArray = that.s.dt.rows().indexes().toArray();
             var settings = that.s.dt.settings()[0];
+            that.dom.valueTitle.prop('selected', true);
             // Declare select element to be used with all of the default classes and listeners.
             var el = $$2('<select/>')
                 .addClass(Criteria.classes.value)
@@ -950,7 +975,7 @@
                 .addClass(Criteria.classes.italic)
                 .addClass(Criteria.classes.select)
                 .append(that.dom.valueTitle)
-                .on('change', function () {
+                .on('change.dtsb', function () {
                 $$2(this).removeClass(Criteria.classes.italic);
                 fn(that, this);
             });
@@ -977,22 +1002,20 @@
                 };
                 // If we are dealing with an array type, either make sure we are working with arrays, or sort them
                 if (that.s.type === 'array') {
-                    value.filter = !Array.isArray(value.filter) ?
-                        [value.filter] :
-                        value.filter = value.filter.sort();
-                    value.text = !Array.isArray(value.text) ?
-                        [value.text] :
-                        value.text = value.text.sort();
+                    value.filter = !Array.isArray(value.filter) ? [value.filter] : value.filter;
+                    value.text = !Array.isArray(value.text) ? [value.text] : value.text;
                 }
                 // Function to add an option to the select element
                 var addOption = function (filt, text) {
+                    if (that.s.type.includes('html') && filt !== null && typeof filt === 'string') {
+                        filt.replace(/(<([^>]+)>)/ig, '');
+                    }
                     // Add text and value, stripping out any html if that is the column type
                     var opt = $$2('<option>', {
                         type: Array.isArray(filt) ? 'Array' : 'String',
-                        value: that.s.type.includes('html') && filt !== null && typeof filt === 'string' ?
-                            filt.replace(/(<([^>]+)>)/ig, '') :
-                            filt
+                        value: filt
                     })
+                        .data('sbv', filt)
                         .addClass(that.classes.option)
                         .addClass(that.classes.notItalic)
                         // Have to add the text this way so that special html characters are not escaped - &amp; etc.
@@ -1011,6 +1034,7 @@
                         if (preDefined !== null && opt.val() === preDefined[0]) {
                             opt.prop('selected', true);
                             el.removeClass(Criteria.classes.italic);
+                            that.dom.valueTitle.removeProp('selected');
                         }
                     }
                 };
@@ -1022,7 +1046,7 @@
                 }
                 // Otherwise the value that is in the cell is to be added
                 else {
-                    addOption(value.filter, value.text);
+                    addOption(value.filter, Array.isArray(value.text) ? value.text.join(', ') : value.text);
                 }
             }
             options.sort(function (a, b) {
@@ -1088,7 +1112,7 @@
             var el = $$2('<input/>')
                 .addClass(Criteria.classes.value)
                 .addClass(Criteria.classes.input)
-                .on('input keypress', that._throttle(function (e) {
+                .on('input.dtsb keypress.dtsb', that._throttle(function (e) {
                 var code = e.keyCode || e.which;
                 if (!that.c.enterSearch &&
                     !(that.s.dt.settings()[0].oInit.search !== undefined &&
@@ -1105,7 +1129,7 @@
                 el.val(preDefined[0]);
             }
             // This is add responsive functionality to the logic button without redrawing everything else
-            that.s.dt.one('draw', function () {
+            that.s.dt.one('draw.dtsb', function () {
                 that.s.topGroup.trigger('dtsb-redrawLogic');
             });
             return el;
@@ -1121,7 +1145,7 @@
                 $$2('<input/>')
                     .addClass(Criteria.classes.value)
                     .addClass(Criteria.classes.input)
-                    .on('input keypress', that._throttle(function (e) {
+                    .on('input.dtsb keypress.dtsb', that._throttle(function (e) {
                     var code = e.keyCode || e.which;
                     if (!that.c.enterSearch &&
                         !(that.s.dt.settings()[0].oInit.search !== undefined &&
@@ -1132,11 +1156,11 @@
                 }, searchDelay === null ? 100 : searchDelay)),
                 $$2('<span>')
                     .addClass(that.classes.joiner)
-                    .text(that.s.dt.i18n('searchBuilder.valueJoiner', that.c.i18n.valueJoiner)),
+                    .html(that.s.dt.i18n('searchBuilder.valueJoiner', that.c.i18n.valueJoiner)),
                 $$2('<input/>')
                     .addClass(Criteria.classes.value)
                     .addClass(Criteria.classes.input)
-                    .on('input keypress', that._throttle(function (e) {
+                    .on('input.dtsb keypress.dtsb', that._throttle(function (e) {
                     var code = e.keyCode || e.which;
                     if (!that.c.enterSearch &&
                         !(that.s.dt.settings()[0].oInit.search !== undefined &&
@@ -1156,7 +1180,7 @@
                 els[2].val(preDefined[1]);
             }
             // This is add responsive functionality to the logic button without redrawing everything else
-            that.s.dt.one('draw', function () {
+            that.s.dt.one('draw.dtsb', function () {
                 that.s.topGroup.trigger('dtsb-redrawLogic');
             });
             return els;
@@ -1175,10 +1199,10 @@
                 attachTo: 'input',
                 format: that.s.dateFormat ? that.s.dateFormat : undefined
             })
-                .on('change', that._throttle(function () {
+                .on('change.dtsb', that._throttle(function () {
                 return fn(that, this);
             }, searchDelay === null ? 100 : searchDelay))
-                .on('input keypress', that.c.enterSearch ||
+                .on('input.dtsb keypress.dtsb', that.c.enterSearch ||
                 that.s.dt.settings()[0].oInit.search !== undefined &&
                     that.s.dt.settings()[0].oInit.search["return"] ?
                 function (e) {
@@ -1200,14 +1224,14 @@
                 el.val(preDefined[0]);
             }
             // This is add responsive functionality to the logic button without redrawing everything else
-            that.s.dt.one('draw', function () {
+            that.s.dt.one('draw.dtsb', function () {
                 that.s.topGroup.trigger('dtsb-redrawLogic');
             });
             return el;
         };
         Criteria.initNoValue = function (that) {
             // This is add responsive functionality to the logic button without redrawing everything else
-            that.s.dt.one('draw', function () {
+            that.s.dt.one('draw.dtsb', function () {
                 that.s.topGroup.trigger('dtsb-redrawLogic');
             });
         };
@@ -1224,14 +1248,14 @@
                     attachTo: 'input',
                     format: that.s.dateFormat ? that.s.dateFormat : undefined
                 })
-                    .on('change', searchDelay !== null ?
+                    .on('change.dtsb', searchDelay !== null ?
                     that.s.dt.settings()[0].oApi._fnThrottle(function () {
                         return fn(that, this);
                     }, searchDelay) :
                     function () {
                         fn(that, _this);
                     })
-                    .on('input keypress', !that.c.enterSearch &&
+                    .on('input.dtsb keypress.dtsb', !that.c.enterSearch &&
                     !(that.s.dt.settings()[0].oInit.search !== undefined &&
                         that.s.dt.settings()[0].oInit.search["return"]) &&
                     searchDelay !== null ?
@@ -1252,7 +1276,7 @@
                         }),
                 $$2('<span>')
                     .addClass(that.classes.joiner)
-                    .text(that.s.dt.i18n('searchBuilder.valueJoiner', that.c.i18n.valueJoiner)),
+                    .html(that.s.dt.i18n('searchBuilder.valueJoiner', that.c.i18n.valueJoiner)),
                 $$2('<input/>')
                     .addClass(Criteria.classes.value)
                     .addClass(Criteria.classes.input)
@@ -1260,14 +1284,14 @@
                     attachTo: 'input',
                     format: that.s.dateFormat ? that.s.dateFormat : undefined
                 })
-                    .on('change', searchDelay !== null ?
+                    .on('change.dtsb', searchDelay !== null ?
                     that.s.dt.settings()[0].oApi._fnThrottle(function () {
                         return fn(that, this);
                     }, searchDelay) :
                     function () {
                         fn(that, _this);
                     })
-                    .on('input keypress', !that.c.enterSearch &&
+                    .on('input.dtsb keypress.dtsb', !that.c.enterSearch &&
                     !(that.s.dt.settings()[0].oInit.search !== undefined &&
                         that.s.dt.settings()[0].oInit.search["return"]) &&
                     searchDelay !== null ?
@@ -1297,7 +1321,7 @@
                 els[2].val(preDefined[1]);
             }
             // This is add responsive functionality to the logic button without redrawing everything else
-            that.s.dt.one('draw', function () {
+            that.s.dt.one('draw.dtsb', function () {
                 that.s.topGroup.trigger('dtsb-redrawLogic');
             });
             return els;
@@ -1314,7 +1338,7 @@
                     element.children('option').length -
                         element.children('option.' + Criteria.classes.notItalic).length &&
                     element.children('option:selected').length === 1 &&
-                    element.children('option:selected')[0] === element.children('option:hidden')[0]) {
+                    element.children('option:selected')[0] === element.children('option')[0]) {
                     allFilled = false;
                 }
             }
@@ -1343,11 +1367,7 @@
             for (var _i = 0, el_3 = el; _i < el_3.length; _i++) {
                 var element = el_3[_i];
                 if (element.is('select')) {
-                    var val = element.children('option:selected').val();
-                    // If the type of the option is an array we need to split it up and sort it
-                    values.push(element.children('option:selected').attr('type') === 'Array' ?
-                        val.split(',').sort() :
-                        val);
+                    values.push(Criteria._escapeHTML(element.children('option:selected').data('sbv')));
                 }
             }
             return values;
@@ -1361,7 +1381,7 @@
             for (var _i = 0, el_4 = el; _i < el_4.length; _i++) {
                 var element = el_4[_i];
                 if (element.is('input')) {
-                    values.push(element.val());
+                    values.push(Criteria._escapeHTML(element.val()));
                 }
             }
             return values;
@@ -2164,6 +2184,18 @@
                 }
             },
             // eslint-disable-next-line sort-keys
+            '!starts': {
+                conditionName: function (dt, i18n) {
+                    return dt.i18n('searchBuilder.conditions.string.notStartsWith', i18n.conditions.string.notStartsWith);
+                },
+                init: Criteria.initInput,
+                inputValue: Criteria.inputValueInput,
+                isInputValid: Criteria.isInputValidInput,
+                search: function (value, comparison) {
+                    return value.toLowerCase().indexOf(comparison[0].toLowerCase()) !== 0;
+                }
+            },
+            // eslint-disable-next-line sort-keys
             'contains': {
                 conditionName: function (dt, i18n) {
                     return dt.i18n('searchBuilder.conditions.string.contains', i18n.conditions.string.contains);
@@ -2175,6 +2207,18 @@
                     return value.toLowerCase().includes(comparison[0].toLowerCase());
                 }
             },
+            // eslint-disable-next-line sort-keys
+            '!contains': {
+                conditionName: function (dt, i18n) {
+                    return dt.i18n('searchBuilder.conditions.string.notContains', i18n.conditions.string.notContains);
+                },
+                init: Criteria.initInput,
+                inputValue: Criteria.inputValueInput,
+                isInputValid: Criteria.isInputValidInput,
+                search: function (value, comparison) {
+                    return !value.toLowerCase().includes(comparison[0].toLowerCase());
+                }
+            },
             'ends': {
                 conditionName: function (dt, i18n) {
                     return dt.i18n('searchBuilder.conditions.string.endsWith', i18n.conditions.string.endsWith);
@@ -2186,6 +2230,18 @@
                     return value.toLowerCase().endsWith(comparison[0].toLowerCase());
                 }
             },
+            // eslint-disable-next-line sort-keys
+            '!ends': {
+                conditionName: function (dt, i18n) {
+                    return dt.i18n('searchBuilder.conditions.string.notEndsWith', i18n.conditions.string.notEndsWith);
+                },
+                init: Criteria.initInput,
+                inputValue: Criteria.inputValueInput,
+                isInputValid: Criteria.isInputValidInput,
+                search: function (value, comparison) {
+                    return !value.toLowerCase().endsWith(comparison[0].toLowerCase());
+                }
+            },
             'null': {
                 conditionName: function (dt, i18n) {
                     return dt.i18n('searchBuilder.conditions.string.empty', i18n.conditions.string.empty);
@@ -2346,10 +2402,13 @@
                 clearAll: 'Clear All',
                 condition: 'Condition',
                 data: 'Data',
+                "delete": '&times',
                 deleteTitle: 'Delete filtering rule',
+                left: '<',
                 leftTitle: 'Outdent criteria',
                 logicAnd: 'And',
                 logicOr: 'Or',
+                right: '>',
                 rightTitle: 'Indent criteria',
                 title: {
                     0: 'Custom Search Builder',
@@ -2486,7 +2545,7 @@
                 return;
             }
             this.s.logic = loadedDetails.logic;
-            this.dom.logic.children().first().text(this.s.logic === 'OR'
+            this.dom.logic.children().first().html(this.s.logic === 'OR'
                 ? this.s.dt.i18n('searchBuilder.logicOr', this.c.i18n.logicOr)
                 : this.s.dt.i18n('searchBuilder.logicAnd', this.c.i18n.logicAnd));
             // Add all of the criteria, be it a sub group or a criteria
@@ -2638,7 +2697,7 @@
         Group.prototype.setListeners = function () {
             var _this = this;
             this.dom.add.unbind('click');
-            this.dom.add.on('click', function () {
+            this.dom.add.on('click.dtsb', function () {
                 // If this is the parent group then the logic button has not been added yet
                 if (!_this.s.isChild) {
                     _this.dom.container.prepend(_this.dom.logicContainer);
@@ -2873,7 +2932,7 @@
             var _this = this;
             criteria.dom["delete"]
                 .unbind('click')
-                .on('click', function () {
+                .on('click.dtsb', function () {
                 _this._removeCriteria(criteria);
                 criteria.dom.container.remove();
                 for (var _i = 0, _a = _this.s.criteria; _i < _a.length; _i++) {
@@ -2885,12 +2944,11 @@
                 criteria.destroy();
                 _this.s.dt.draw();
                 _this.s.topGroup.trigger('dtsb-redrawContents');
-                _this.s.topGroup.trigger('dtsb-updateTitle');
                 return false;
             });
             criteria.dom.right
                 .unbind('click')
-                .on('click', function () {
+                .on('click.dtsb', function () {
                 var idx = criteria.s.index;
                 var group = new Group(_this.s.dt, _this.s.opts, _this.s.topGroup, criteria.s.index, true, _this.s.depth + 1);
                 // Add the criteria that is to be moved to the new group
@@ -2904,7 +2962,7 @@
             });
             criteria.dom.left
                 .unbind('click')
-                .on('click', function () {
+                .on('click.dtsb', function () {
                 _this.s.toDrop = new Criteria(_this.s.dt, _this.s.opts, _this.s.topGroup, criteria.s.index);
                 _this.s.toDrop.s = criteria.s;
                 _this.s.toDrop.c = criteria.c;
@@ -2929,13 +2987,12 @@
             var _this = this;
             this.dom.clear
                 .unbind('click')
-                .on('click', function () {
+                .on('click.dtsb', function () {
                 if (!_this.s.isChild) {
                     _this.dom.container.trigger('dtsb-clearContents');
                     return false;
                 }
                 _this.destroy();
-                _this.s.topGroup.trigger('dtsb-updateTitle');
                 _this.s.topGroup.trigger('dtsb-redrawContents');
                 return false;
             });
@@ -2950,21 +3007,21 @@
             // Set listeners for the new group
             group.dom.add
                 .unbind('click')
-                .on('click', function () {
+                .on('click.dtsb', function () {
                 _this.setupLogic();
                 _this.dom.container.trigger('dtsb-add');
                 return false;
             });
             group.dom.container
                 .unbind('dtsb-add')
-                .on('dtsb-add', function () {
+                .on('dtsb-add.dtsb', function () {
                 _this.setupLogic();
                 _this.dom.container.trigger('dtsb-add');
                 return false;
             });
             group.dom.container
                 .unbind('dtsb-destroy')
-                .on('dtsb-destroy', function () {
+                .on('dtsb-destroy.dtsb', function () {
                 _this._removeCriteria(group, true);
                 group.dom.container.remove();
                 _this.setupLogic();
@@ -2972,7 +3029,7 @@
             });
             group.dom.container
                 .unbind('dtsb-dropCriteria')
-                .on('dtsb-dropCriteria', function () {
+                .on('dtsb-dropCriteria.dtsb', function () {
                 var toDrop = group.s.toDrop;
                 toDrop.s.index = group.s.index;
                 toDrop.updateArrows(_this.s.criteria.length > 1, false);
@@ -2986,8 +3043,8 @@
          */
         Group.prototype._setup = function () {
             this.setListeners();
-            this.dom.add.text(this.s.dt.i18n('searchBuilder.add', this.c.i18n.add));
-            this.dom.logic.children().first().text(this.c.logic === 'OR'
+            this.dom.add.html(this.s.dt.i18n('searchBuilder.add', this.c.i18n.add));
+            this.dom.logic.children().first().html(this.c.logic === 'OR'
                 ? this.s.dt.i18n('searchBuilder.logicOr', this.c.i18n.logicOr)
                 : this.s.dt.i18n('searchBuilder.logicAnd', this.c.i18n.logicAnd));
             this.s.logic = this.c.logic === 'OR' ? 'OR' : 'AND';
@@ -3009,7 +3066,7 @@
             var _this = this;
             this.dom.logic
                 .unbind('click')
-                .on('click', function () {
+                .on('click.dtsb', function () {
                 _this._toggleLogic();
                 _this.s.dt.draw();
                 for (var _i = 0, _a = _this.s.criteria; _i < _a.length; _i++) {
@@ -3024,11 +3081,11 @@
         Group.prototype._toggleLogic = function () {
             if (this.s.logic === 'OR') {
                 this.s.logic = 'AND';
-                this.dom.logic.children().first().text(this.s.dt.i18n('searchBuilder.logicAnd', this.c.i18n.logicAnd));
+                this.dom.logic.children().first().html(this.s.dt.i18n('searchBuilder.logicAnd', this.c.i18n.logicAnd));
             }
             else if (this.s.logic === 'AND') {
                 this.s.logic = 'OR';
-                this.dom.logic.children().first().text(this.s.dt.i18n('searchBuilder.logicOr', this.c.i18n.logicOr));
+                this.dom.logic.children().first().html(this.s.dt.i18n('searchBuilder.logicOr', this.c.i18n.logicOr));
             }
         };
         Group.version = '1.1.0';
@@ -3068,10 +3125,13 @@
                 clearAll: 'Clear All',
                 condition: 'Condition',
                 data: 'Data',
+                "delete": '&times',
                 deleteTitle: 'Delete filtering rule',
+                left: '<',
                 leftTitle: 'Outdent criteria',
                 logicAnd: 'And',
                 logicOr: 'Or',
+                right: '>',
                 rightTitle: 'Indent criteria',
                 title: {
                     0: 'Custom Search Builder',
@@ -3140,6 +3200,15 @@
                 return;
             }
             table.settings()[0]._searchBuilder = this;
+            // If using SSP we want to include the previous state in the very first server call
+            if (this.s.dt.page.info().serverSide) {
+                this.s.dt.on('preXhr.dtsb', function (e, settings, data) {
+                    var loadedState = _this.s.dt.state.loaded();
+                    if (loadedState && loadedState.searchBuilder) {
+                        data.searchBuilder = _this._collapseArray(loadedState.searchBuilder);
+                    }
+                });
+            }
             // Run the remaining setup when the table is initialised
             if (this.s.dt.settings()[0]._bInitComplete) {
                 this._setUp();
@@ -3265,23 +3334,33 @@
             }
             this.s.topGroup = new Group(this.s.dt, this.c, undefined);
             this._setClearListener();
-            this.s.dt.on('stateSaveParams', function (e, settings, data) {
+            this.s.dt.on('stateSaveParams.dtsb', function (e, settings, data) {
                 data.searchBuilder = _this.getDetails();
                 data.page = _this.s.dt.page();
             });
+            this.s.dt.on('stateLoadParams.dtsb', function (e, settings, data) {
+                _this.rebuild(data.searchBuilder);
+            });
             this._build();
-            this.s.dt.on('preXhr', function (e, settings, data) {
+            this.s.dt.on('preXhr.dtsb', function (e, settings, data) {
                 if (_this.s.dt.page.info().serverSide) {
                     data.searchBuilder = _this._collapseArray(_this.getDetails(true));
                 }
             });
+            this.s.dt.on('column-reorder', function () {
+                _this.rebuild(_this.getDetails());
+            });
             if (loadState) {
                 var loadedState = this.s.dt.state.loaded();
                 // If the loaded State is not null rebuild based on it for statesave
                 if (loadedState !== null && loadedState.searchBuilder !== undefined) {
                     this.s.topGroup.rebuild(loadedState.searchBuilder);
                     this.s.topGroup.dom.container.trigger('dtsb-redrawContents');
-                    this.s.dt.page(loadedState.page).draw('page');
+                    // If using SSP we want to restrict the amount of server calls that take place
+                    //  and this information will already have been processed
+                    if (!this.s.dt.page.info().serverSide) {
+                        this.s.dt.page(loadedState.page).draw('page');
+                    }
                     this.s.topGroup.setListeners();
                 }
                 // Otherwise load any predefined options
@@ -3357,7 +3436,7 @@
                 // Add SearchBuilder search function to the dataTables search array
                 $.fn.dataTable.ext.search.push(this.s.search);
             }
-            this.s.dt.on('destroy.dt', function () {
+            this.s.dt.on('destroy.dtsb', function () {
                 _this.dom.container.remove();
                 _this.dom.clearAll.remove();
                 var searchIdx = $.fn.dataTable.ext.search.indexOf(_this.s.search);
@@ -3365,6 +3444,8 @@
                     $.fn.dataTable.ext.search.splice(searchIdx, 1);
                     searchIdx = $.fn.dataTable.ext.search.indexOf(_this.s.search);
                 }
+                _this.s.dt.off('.dtsb');
+                $(_this.s.dt.table().node()).off('.dtsb');
             });
         };
         /**
@@ -3396,7 +3477,7 @@
         SearchBuilder.prototype._setClearListener = function () {
             var _this = this;
             this.dom.clearAll.unbind('click');
-            this.dom.clearAll.on('click', function () {
+            this.dom.clearAll.on('click.dtsb', function () {
                 _this.s.topGroup = new Group(_this.s.dt, _this.c, undefined);
                 _this._build();
                 _this.s.dt.draw();
@@ -3413,7 +3494,7 @@
         SearchBuilder.prototype._setRedrawListener = function () {
             var _this = this;
             this.s.topGroup.dom.container.unbind('dtsb-redrawContents');
-            this.s.topGroup.dom.container.on('dtsb-redrawContents', function () {
+            this.s.topGroup.dom.container.on('dtsb-redrawContents.dtsb', function () {
                 _this._checkClear();
                 _this.s.topGroup.redrawContents();
                 _this.s.topGroup.setupLogic();
@@ -3421,50 +3502,49 @@
                 var count = _this.s.topGroup.count();
                 _this._updateTitle(count);
                 _this._filterChanged(count);
-                _this.s.dt.draw();
+                // If using SSP we want to restrict the amount of server calls that take place
+                //  and this information will already have been processed
+                if (!_this.s.dt.page.info().serverSide) {
+                    _this.s.dt.draw();
+                }
                 _this.s.dt.state.save();
             });
             this.s.topGroup.dom.container.unbind('dtsb-redrawLogic');
-            this.s.topGroup.dom.container.on('dtsb-redrawLogic', function () {
+            this.s.topGroup.dom.container.on('dtsb-redrawLogic.dtsb', function () {
                 _this.s.topGroup.redrawLogic();
                 var count = _this.s.topGroup.count();
                 _this._updateTitle(count);
                 _this._filterChanged(count);
             });
             this.s.topGroup.dom.container.unbind('dtsb-add');
-            this.s.topGroup.dom.container.on('dtsb-add', function () {
+            this.s.topGroup.dom.container.on('dtsb-add.dtsb', function () {
                 var count = _this.s.topGroup.count();
                 _this._updateTitle(count);
                 _this._filterChanged(count);
             });
-            this.s.dt.on('postEdit postCreate postRemove', function () {
+            this.s.dt.on('postEdit.dtsb postCreate.dtsb postRemove.dtsb', function () {
                 _this.s.topGroup.redrawContents();
             });
             this.s.topGroup.dom.container.unbind('dtsb-clearContents');
-            this.s.topGroup.dom.container.on('dtsb-clearContents', function () {
+            this.s.topGroup.dom.container.on('dtsb-clearContents.dtsb', function () {
                 _this._setUp(false);
                 _this._filterChanged(0);
                 _this.s.dt.draw();
             });
-            this.s.topGroup.dom.container.on('dtsb-updateTitle', function () {
-                var count = _this.s.topGroup.count();
-                _this._updateTitle(count);
-                _this._filterChanged(count);
-            });
         };
         /**
          * Sets listeners to check whether clearAll should be added or removed
          */
         SearchBuilder.prototype._setEmptyListener = function () {
             var _this = this;
-            this.s.topGroup.dom.add.on('click', function () {
+            this.s.topGroup.dom.add.on('click.dtsb', function () {
                 _this._checkClear();
             });
-            this.s.topGroup.dom.container.on('dtsb-destroy', function () {
+            this.s.topGroup.dom.container.on('dtsb-destroy.dtsb', function () {
                 _this.dom.clearAll.remove();
             });
         };
-        SearchBuilder.version = '1.2.1';
+        SearchBuilder.version = '1.3.1';
         SearchBuilder.classes = {
             button: 'dtsb-button',
             clearAll: 'dtsb-clearAll',
@@ -3537,15 +3617,21 @@
                         endsWith: 'Ends With',
                         equals: 'Equals',
                         not: 'Not',
+                        notContains: 'Does Not Contain',
                         notEmpty: 'Not Empty',
+                        notEndsWith: 'Does Not End With',
+                        notStartsWith: 'Does Not Start With',
                         startsWith: 'Starts With'
                     }
                 },
                 data: 'Data',
+                "delete": '&times',
                 deleteTitle: 'Delete filtering rule',
+                left: '<',
                 leftTitle: 'Outdent criteria',
                 logicAnd: 'And',
                 logicOr: 'Or',
+                right: '>',
                 rightTitle: 'Indent criteria',
                 title: {
                     0: 'Custom Search Builder',
@@ -3564,7 +3650,7 @@
         return SearchBuilder;
     }());
 
-    /*! SearchBuilder 1.2.1
+    /*! SearchBuilder 1.3.1
      * ©SpryMedia Ltd - datatables.net/license/mit
      */
     // DataTables extensions common UMD. Note that this allows for AMD, CommonJS
@@ -3621,12 +3707,16 @@
         $.fn.dataTable.ext.buttons.searchBuilder = {
             action: function (e, dt, node, config) {
                 this.popover(config._searchBuilder.getNode(), {
-                    align: 'dt-container'
+                    align: 'container',
+                    span: 'container'
                 });
                 // Need to redraw the contents to calculate the correct positions for the elements
                 if (config._searchBuilder.s.topGroup !== undefined) {
                     config._searchBuilder.s.topGroup.dom.container.trigger('dtsb-redrawContents');
                 }
+                if (config._searchBuilder.s.topGroup.s.criteria.length === 0) {
+                    $('.' + $.fn.dataTable.Group.classes.add).click();
+                }
             },
             config: {},
             init: function (dt, node, config) {

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 113 - 109
plugins/datatables-searchbuilder/js/dataTables.searchBuilder.min.js


+ 48 - 55
plugins/datatables-searchbuilder/js/searchBuilder.bootstrap4.js

@@ -1,56 +1,49 @@
-/*! SearchBuilder 1.3.0
- * ©SpryMedia Ltd - datatables.net/license/mit
- */
-(function () {
-    'use strict';
-
-    (function (factory) {
-        if (typeof define === 'function' && define.amd) {
-            // AMD
-            define(['jquery', 'datatables.net-bs4', 'datatables.net-searchbuilder'], function ($) {
-                return factory($);
-            });
-        }
-        else if (typeof exports === 'object') {
-            // CommonJS
-            module.exports = function (root, $) {
-                if (!root) {
-                    root = window;
-                }
-                if (!$ || !$.fn.dataTable) {
-                    // eslint-disable-next-line @typescript-eslint/no-var-requires
-                    $ = require('datatables.net-bs4')(root, $).$;
-                }
-                if (!$.fn.dataTable.searchBuilder) {
-                    // eslint-disable-next-line @typescript-eslint/no-var-requires
-                    require('datatables.net-searchbuilder')(root, $);
-                }
-                return factory($);
-            };
-        }
-        else {
-            // Browser
-            factory(jQuery);
-        }
-    }(function ($) {
-        var dataTable = $.fn.dataTable;
-        $.extend(true, dataTable.SearchBuilder.classes, {
-            clearAll: 'btn btn-light dtsb-clearAll'
-        });
-        $.extend(true, dataTable.Group.classes, {
-            add: 'btn btn-light dtsb-add',
-            clearGroup: 'btn btn-light dtsb-clearGroup',
-            logic: 'btn btn-light dtsb-logic'
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD
+        define(['jquery', 'datatables.net-bs4', 'datatables.net-searchbuilder'], function ($) {
+            return factory($);
         });
-        $.extend(true, dataTable.Criteria.classes, {
-            condition: 'form-control dtsb-condition',
-            data: 'form-control dtsb-data',
-            "delete": 'btn btn-light dtsb-delete',
-            left: 'btn btn-light dtsb-left',
-            right: 'btn btn-light dtsb-right',
-            value: 'form-control dtsb-value'
-        });
-        return dataTable.searchPanes;
-    }));
-
-}());
+    }
+    else if (typeof exports === 'object') {
+        // CommonJS
+        module.exports = function (root, $) {
+            if (!root) {
+                root = window;
+            }
+            if (!$ || !$.fn.dataTable) {
+                // eslint-disable-next-line @typescript-eslint/no-var-requires
+                $ = require('datatables.net-bs4')(root, $).$;
+            }
+            if (!$.fn.dataTable.searchBuilder) {
+                // eslint-disable-next-line @typescript-eslint/no-var-requires
+                require('datatables.net-searchbuilder')(root, $);
+            }
+            return factory($);
+        };
+    }
+    else {
+        // Browser
+        factory(jQuery);
+    }
+}(function ($) {
+    'use strict';
+    var dataTable = $.fn.dataTable;
+    $.extend(true, dataTable.SearchBuilder.classes, {
+        clearAll: 'btn btn-light dtsb-clearAll'
+    });
+    $.extend(true, dataTable.Group.classes, {
+        add: 'btn btn-light dtsb-add',
+        clearGroup: 'btn btn-light dtsb-clearGroup',
+        logic: 'btn btn-light dtsb-logic'
+    });
+    $.extend(true, dataTable.Criteria.classes, {
+        condition: 'form-control dtsb-condition',
+        data: 'form-control dtsb-data',
+        "delete": 'btn btn-light dtsb-delete',
+        left: 'btn btn-light dtsb-left',
+        right: 'btn btn-light dtsb-right',
+        value: 'form-control dtsb-value'
+    });
+    return dataTable.searchPanes;
+}));

+ 0 - 1
plugins/datatables-select/css/select.bootstrap4.css

@@ -1,4 +1,3 @@
-@charset "UTF-8";
 table.dataTable tbody > tr.selected,
 table.dataTable tbody > tr > .selected {
   background-color: #0275d8;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
plugins/datatables-select/css/select.bootstrap4.min.css


+ 57 - 6
plugins/datatables-select/js/dataTables.select.js

@@ -1,4 +1,4 @@
-/*! Select for DataTables 1.3.3
+/*! Select for DataTables 1.3.4-dev
  * 2015-2021 SpryMedia Ltd - datatables.net/license/mit
  */
 
@@ -6,7 +6,7 @@
  * @summary     Select for DataTables
  * @description A collection of API methods, events and buttons for DataTables
  *   that provides selection options of the items in a DataTable
- * @version     1.3.3
+ * @version     1.3.4-dev
  * @file        dataTables.select.js
  * @author      SpryMedia Ltd (www.sprymedia.co.uk)
  * @contact     datatables.net/forums
@@ -54,10 +54,52 @@ var DataTable = $.fn.dataTable;
 // Version information for debugger
 DataTable.select = {};
 
-DataTable.select.version = '1.3.3';
+DataTable.select.version = '1.3.4-dev';
 
 DataTable.select.init = function ( dt ) {
 	var ctx = dt.settings()[0];
+
+	if (ctx._select) {
+		return;
+	}
+
+	var savedSelected = dt.state.loaded();
+
+	var selectAndSave = function(e, settings, data) {
+		if(data === null || data.select === undefined) {
+			return;
+		}
+		dt.rows().deselect();
+		dt.columns().deselect();
+		dt.cells().deselect();
+		if (data.select.rows !== undefined) {
+			dt.rows(data.select.rows).select();
+		}
+		if (data.select.columns !== undefined) {
+			dt.columns(data.select.columns).select();
+		}
+		if (data.select.cells !== undefined) {
+			for(var i = 0; i < data.select.cells.length; i++) {
+				dt.cell(data.select.cells[i].row, data.select.cells[i].column).select();
+			}
+		}
+		dt.state.save();
+	}
+	
+	dt.one('init', function() {
+		dt.on('stateSaveParams', function(e, settings, data) {
+			data.select = {};
+			data.select.rows = dt.rows({selected:true}).ids(true).toArray();
+			data.select.columns = dt.columns({selected:true})[0];
+			data.select.cells = dt.cells({selected:true})[0].map(function(coords) {
+				return {row: dt.row(coords.row).id(true), column: coords.column}
+			});
+		})
+		
+		selectAndSave(undefined, undefined, savedSelected)
+		dt.on('stateLoaded stateLoadParams', selectAndSave)
+	})
+
 	var init = ctx.oInit.select;
 	var defaults = DataTable.defaults.select;
 	var opts = init === undefined ?
@@ -529,6 +571,7 @@ function info ( api )
  */
 function init ( ctx ) {
 	var api = new DataTable.Api( ctx );
+	ctx._select_init = true;
 
 	// Row callback so that classes can be added to rows and cells if the item
 	// was selected before the element was created. This will happen with the
@@ -597,6 +640,7 @@ function init ( ctx ) {
 	// Update the table information element with selected item summary
 	api.on( 'draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt', function () {
 		info( api );
+		api.state.save();
 	} );
 
 	// Clean up and release
@@ -605,6 +649,7 @@ function init ( ctx ) {
 
 		disableMouseSelection( api );
 		api.off( '.dtSelect' );
+		$('body').off('.dtSelect' + _safeId(api.table().node()));
 	} );
 }
 
@@ -873,12 +918,16 @@ apiRegister( 'select.style()', function ( style ) {
 	}
 
 	return this.iterator( 'table', function ( ctx ) {
-		ctx._select.style = style;
+		if ( ! ctx._select ) {
+			DataTable.select.init( new DataTable.Api(ctx) );
+		}
 
 		if ( ! ctx._select_init ) {
-			init( ctx );
+			init(ctx);
 		}
 
+		ctx._select.style = style;
+
 		// Add / remove mouse event handlers. They aren't required when only
 		// API selection is available
 		var dt = new DataTable.Api( ctx );
@@ -1043,7 +1092,9 @@ apiRegisterPlural( 'cells().deselect()', 'cell().deselect()', function () {
 	this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
 		var data = ctx.aoData[ rowIdx ];
 
-		data._selected_cells[ colIdx ] = false;
+		if(data._selected_cells !== undefined) {
+			data._selected_cells[ colIdx ] = false;
+		}
 
 		// Remove class only if the cells exist, and the cell is not column
 		// selected, in which case the class should remain (since it is selected

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 37 - 25
plugins/datatables-select/js/dataTables.select.min.js


+ 1 - 1
plugins/datatables-select/js/select.bootstrap4.min.js

@@ -2,4 +2,4 @@
  Bootstrap 4 styling wrapper for Select
  ©2018 SpryMedia Ltd - datatables.net/license
 */
-(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-select"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs4")(a,b).$;b.fn.dataTable.select||require("datatables.net-select")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){return c.fn.dataTable});
+(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-select"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.select||require("datatables.net-select")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});

+ 38 - 25
plugins/datatables/jquery.dataTables.js

@@ -1,11 +1,11 @@
-/*! DataTables 1.11.3
+/*! DataTables 1.11.4
  * ©2008-2021 SpryMedia Ltd - datatables.net/license
  */
 
 /**
  * @summary     DataTables
  * @description Paginate, search and order HTML tables
- * @version     1.11.3
+ * @version     1.11.4
  * @file        jquery.dataTables.js
  * @author      SpryMedia Ltd
  * @contact     www.datatables.net
@@ -3450,6 +3450,9 @@
 	 */
 	function _fnDraw( oSettings, ajaxComplete )
 	{
+		// Allow for state saving and a custom start position
+		_fnStart( oSettings );
+	
 		/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
 		var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
 		if ( $.inArray( false, aPreDraw ) !== -1 )
@@ -3458,34 +3461,18 @@
 			return;
 		}
 	
-		var i, iLen, n;
 		var anRows = [];
 		var iRowCount = 0;
 		var asStripeClasses = oSettings.asStripeClasses;
 		var iStripes = asStripeClasses.length;
-		var iOpenRows = oSettings.aoOpenRows.length;
 		var oLang = oSettings.oLanguage;
-		var iInitDisplayStart = oSettings.iInitDisplayStart;
 		var bServerSide = _fnDataSource( oSettings ) == 'ssp';
 		var aiDisplay = oSettings.aiDisplay;
-	
-		oSettings.bDrawing = true;
-	
-		/* Check and see if we have an initial draw position from state saving */
-		if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )
-		{
-			oSettings._iDisplayStart = bServerSide ?
-				iInitDisplayStart :
-				iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
-					0 :
-					iInitDisplayStart;
-	
-			oSettings.iInitDisplayStart = -1;
-		}
-	
 		var iDisplayStart = oSettings._iDisplayStart;
 		var iDisplayEnd = oSettings.fnDisplayEnd();
 	
+		oSettings.bDrawing = true;
+	
 		/* Server-side processing draw intercept */
 		if ( oSettings.bDeferLoading )
 		{
@@ -3888,6 +3875,28 @@
 	}
 	
 	/**
+	 * Set the start position for draw
+	 *  @param {object} oSettings dataTables settings object
+	 */
+	function _fnStart( oSettings )
+	{
+		var bServerSide = _fnDataSource( oSettings ) == 'ssp';
+		var iInitDisplayStart = oSettings.iInitDisplayStart;
+	
+		// Check and see if we have an initial draw position from state saving
+		if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )
+		{
+			oSettings._iDisplayStart = bServerSide ?
+				iInitDisplayStart :
+				iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
+					0 :
+					iInitDisplayStart;
+	
+			oSettings.iInitDisplayStart = -1;
+		}
+	}
+	
+	/**
 	 * Create an Ajax call based on the table's settings, taking into account that
 	 * parameters can have multiple forms, and backwards compatibility.
 	 *
@@ -3930,8 +3939,8 @@
 		var ajax = oSettings.ajax;
 		var instance = oSettings.oInstance;
 		var callback = function ( json ) {
-			var status = oSettings.jqXhr
-				? oSettings.jqXhr.status
+			var status = oSettings.jqXHR
+				? oSettings.jqXHR.status
 				: null;
 	
 			if ( json === null || (typeof status === 'number' && status == 204 ) ) {
@@ -5475,7 +5484,7 @@
 	
 		// Sanity check that the table is of a sensible width. If not then we are going to get
 		// misalignment - try to prevent this by not allowing the table to shrink below its min width
-		if ( table.outerWidth() < sanityWidth )
+		if ( Math.round(table.outerWidth()) < Math.round(sanityWidth) )
 		{
 			// The min width depends upon if we have a vertical scrollbar visible or not */
 			correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||
@@ -6484,10 +6493,14 @@
 		// Restore key features - todo - for 1.11 this needs to be done by
 		// subscribed events
 		if ( s.start !== undefined ) {
-			settings._iDisplayStart    = s.start;
 			if(api === null) {
+				settings._iDisplayStart    = s.start;
 				settings.iInitDisplayStart = s.start;
 			}
+			else {
+				_fnPageChange(settings, s.start/s.length);
+	
+			}
 		}
 		if ( s.length !== undefined ) {
 			settings._iDisplayLength   = s.length;
@@ -9632,7 +9645,7 @@
 	 *  @type string
 	 *  @default Version number
 	 */
-	DataTable.version = "1.11.3";
+	DataTable.version = "1.11.4";
 
 	/**
 	 * Private data store, containing all of the settings objects that are

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 144 - 144
plugins/datatables/jquery.dataTables.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 18 - 18
plugins/flag-icon-css/flags/1x1/ac.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 16 - 16
plugins/flag-icon-css/flags/1x1/as.svg


+ 2 - 2
plugins/flag-icon-css/flags/1x1/bh.svg

@@ -1,6 +1,6 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-bh" viewBox="0 0 512 512">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bh" viewBox="0 0 512 512">
   <defs id="defs448">
-    <clipPath id="a">
+    <clipPath id="bh-a">
       <path id="path445" fill-opacity=".7" d="M0 0h640v480H0z"/>
     </clipPath>
   </defs>

+ 14 - 14
plugins/flag-icon-css/flags/1x1/gd.svg

@@ -1,27 +1,27 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icon-css-gd" viewBox="0 0 512 512">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-gd" viewBox="0 0 512 512">
   <defs>
     <g id="c">
       <g id="b">
         <path id="a" fill="#fcd116" d="M0-1v1h.5" transform="rotate(18 0 -1)"/>
-        <use width="100%" height="100%" transform="scale(-1 1)" xlink:href="#a"/>
+        <use xlink:href="#a" width="100%" height="100%" transform="scale(-1 1)"/>
       </g>
-      <use width="100%" height="100%" transform="rotate(72)" xlink:href="#b"/>
-      <use width="100%" height="100%" transform="rotate(144)" xlink:href="#b"/>
-      <use width="100%" height="100%" transform="rotate(-144)" xlink:href="#b"/>
-      <use width="100%" height="100%" transform="rotate(-72)" xlink:href="#b"/>
+      <use xlink:href="#b" width="100%" height="100%" transform="rotate(72)"/>
+      <use xlink:href="#b" width="100%" height="100%" transform="rotate(144)"/>
+      <use xlink:href="#b" width="100%" height="100%" transform="rotate(-144)"/>
+      <use xlink:href="#b" width="100%" height="100%" transform="rotate(-72)"/>
     </g>
   </defs>
   <path fill="#ce1126" d="M0 0h512v512H0z"/>
   <path fill="#007a5e" d="M71.7 71.7h368.6v368.6H71.7z"/>
   <path fill="#fcd116" d="M71.7 71.7h368.6L71.7 440.4h368.6z"/>
   <circle cx="255.9" cy="256.1" r="61.4" fill="#ce1126"/>
-  <use width="100%" height="100%" transform="translate(256 256) scale(56.32)" xlink:href="#c"/>
-  <use width="100%" height="100%" x="-100" transform="translate(-16.4 -.1)" xlink:href="#d"/>
-  <use id="d" width="100%" height="100%" transform="translate(256 35.9) scale(33.28)" xlink:href="#c"/>
-  <use width="100%" height="100%" x="100" transform="translate(16.4)" xlink:href="#d"/>
+  <use xlink:href="#c" width="100%" height="100%" transform="translate(256 256) scale(56.32)"/>
+  <use xlink:href="#d" width="100%" height="100%" x="-100" transform="translate(-16.4 -.1)"/>
+  <use xlink:href="#c" id="d" width="100%" height="100%" transform="translate(256 35.9) scale(33.28)"/>
+  <use xlink:href="#d" width="100%" height="100%" x="100" transform="translate(16.4)"/>
   <path fill="#ce1126" d="M99.8 256.8c7.7 14.3 22.6 29.8 35.7 35.3.2-14.5-5-33.2-12-48l-23.7 12.7z"/>
-  <path fill="#fcd116" d="M86.8 207.6c11.1 23.3-29 78.7 37.8 91.7a67.5 67.5 0 01-11.5-44.7 75.5 75.5 0 0134.6 32.8c17.5-63.4-44.8-59.5-61-79.8z"/>
-  <use width="100%" height="100%" x="-100" transform="translate(-16.4 442)" xlink:href="#d"/>
-  <use width="100%" height="100%" transform="translate(256 478) scale(33.28)" xlink:href="#c"/>
-  <use width="100%" height="100%" x="100" transform="translate(16.4 442.2)" xlink:href="#d"/>
+  <path fill="#fcd116" d="M86.8 207.6c11.1 23.3-29 78.7 37.8 91.7a67.5 67.5 0 0 1-11.5-44.7 75.5 75.5 0 0 1 34.6 32.8c17.5-63.4-44.8-59.5-61-79.8z"/>
+  <use xlink:href="#d" width="100%" height="100%" x="-100" transform="translate(-16.4 442)"/>
+  <use xlink:href="#c" width="100%" height="100%" transform="translate(256 478) scale(33.28)"/>
+  <use xlink:href="#d" width="100%" height="100%" x="100" transform="translate(16.4 442.2)"/>
 </svg>

+ 2 - 2
plugins/flag-icon-css/flags/1x1/gl.svg

@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-gl" viewBox="0 0 512 512">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gl" viewBox="0 0 512 512">
   <path fill="#fff" d="M0 0h512v512H0z"/>
-  <path fill="#d00c33" d="M0 256h512v256H0zm53.3 0a170.7 170.7 0 10341.4 0 170.7 170.7 0 00-341.4 0"/>
+  <path fill="#d00c33" d="M0 256h512v256H0zm53.3 0a170.7 170.7 0 1 0 341.4 0 170.7 170.7 0 0 0-341.4 0"/>
 </svg>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 11 - 11
plugins/flag-icon-css/flags/1x1/gs.svg


+ 7 - 7
plugins/flag-icon-css/flags/1x1/kn.svg

@@ -1,14 +1,14 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-kn" viewBox="0 0 512 512">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-kn" viewBox="0 0 512 512">
   <defs>
-    <clipPath id="a">
+    <clipPath id="kn-a">
       <path fill-opacity=".7" d="M151.7-.3h745.1v745H151.7z"/>
     </clipPath>
   </defs>
-  <g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-104.2 .2) scale(.68714)">
+  <g fill-rule="evenodd" clip-path="url(#kn-a)" transform="translate(-104.2 .2) scale(.68714)">
     <path fill="#ffe900" d="M-5.3 0h1073.5v744H-5.3z"/>
-    <path fill="#35a100" d="M-5.8 0l1.2 536.4L830.7-.4-5.8 0z"/>
-    <path fill="#c70000" d="M1069.5 744l-1.9-557.7L225 744.5l844.5-.4z"/>
-    <path d="M-5.3 576.9l.7 167.9 182.3-.3L1068 147.6l-1-146L886.9 0-5.4 576.9z"/>
-    <path fill="#fff" d="M818 269l-64.2-2.2-25.3 60.2-14.3-61.5-64.2-2.2 55.4-35.7L691 166l48.5 39.4 55.3-35.9-25.4 60.2zM417.5 529.6l-64.3-2.3-25.2 60.2-14.3-61.5-64.3-2.2 55.4-35.8-14.4-61.4 48.5 39.4 55.3-35.9-25.3 60.1z"/>
+    <path fill="#35a100" d="m-5.8 0 1.2 536.4L830.7-.4-5.8 0z"/>
+    <path fill="#c70000" d="m1069.5 744-1.9-557.7L225 744.5l844.5-.4z"/>
+    <path d="m-5.3 576.9.7 167.9 182.3-.3L1068 147.6l-1-146L886.9 0-5.4 576.9z"/>
+    <path fill="#fff" d="m818 269-64.2-2.2-25.3 60.2-14.3-61.5-64.2-2.2 55.4-35.7L691 166l48.5 39.4 55.3-35.9-25.4 60.2zM417.5 529.6l-64.3-2.3-25.2 60.2-14.3-61.5-64.3-2.2 55.4-35.8-14.4-61.4 48.5 39.4 55.3-35.9-25.3 60.1z"/>
   </g>
 </svg>

+ 3 - 3
plugins/flag-icon-css/flags/1x1/mr.svg

@@ -1,6 +1,6 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-mr" viewBox="0 0 512 512">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-mr" viewBox="0 0 512 512">
   <path fill="#cd2a3e" d="M0 0h512v512H0z"/>
   <path fill="#006233" d="M0 76.8h512v358.4H0z"/>
-  <path fill="#ffc400" d="M416 164.9a160 160 0 01-320 0 165.2 165.2 0 00-5.4 41.8A165.4 165.4 0 10416 165z" class="st1"/>
-  <path fill="#ffc400" d="M256 100l-14.4 44.3h-46.5l37.6 27.3-14.3 44.2 37.6-27.3 37.6 27.3-14.4-44.2 37.7-27.3h-46.5z"/>
+  <path fill="#ffc400" d="M416 164.9a160 160 0 0 1-320 0 165.2 165.2 0 0 0-5.4 41.8A165.4 165.4 0 1 0 416 165z" class="st1"/>
+  <path fill="#ffc400" d="m256 100-14.4 44.3h-46.5l37.6 27.3-14.3 44.2 37.6-27.3 37.6 27.3-14.4-44.2 37.7-27.3h-46.5z"/>
 </svg>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 8 - 8
plugins/flag-icon-css/flags/1x1/pn.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 18 - 18
plugins/flag-icon-css/flags/1x1/sh.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 18 - 18
plugins/flag-icon-css/flags/1x1/ta.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 49 - 71
plugins/flag-icon-css/flags/1x1/tc.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/flag-icon-css/flags/1x1/vg.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 21 - 21
plugins/flag-icon-css/flags/4x3/ac.svg


+ 2 - 2
plugins/flag-icon-css/flags/4x3/dz.svg

@@ -1,5 +1,5 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-dz" viewBox="0 0 640 480">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-dz" viewBox="0 0 640 480">
   <path fill="#fff" d="M320 0h320v480H320z"/>
   <path fill="#006233" d="M0 0h320v480H0z"/>
-  <path fill="#d21034" d="M424 180a120 120 0 100 120 96 96 0 110-120m4 60l-108-35.2 67.2 92V183.2l-67.2 92z"/>
+  <path fill="#d21034" d="M424 180a120 120 0 1 0 0 120 96 96 0 1 1 0-120m4 60-108-35.2 67.2 92V183.2l-67.2 92z"/>
 </svg>

+ 2 - 2
plugins/flag-icon-css/flags/4x3/gl.svg

@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-gl" viewBox="0 0 640 480">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gl" viewBox="0 0 640 480">
   <path fill="#fff" d="M0 0h640v480H0z"/>
-  <path fill="#d00c33" d="M0 240h640v240H0zm80 0a160 160 0 10320 0 160 160 0 00-320 0"/>
+  <path fill="#d00c33" d="M0 240h640v240H0zm80 0a160 160 0 1 0 320 0 160 160 0 0 0-320 0"/>
 </svg>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 15 - 15
plugins/flag-icon-css/flags/4x3/gs.svg


+ 3 - 3
plugins/flag-icon-css/flags/4x3/ir.svg

@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-ir" viewBox="0 0 640 480">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ir" viewBox="0 0 640 480">
   <defs>
     <clipPath id="ir-a">
       <path fill-opacity=".7" d="M-85.3 0h682.7v512H-85.3z"/>
@@ -210,10 +210,10 @@
     <path fill="#239e3f" stroke-width="1pt" d="M-68.8 162.6h6v10.5h-6zm160.5 0h6v10.5h-6zm-283.7 0h6v10.5h-6zm81.5 0h6v10.5h-6zm80.9 0h6v10.5h-6zm40 0h6v10.5h-6zm40.9 0h6v10.5h-6zm80.4 0h6v10.5h-6zm203 0h6.1v10.5h-6zm-162.1 0h6v10.5h-6zm40 0h6v10.5h-6zm40.5 0h6v10.5h-6zm40.4 0h6v10.5h-6zm323.2 0h6v10.5h-6zm-242.7 0h6v10.5h-6zm40.8 0h6v10.5h-6zm41.3 0h6v10.5h-6zm38.8 0h6v10.5h-6zm41.3 0h6v10.5h-6zm40.4 0h6v10.5h-6zm119.7 0h6v10.5h-6zm-38.8 0h6v10.5h-6zm-808.9 0h6v10.5h-6z"/>
     <g fill="#da0000">
       <path d="M279.8 197.5c8.4 10.4 34.5 67.6-15.7 105.2-23.7 17.8-9 18.6-8.3 21.6 38-20.1 50.3-47.5 50-72-.2-24.4-13.2-46-26-54.8z"/>
-      <path d="M284.8 194.8a73.3 73.3 0 0115.7 112.4c27.2-6 62-86.4-15.7-112.4zm-57.6 0a73.3 73.3 0 00-15.6 112.4c-27.3-6-62-86.4 15.6-112.4z"/>
+      <path d="M284.8 194.8a73.3 73.3 0 0 1 15.7 112.4c27.2-6 62-86.4-15.7-112.4zm-57.6 0a73.3 73.3 0 0 0-15.6 112.4c-27.3-6-62-86.4 15.6-112.4z"/>
       <path d="M232.2 197.5c-8.4 10.4-34.5 67.6 15.7 105.2 23.6 17.8 9 18.6 8.3 21.6-38-20.1-50.3-47.5-50-72 .2-24.4 13.2-46 26-54.8z"/>
       <path d="M304.2 319.1c-14.9.2-33.6-2-47.5-9.3 2.3 4.5 4.2 7.3 6.5 11.7 13.2 1.3 31.5 2.8 41-2.4zm-95 0c14.9.2 33.6-2 47.5-9.3-2.3 4.5-4.2 7.3-6.5 11.7-13.2 1.3-31.5 2.8-41-2.4zm27.3-138.7c3 8 10.9 9.2 19.3 4.5 6.2 3.6 15.7 3.9 19-4.1 2.5 19.8-18.3 15-19 11.2-7.8 7.5-22.2 3.2-19.3-11.6z"/>
-      <path d="M256.4 331.6l7.8-9 1.1-120.1-9.3-8.2-9.3 7.8 1.9 121 7.8 8.5z"/>
+      <path d="m256.4 331.6 7.8-9 1.1-120.1-9.3-8.2-9.3 7.8 1.9 121 7.8 8.5z"/>
     </g>
   </g>
 </svg>

+ 2 - 2
plugins/flag-icon-css/flags/4x3/la.svg

@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-la" viewBox="0 0 640 480">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-la" viewBox="0 0 640 480">
   <defs>
     <clipPath id="la-a">
       <path fill-opacity=".7" d="M0 0h640v480H0z"/>
@@ -7,6 +7,6 @@
   <g fill-rule="evenodd" clip-path="url(#la-a)">
     <path fill="#ce1126" d="M-40 0h720v480H-40z"/>
     <path fill="#002868" d="M-40 119.3h720v241.4H-40z"/>
-    <path fill="#fff" d="M423.4 240a103.4 103.4 0 11-206.8 0 103.4 103.4 0 11206.8 0z"/>
+    <path fill="#fff" d="M423.4 240a103.4 103.4 0 1 1-206.8 0 103.4 103.4 0 1 1 206.8 0z"/>
   </g>
 </svg>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 13 - 13
plugins/flag-icon-css/flags/4x3/pn.svg


+ 2 - 2
plugins/flag-icon-css/flags/4x3/pw.svg

@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-pw" viewBox="0 0 640 480">
+<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-pw" viewBox="0 0 640 480">
   <defs>
     <clipPath id="pw-a">
       <path fill-opacity=".7" d="M-70.3 0h640v480h-640z"/>
@@ -6,6 +6,6 @@
   </defs>
   <g fill-rule="evenodd" stroke-width="1pt" clip-path="url(#pw-a)" transform="translate(70.3)">
     <path fill="#4aadd6" d="M-173.4 0h846.3v480h-846.3z"/>
-    <path fill="#ffde00" d="M335.6 232.1a135.9 130.1 0 11-271.7 0 135.9 130.1 0 11271.7 0z"/>
+    <path fill="#ffde00" d="M335.6 232.1a135.9 130.1 0 1 1-271.7 0 135.9 130.1 0 1 1 271.7 0z"/>
   </g>
 </svg>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 21 - 21
plugins/flag-icon-css/flags/4x3/sh.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 21 - 21
plugins/flag-icon-css/flags/4x3/ta.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 50 - 65
plugins/flag-icon-css/flags/4x3/tc.svg


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/flag-icon-css/flags/4x3/vg.svg


+ 5 - 0
plugins/inputmask/inputmask.es6.js

@@ -0,0 +1,5 @@
+import "./inputmask.js";
+
+const inputmask = window.Inputmask;
+window.Inputmask = undefined;
+export default inputmask;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1460 - 1283
plugins/inputmask/inputmask.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/inputmask/inputmask.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1296 - 1112
plugins/inputmask/jquery.inputmask.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/inputmask/jquery.inputmask.min.js


BIN
plugins/jquery-ui/images/ui-icons_444444_256x240.png


BIN
plugins/jquery-ui/images/ui-icons_555555_256x240.png


BIN
plugins/jquery-ui/images/ui-icons_777620_256x240.png


BIN
plugins/jquery-ui/images/ui-icons_777777_256x240.png


BIN
plugins/jquery-ui/images/ui-icons_cc0000_256x240.png


BIN
plugins/jquery-ui/images/ui-icons_ffffff_256x240.png


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 12 - 9
plugins/jquery-ui/jquery-ui.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1083 - 743
plugins/jquery-ui/jquery-ui.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/jquery-ui/jquery-ui.min.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 3 - 10
plugins/jquery-ui/jquery-ui.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 4
plugins/jquery-ui/jquery-ui.structure.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/jquery-ui/jquery-ui.structure.min.css


+ 9 - 6
plugins/jquery-ui/jquery-ui.theme.css

@@ -1,5 +1,5 @@
 /*!
- * jQuery UI CSS Framework 1.12.1
+ * jQuery UI CSS Framework 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -172,18 +172,18 @@ a.ui-button:active,
 .ui-widget-content .ui-priority-secondary,
 .ui-widget-header .ui-priority-secondary {
 	opacity: .7;
-	filter:Alpha(Opacity=70); /* support: IE8 */
+	-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
 	font-weight: normal;
 }
 .ui-state-disabled,
 .ui-widget-content .ui-state-disabled,
 .ui-widget-header .ui-state-disabled {
 	opacity: .35;
-	filter:Alpha(Opacity=35); /* support: IE8 */
+	-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
 	background-image: none;
 }
 .ui-state-disabled .ui-icon {
-	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
+	-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
 }
 
 /* Icons
@@ -224,7 +224,10 @@ a.ui-button:active,
 }
 
 /* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
+/* Three classes needed to override `.ui-button:hover .ui-icon` */
+.ui-icon-blank.ui-icon-blank.ui-icon-blank {
+	background-image: none;
+}
 .ui-icon-caret-1-n { background-position: 0 0; }
 .ui-icon-caret-1-ne { background-position: -16px 0; }
 .ui-icon-caret-1-e { background-position: -32px 0; }
@@ -435,7 +438,7 @@ a.ui-button:active,
 .ui-widget-overlay {
 	background: #aaaaaa;
 	opacity: .003;
-	filter: Alpha(Opacity=.3); /* support: IE8 */
+	-ms-filter: Alpha(Opacity=.3); /* support: IE8 */
 }
 .ui-widget-shadow {
 	-webkit-box-shadow: 0px 0px 5px #666666;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2 - 2
plugins/jquery-ui/jquery-ui.theme.min.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1309 - 1030
plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.css


+ 0 - 0
plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.min.css


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio