From 85deaf806163d17f7209538625ae2e7b321f4c4f Mon Sep 17 00:00:00 2001 From: kulikov-a <36099472+kulikov-a@users.noreply.github.com> Date: Wed, 24 Aug 2022 21:52:59 +0300 Subject: [PATCH 1/3] 1.4.1 - version bump - add Reset button - whitespace sweep - Minor bugfix in localstorage usage for rowCount (picked from opnsense@7b8da26) - dependency update (npm 6.14.17) - grunt.js small adjustments (trailing new line in footer, removed extra space in banner) --- CHANGELOG.md | 6 + Gruntfile.js | 4 +- LICENSE.txt | 2 +- bower.json | 2 +- dist/jquery.bootgrid-1.4.0.zip | Bin 30024 -> 0 bytes dist/jquery.bootgrid-1.4.1.zip | Bin 0 -> 30298 bytes dist/jquery.bootgrid.css | 6 +- dist/jquery.bootgrid.fa.js | 22 +- dist/jquery.bootgrid.js | 3467 ++++++++++++++++---------------- dist/jquery.bootgrid.min.css | 6 +- dist/jquery.bootgrid.min.js | 2 +- jQuery.Bootgrid.nuspec | 2 +- package-lock.json | 1797 ++++++----------- package.json | 10 +- src/extensions.js | 22 +- src/internal.js | 20 + src/public.js | 3 + 17 files changed, 2399 insertions(+), 2972 deletions(-) delete mode 100644 dist/jquery.bootgrid-1.4.0.zip create mode 100644 dist/jquery.bootgrid-1.4.1.zip diff --git a/CHANGELOG.md b/CHANGELOG.md index 26279a2..b315d7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 1.4.1 +### Enhancements & Features +- Add Reset button to clear browser's localStorage and refresh page +### Bug fixes +- Minor bugfix in localstorage usage for rowCount + ## 1.4.0 ### Enhancements & Features - Store sort order, column selection and row count in browser's localStorage diff --git a/Gruntfile.js b/Gruntfile.js index 60cacbb..ba08cd1 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -7,7 +7,7 @@ module.exports = function (grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), fontawesome: 'fa', - banner: '/*! <%= "\\r\\n * " + pkg.title %> v<%= pkg.version %> - <%= grunt.template.today("mm/dd/yyyy") + "\\r\\n" %>' + + banner: '/*!<%= "\\r\\n * " + pkg.title %> v<%= pkg.version %> - <%= grunt.template.today("mm/dd/yyyy") + "\\r\\n" %>' + ' * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-<%= grunt.template.today("yyyy") %> <%= pkg.author.name %> <%= (pkg.homepage ? "(" + pkg.homepage + ")" : "") + "\\r\\n" %>' + ' * Licensed under the <%= pkg.license + " license. See LICENSE.txt for more details." + "\\r\\n */\\r\\n" %>', folders: { @@ -55,7 +55,7 @@ module.exports = function (grunt) { options: { separator: '\r\n\r\n', banner: '<%= banner %>;(function ($, window, undefined)\r\n{\r\n /*jshint validthis: true */\r\n "use strict";\r\n\r\n', - footer: '\r\n})(jQuery, window);', + footer: '\r\n})(jQuery, window);\r\n', process: function (src, filepath) { var result = src.trim().replace(/(.+?\r\n)/gm, ' $1'), end = [0, ""], diff --git a/LICENSE.txt b/LICENSE.txt index 12bcaaa..5053a70 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,7 +1,7 @@ The MIT License (MIT) Copyright © 2014-2015 Rafael J. Staib -Copyright © 2018 Deciso +Copyright © 2022 Deciso Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/bower.json b/bower.json index 8163658..5e3bd77 100644 --- a/bower.json +++ b/bower.json @@ -13,7 +13,7 @@ "accessibility", "bootstrap" ], - "version": "1.4.0", + "version": "1.4.1", "authors": [ { "name": "Rafael Staib", diff --git a/dist/jquery.bootgrid-1.4.0.zip b/dist/jquery.bootgrid-1.4.0.zip deleted file mode 100644 index 7f1c63d69486460db87c575e53c0c8585dfd537e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30024 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 P#NQ|J@0Mjd{WJSNA2#)? diff --git a/dist/jquery.bootgrid-1.4.1.zip b/dist/jquery.bootgrid-1.4.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..493183ba57c5d4ed0334b801f579981ee580886d GIT binary patch literal 30298 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 literal 0 HcmV?d00001 diff --git a/dist/jquery.bootgrid.css b/dist/jquery.bootgrid.css index 1803491..1e16be7 100644 --- a/dist/jquery.bootgrid.css +++ b/dist/jquery.bootgrid.css @@ -1,6 +1,6 @@ -/*! - * jQuery Bootgrid v1.4.0 - 12/31/2021 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2021 Deciso B.V. (http://www.jquery-bootgrid.com) +/*! + * jQuery Bootgrid v1.4.1 - 08/24/2022 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ .bootgrid-header, diff --git a/dist/jquery.bootgrid.fa.js b/dist/jquery.bootgrid.fa.js index 2af272b..45141f4 100644 --- a/dist/jquery.bootgrid.fa.js +++ b/dist/jquery.bootgrid.fa.js @@ -1,6 +1,6 @@ -/*! - * jQuery Bootgrid v1.4.0 - 12/31/2021 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2021 Deciso B.V. (http://www.jquery-bootgrid.com) +/*! + * jQuery Bootgrid v1.4.1 - 08/24/2022 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ ;(function ($, window, undefined) @@ -8,12 +8,12 @@ /*jshint validthis: true */ "use strict"; -$.extend($.fn.bootgrid.Constructor.defaults.css, { - icon: "icon fa", - iconColumns: "fa-th-list", - iconDown: "fa-sort-desc", - iconRefresh: "fa-refresh", - iconSearch: "fa-search", - iconUp: "fa-sort-asc" + $.extend($.fn.bootgrid.Constructor.defaults.css, { + icon: "icon fa", + iconColumns: "fa-th-list", + iconDown: "fa-sort-desc", + iconRefresh: "fa-refresh", + iconSearch: "fa-search", + iconUp: "fa-sort-asc" }); -})(jQuery, window); \ No newline at end of file +})(jQuery, window); diff --git a/dist/jquery.bootgrid.js b/dist/jquery.bootgrid.js index d8b6e72..5af5ab6 100644 --- a/dist/jquery.bootgrid.js +++ b/dist/jquery.bootgrid.js @@ -1,6 +1,6 @@ -/*! - * jQuery Bootgrid v1.4.0 - 12/31/2021 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2021 Deciso B.V. (http://www.jquery-bootgrid.com) +/*! + * jQuery Bootgrid v1.4.1 - 08/24/2022 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ ;(function ($, window, undefined) @@ -8,2108 +8,2131 @@ /*jshint validthis: true */ "use strict"; -// GRID INTERNAL FIELDS -// ==================== + // GRID INTERNAL FIELDS + // ==================== -var namespace = ".rs.jquery.bootgrid"; + var namespace = ".rs.jquery.bootgrid"; -// GRID INTERNAL FUNCTIONS -// ===================== + // GRID INTERNAL FUNCTIONS + // ===================== -function appendRow(row) -{ - var that = this; - - function exists(item) - { - return that.identifier && item[that.identifier] === row[that.identifier]; - } - - if (!this.rows.contains(exists)) + function appendRow(row) { - this.rows.push(row); - return true; - } + var that = this; - return false; -} + function exists(item) + { + return that.identifier && item[that.identifier] === row[that.identifier]; + } -function findFooterAndHeaderItems(selector) -{ - var footer = (this.footer) ? this.footer.find(selector) : $(), - header = (this.header) ? this.header.find(selector) : $(); - return $.merge(footer, header); -} + if (!this.rows.contains(exists)) + { + this.rows.push(row); + return true; + } -function getParams(context) -{ - return (context) ? $.extend({}, this.cachedParams, { ctx: context }) : - this.cachedParams; -} + return false; + } -function getRequest() -{ - var request = { - current: this.current, - rowCount: this.rowCount, - sort: this.sortDictionary, - searchPhrase: this.searchPhrase - }, - post = this.options.post; + function findFooterAndHeaderItems(selector) + { + var footer = (this.footer) ? this.footer.find(selector) : $(), + header = (this.header) ? this.header.find(selector) : $(); + return $.merge(footer, header); + } - post = ($.isFunction(post)) ? post() : post; - return this.options.requestHandler($.extend(true, request, post)); -} + function getParams(context) + { + return (context) ? $.extend({}, this.cachedParams, { ctx: context }) : + this.cachedParams; + } -function getCssSelector(css) -{ - return "." + $.trim(css).replace(/\s+/gm, "."); -} + function getRequest() + { + var request = { + current: this.current, + rowCount: this.rowCount, + sort: this.sortDictionary, + searchPhrase: this.searchPhrase + }, + post = this.options.post; -function getUrl() -{ - var url = this.options.url; - return ($.isFunction(url)) ? url() : url; -} + post = ($.isFunction(post)) ? post() : post; + return this.options.requestHandler($.extend(true, request, post)); + } -function init() -{ - this.element.trigger("initialize" + namespace); - - loadColumns.call(this); // Loads columns from HTML thead tag - this.selection = this.options.selection && this.identifier != null; - this.rowCount = localStorage.getItem('rowCount[' + this.uid + ']') || this.rowCount; - loadRows.call(this); // Loads rows from HTML tbody tag if ajax is false - prepareTable.call(this); - renderTableHeader.call(this); - renderSearchField.call(this); - renderActions.call(this); - loadData.call(this); - - this.element.trigger("initialized" + namespace); -} - -function highlightAppendedRows(rows) -{ - if (this.options.highlightRows) + function getCssSelector(css) { - // todo: implement + return "." + $.trim(css).replace(/\s+/gm, "."); } -} -function isVisible(column) -{ - return column.visible; -} - -function loadColumns() -{ - var that = this, - firstHeadRow = this.element.find("thead > tr").first(), - sorted = false; + function getUrl() + { + var url = this.options.url; + return ($.isFunction(url)) ? url() : url; + } - /*jshint -W018*/ - firstHeadRow.children().each(function () + function init() { - var $this = $(this), - data = $this.data(), - visibilityStorage = localStorage.getItem('visibleColumns[' + that.uid + '][' + data.columnId + ']'), - sortingStorage = localStorage.getItem('sortColumns[' + that.uid + '][' + data.columnId + ']'), - column = { - id: data.columnId, - identifier: that.identifier == null && data.identifier || false, - converter: that.options.converters[data.converter || data.type] || that.options.converters["string"], - text: $this.html(), - align: data.align || "left", - headerAlign: data.headerAlign || "left", - cssClass: data.cssClass || "", - headerCssClass: data.headerCssClass || "", - formatter: that.options.formatters[data.formatter] || null, - order: !sorted ? - (sortingStorage === null ? (data.order === "asc" || data.order === "desc" ? data.order : null) : - (sortingStorage === "asc" || sortingStorage === "desc" ? sortingStorage : null)) : - null, // If no other column is sorted already (or multiSort is enabled), check if sorting was stored - searchable: !(data.searchable === false), // default: true - sortable: !(data.sortable === false), // default: true - visible: visibilityStorage === null ? !(data.visible === false) : (visibilityStorage === 'true'), // default: true - visibleInSelection: !(data.visibleInSelection === false), // default: true - width: ($.isNumeric(data.width)) ? data.width + "px" : - (typeof(data.width) === "string") ? data.width : null - }; - that.columns.push(column); - if (column.order != null) - { - that.sortDictionary[column.id] = column.order; - } + this.element.trigger("initialize" + namespace); + + loadColumns.call(this); // Loads columns from HTML thead tag + this.selection = this.options.selection && this.identifier != null; + this.rowCount = parseInt(localStorage.getItem('rowCount[' + this.uid + ']')) || this.rowCount; + loadRows.call(this); // Loads rows from HTML tbody tag if ajax is false + prepareTable.call(this); + renderTableHeader.call(this); + renderSearchField.call(this); + renderActions.call(this); + loadData.call(this); - // Prevents multiple identifiers - if (column.identifier) - { - that.identifier = column.id; - that.converter = column.converter; - } + this.element.trigger("initialized" + namespace); + } - // ensures that only the first order will be applied in case of multi sorting is disabled - if (!that.options.multiSort && column.order !== null) + function highlightAppendedRows(rows) + { + if (this.options.highlightRows) { - sorted = true; + // todo: implement } - }); - /*jshint +W018*/ -} - -/* -response = { - current: 1, - rowCount: 10, - rows: [{}, {}], - sort: [{ "columnId": "asc" }], - total: 101 -} -*/ - -function loadData() -{ - var that = this; + } - this.element._bgBusyAria(true).trigger("load" + namespace); - showLoading.call(this); + function isVisible(column) + { + return column.visible; + } - function containsPhrase(row) + function loadColumns() { - var column, - searchPattern = new RegExp(that.searchPhrase, (that.options.caseSensitive) ? "g" : "gi"); + var that = this, + firstHeadRow = this.element.find("thead > tr").first(), + sorted = false; - for (var i = 0; i < that.columns.length; i++) + /*jshint -W018*/ + firstHeadRow.children().each(function () { - column = that.columns[i]; - if (column.searchable && column.visible && - column.converter.to(row[column.id]).search(searchPattern) > -1) + var $this = $(this), + data = $this.data(), + visibilityStorage = localStorage.getItem('visibleColumns[' + that.uid + '][' + data.columnId + ']'), + sortingStorage = localStorage.getItem('sortColumns[' + that.uid + '][' + data.columnId + ']'), + column = { + id: data.columnId, + identifier: that.identifier == null && data.identifier || false, + converter: that.options.converters[data.converter || data.type] || that.options.converters["string"], + text: $this.html(), + align: data.align || "left", + headerAlign: data.headerAlign || "left", + cssClass: data.cssClass || "", + headerCssClass: data.headerCssClass || "", + formatter: that.options.formatters[data.formatter] || null, + order: !sorted ? + (sortingStorage === null ? (data.order === "asc" || data.order === "desc" ? data.order : null) : + (sortingStorage === "asc" || sortingStorage === "desc" ? sortingStorage : null)) : + null, // If no other column is sorted already (or multiSort is enabled), check if sorting was stored + searchable: !(data.searchable === false), // default: true + sortable: !(data.sortable === false), // default: true + visible: visibilityStorage === null ? !(data.visible === false) : (visibilityStorage === 'true'), // default: true + visibleInSelection: !(data.visibleInSelection === false), // default: true + width: ($.isNumeric(data.width)) ? data.width + "px" : + (typeof(data.width) === "string") ? data.width : null + }; + that.columns.push(column); + if (column.order != null) { - return true; + that.sortDictionary[column.id] = column.order; } - } - return false; + // Prevents multiple identifiers + if (column.identifier) + { + that.identifier = column.id; + that.converter = column.converter; + } + + // ensures that only the first order will be applied in case of multi sorting is disabled + if (!that.options.multiSort && column.order !== null) + { + sorted = true; + } + }); + /*jshint +W018*/ } - function update(rows, total) + /* + response = { + current: 1, + rowCount: 10, + rows: [{}, {}], + sort: [{ "columnId": "asc" }], + total: 101 + } + */ + + function loadData() { - that.currentRows = rows; - setTotals.call(that, total); + var that = this; + + this.element._bgBusyAria(true).trigger("load" + namespace); + showLoading.call(this); - if (!that.options.keepSelection) + function containsPhrase(row) { - that.selectedRows = []; + var column, + searchPattern = new RegExp(that.searchPhrase, (that.options.caseSensitive) ? "g" : "gi"); + + for (var i = 0; i < that.columns.length; i++) + { + column = that.columns[i]; + if (column.searchable && column.visible && + column.converter.to(row[column.id]).search(searchPattern) > -1) + { + return true; + } + } + + return false; } - renderRows.call(that, rows); - renderInfos.call(that); - renderPagination.call(that); + function update(rows, total) + { + that.currentRows = rows; + setTotals.call(that, total); - that.element._bgBusyAria(false).trigger("loaded" + namespace); - } + if (!that.options.keepSelection) + { + that.selectedRows = []; + } - if (this.options.ajax) - { - var request = getRequest.call(this), - url = getUrl.call(this); + renderRows.call(that, rows); + renderInfos.call(that); + renderPagination.call(that); - if (url == null || typeof url !== "string" || url.length === 0) - { - throw new Error("Url setting must be a none empty string or a function that returns one."); + that.element._bgBusyAria(false).trigger("loaded" + namespace); } - // aborts the previous ajax request if not already finished or failed - if (this.xqr) + if (this.options.ajax) { - this.xqr.abort(); - } + var request = getRequest.call(this), + url = getUrl.call(this); + + if (url == null || typeof url !== "string" || url.length === 0) + { + throw new Error("Url setting must be a none empty string or a function that returns one."); + } - var settings = { - url: url, - data: request, - success: function(response) + // aborts the previous ajax request if not already finished or failed + if (this.xqr) { - that.xqr = null; + this.xqr.abort(); + } - if (typeof (response) === "string") + var settings = { + url: url, + data: request, + success: function(response) { - response = $.parseJSON(response); - } + that.xqr = null; - response = that.options.responseHandler(response); + if (typeof (response) === "string") + { + response = $.parseJSON(response); + } - that.current = response.current; - update(response.rows, response.total); - }, - error: function (jqXHR, textStatus, errorThrown) - { - that.xqr = null; + response = that.options.responseHandler(response); - if (textStatus !== "abort") + that.current = response.current; + update(response.rows, response.total); + }, + error: function (jqXHR, textStatus, errorThrown) { - renderNoResultsRow.call(that); // overrides loading mask - that.element._bgBusyAria(false).trigger("loaded" + namespace); + that.xqr = null; + + if (textStatus !== "abort") + { + renderNoResultsRow.call(that); // overrides loading mask + that.element._bgBusyAria(false).trigger("loaded" + namespace); + } } - } - }; - settings = $.extend(this.options.ajaxSettings, settings); + }; + settings = $.extend(this.options.ajaxSettings, settings); - this.xqr = $.ajax(settings); - } - else - { - var rows = (this.searchPhrase.length > 0) ? this.rows.where(containsPhrase) : this.rows, - total = rows.length; - if (this.rowCount !== -1) - { - rows = rows.page(this.current, this.rowCount); + this.xqr = $.ajax(settings); } + else + { + var rows = (this.searchPhrase.length > 0) ? this.rows.where(containsPhrase) : this.rows, + total = rows.length; + if (this.rowCount !== -1) + { + rows = rows.page(this.current, this.rowCount); + } - // todo: improve the following comment - // setTimeout decouples the initialization so that adding event handlers happens before - window.setTimeout(function () { update(rows, total); }, 10); + // todo: improve the following comment + // setTimeout decouples the initialization so that adding event handlers happens before + window.setTimeout(function () { update(rows, total); }, 10); + } } -} -function loadRows() -{ - if (!this.options.ajax) + function loadRows() { - var that = this, - rows = this.element.find("tbody > tr"); - - rows.each(function () + if (!this.options.ajax) { - var $this = $(this), - cells = $this.children("td"), - row = {}; + var that = this, + rows = this.element.find("tbody > tr"); - $.each(that.columns, function (i, column) + rows.each(function () { - row[column.id] = column.converter.from(cells.eq(i).text()); - }); - - appendRow.call(that, row); - }); - - setTotals.call(this, this.rows.length); - sortRows.call(this); - } -} - -function setTotals(total) -{ - this.total = total; - this.totalPages = (this.rowCount === -1) ? 1 : - Math.ceil(this.total / this.rowCount); -} + var $this = $(this), + cells = $this.children("td"), + row = {}; -function prepareTable() -{ - var tpl = this.options.templates, - wrapper = (this.element.parent().hasClass(this.options.css.responsiveTable)) ? - this.element.parent() : this.element; + $.each(that.columns, function (i, column) + { + row[column.id] = column.converter.from(cells.eq(i).text()); + }); - this.element.addClass(this.options.css.table); + appendRow.call(that, row); + }); - // checks whether there is an tbody element; otherwise creates one - if (this.element.children("tbody").length === 0) - { - this.element.append(tpl.body); + setTotals.call(this, this.rows.length); + sortRows.call(this); + } } - if (this.options.navigation & 1) + function setTotals(total) { - this.header = $(tpl.header.resolve(getParams.call(this, { id: this.element._bgId() + "-header" }))); - wrapper.before(this.header); + this.total = total; + this.totalPages = (this.rowCount === -1) ? 1 : + Math.ceil(this.total / this.rowCount); } - if (this.options.navigation & 2) + function prepareTable() { - this.footer = $(tpl.footer.resolve(getParams.call(this, { id: this.element._bgId() + "-footer" }))); - wrapper.after(this.footer); - } -} + var tpl = this.options.templates, + wrapper = (this.element.parent().hasClass(this.options.css.responsiveTable)) ? + this.element.parent() : this.element; -function renderActions() -{ - if (this.options.navigation !== 0) - { - var css = this.options.css, - selector = getCssSelector(css.actions), - actionItems = findFooterAndHeaderItems.call(this, selector); + this.element.addClass(this.options.css.table); - if (actionItems.length > 0) + // checks whether there is an tbody element; otherwise creates one + if (this.element.children("tbody").length === 0) { - var that = this, - tpl = this.options.templates, - actions = $(tpl.actions.resolve(getParams.call(this))); - - // Refresh Button - if (this.options.ajax) - { - var refreshIcon = tpl.icon.resolve(getParams.call(this, { iconCss: css.iconRefresh })), - refresh = $(tpl.actionButton.resolve(getParams.call(this, - { content: refreshIcon, text: this.options.labels.refresh }))) - .on("click" + namespace, function (e) - { - // todo: prevent multiple fast clicks (fast click detection) - e.stopPropagation(); - that.current = 1; - loadData.call(that); - }); - actions.append(refresh); - } - - // Row count selection - renderRowCountSelection.call(this, actions); + this.element.append(tpl.body); + } - // Column selection - renderColumnSelection.call(this, actions); + if (this.options.navigation & 1) + { + this.header = $(tpl.header.resolve(getParams.call(this, { id: this.element._bgId() + "-header" }))); + wrapper.before(this.header); + } - replacePlaceHolder.call(this, actionItems, actions); + if (this.options.navigation & 2) + { + this.footer = $(tpl.footer.resolve(getParams.call(this, { id: this.element._bgId() + "-footer" }))); + wrapper.after(this.footer); } } -} -function renderColumnSelection(actions) -{ - if (this.options.columnSelection && this.columns.length > 1) + function renderActions() { - var that = this, - css = this.options.css, - tpl = this.options.templates, - icon = tpl.icon.resolve(getParams.call(this, { iconCss: css.iconColumns })), - dropDown = $(tpl.actionDropDown.resolve(getParams.call(this, { content: icon }))), - selector = getCssSelector(css.dropDownItem), - checkboxSelector = getCssSelector(css.dropDownItemCheckbox), - itemsSelector = getCssSelector(css.dropDownMenuItems); - - $.each(this.columns, function (i, column) + if (this.options.navigation !== 0) { - if (column.visibleInSelection) + var css = this.options.css, + selector = getCssSelector(css.actions), + actionItems = findFooterAndHeaderItems.call(this, selector); + + if (actionItems.length > 0) { - var item = $(tpl.actionDropDownCheckboxItem.resolve(getParams.call(that, - { name: column.id, label: column.text, checked: column.visible }))) - .on("click" + namespace, selector, function (e) - { - e.stopPropagation(); + var that = this, + tpl = this.options.templates, + actions = $(tpl.actions.resolve(getParams.call(this))); - var $this = $(this), - checkbox = $this.find(checkboxSelector); - localStorage.setItem('visibleColumns[' + that.uid + '][' + column.id + ']', checkbox.prop("checked")); - if (!checkbox.prop("disabled")) + // Refresh Button + if (this.options.ajax) + { + var refreshIcon = tpl.icon.resolve(getParams.call(this, { iconCss: css.iconRefresh })), + refresh = $(tpl.actionButton.resolve(getParams.call(this, + { content: refreshIcon, text: this.options.labels.refresh }))) + .on("click" + namespace, function (e) { - column.visible = localStorage.getItem('visibleColumns[' + that.uid + '][' + column.id + ']') === 'true'; - var enable = that.columns.where(isVisible).length > 1; - $this.parents(itemsSelector).find(selector + ":has(" + checkboxSelector + ":checked)") - ._bgEnableAria(enable).find(checkboxSelector)._bgEnableField(enable); - - that.element.find("tbody").empty(); // Fixes an column visualization bug - renderTableHeader.call(that); + // todo: prevent multiple fast clicks (fast click detection) + e.stopPropagation(); + that.current = 1; loadData.call(that); - } - }); - dropDown.find(getCssSelector(css.dropDownMenuItems)).append(item); - } - }); - actions.append(dropDown); - } -} + }); + actions.append(refresh); + } -function renderInfos() -{ - if (this.options.navigation !== 0) - { - var selector = getCssSelector(this.options.css.infos), - infoItems = findFooterAndHeaderItems.call(this, selector); + // Reset Button + if (this.options.resetButton) + { + var resetIcon = tpl.icon.resolve(getParams.call(this, { iconCss: css.iconReset })), + reset = $(tpl.actionButton.resolve(getParams.call(this, + { content: resetIcon, text: this.options.labels.reset }))) + .on("click" + namespace, function (e) + { + e.stopPropagation(); + for (var i = 0; i < that.columns.length; i++) + { + localStorage.removeItem('sortColumns[' + that.uid + '][' + that.columns[i].id + ']'); + localStorage.removeItem('visibleColumns[' + that.uid + '][' + that.columns[i].id + ']'); + } + localStorage.removeItem('rowCount[' + that.uid + ']'); + location.reload(); + }); + actions.append(reset); + } - if (infoItems.length > 0) - { - var end = (this.current * this.rowCount), - infos = $(this.options.templates.infos.resolve(getParams.call(this, { - end: (this.total === 0 || end === -1 || end > this.total) ? this.total : end, - start: (this.total === 0) ? 0 : (end - this.rowCount + 1), - total: this.total - }))); - - replacePlaceHolder.call(this, infoItems, infos); + // Row count selection + renderRowCountSelection.call(this, actions); + + // Column selection + renderColumnSelection.call(this, actions); + + replacePlaceHolder.call(this, actionItems, actions); + } } } -} - -function renderNoResultsRow() -{ - var tbody = this.element.children("tbody").first(), - tpl = this.options.templates, - count = this.columns.where(isVisible).length; - if (this.selection) + function renderColumnSelection(actions) { - count = count + 1; + if (this.options.columnSelection && this.columns.length > 1) + { + var that = this, + css = this.options.css, + tpl = this.options.templates, + icon = tpl.icon.resolve(getParams.call(this, { iconCss: css.iconColumns })), + dropDown = $(tpl.actionDropDown.resolve(getParams.call(this, { content: icon }))), + selector = getCssSelector(css.dropDownItem), + checkboxSelector = getCssSelector(css.dropDownItemCheckbox), + itemsSelector = getCssSelector(css.dropDownMenuItems); + + $.each(this.columns, function (i, column) + { + if (column.visibleInSelection) + { + var item = $(tpl.actionDropDownCheckboxItem.resolve(getParams.call(that, + { name: column.id, label: column.text, checked: column.visible }))) + .on("click" + namespace, selector, function (e) + { + e.stopPropagation(); + + var $this = $(this), + checkbox = $this.find(checkboxSelector); + localStorage.setItem('visibleColumns[' + that.uid + '][' + column.id + ']', checkbox.prop("checked")); + if (!checkbox.prop("disabled")) + { + column.visible = localStorage.getItem('visibleColumns[' + that.uid + '][' + column.id + ']') === 'true'; + var enable = that.columns.where(isVisible).length > 1; + $this.parents(itemsSelector).find(selector + ":has(" + checkboxSelector + ":checked)") + ._bgEnableAria(enable).find(checkboxSelector)._bgEnableField(enable); + + that.element.find("tbody").empty(); // Fixes an column visualization bug + renderTableHeader.call(that); + loadData.call(that); + } + }); + dropDown.find(getCssSelector(css.dropDownMenuItems)).append(item); + } + }); + actions.append(dropDown); + } } - tbody.html(tpl.noResults.resolve(getParams.call(this, { columns: count }))); -} -function renderPagination() -{ - if (this.options.navigation !== 0) + function renderInfos() { - var selector = getCssSelector(this.options.css.pagination), - paginationItems = findFooterAndHeaderItems.call(this, selector)._bgShowAria(this.rowCount !== -1); - - if (this.rowCount !== -1 && paginationItems.length > 0) + if (this.options.navigation !== 0) { - var tpl = this.options.templates, - current = this.current, - totalPages = this.totalPages, - pagination = $(tpl.pagination.resolve(getParams.call(this))), - offsetRight = totalPages - current, - offsetLeft = (this.options.padding - current) * -1, - startWith = ((offsetRight >= this.options.padding) ? - Math.max(offsetLeft, 1) : - Math.max((offsetLeft - this.options.padding + offsetRight), 1)), - maxCount = this.options.padding * 2 + 1, - count = (totalPages >= maxCount) ? maxCount : totalPages; - - renderPaginationItem.call(this, pagination, "first", "«", "first") - ._bgEnableAria(current > 1); - renderPaginationItem.call(this, pagination, "prev", "‹", "prev") - ._bgEnableAria(current > 1); - - for (var i = 0; i < count; i++) - { - var pos = i + startWith; - renderPaginationItem.call(this, pagination, pos, pos, "page-" + pos) - ._bgEnableAria()._bgSelectAria(pos === current); - } + var selector = getCssSelector(this.options.css.infos), + infoItems = findFooterAndHeaderItems.call(this, selector); - if (count === 0) + if (infoItems.length > 0) { - renderPaginationItem.call(this, pagination, 1, 1, "page-" + 1) - ._bgEnableAria(false)._bgSelectAria(); + var end = (this.current * this.rowCount), + infos = $(this.options.templates.infos.resolve(getParams.call(this, { + end: (this.total === 0 || end === -1 || end > this.total) ? this.total : end, + start: (this.total === 0) ? 0 : (end - this.rowCount + 1), + total: this.total + }))); + + replacePlaceHolder.call(this, infoItems, infos); } + } + } - renderPaginationItem.call(this, pagination, "next", "›", "next") - ._bgEnableAria(totalPages > current); - renderPaginationItem.call(this, pagination, "last", "»", "last") - ._bgEnableAria(totalPages > current); + function renderNoResultsRow() + { + var tbody = this.element.children("tbody").first(), + tpl = this.options.templates, + count = this.columns.where(isVisible).length; - replacePlaceHolder.call(this, paginationItems, pagination); + if (this.selection) + { + count = count + 1; } + tbody.html(tpl.noResults.resolve(getParams.call(this, { columns: count }))); } -} -function renderPaginationItem(list, page, text, markerCss) -{ - var that = this, - tpl = this.options.templates, - css = this.options.css, - values = getParams.call(this, { css: markerCss, text: text, page: page }), - item = $(tpl.paginationItem.resolve(values)) - .on("click" + namespace, getCssSelector(css.paginationButton), function (e) - { - e.stopPropagation(); - e.preventDefault(); + function renderPagination() + { + if (this.options.navigation !== 0) + { + var selector = getCssSelector(this.options.css.pagination), + paginationItems = findFooterAndHeaderItems.call(this, selector)._bgShowAria(this.rowCount !== -1); - var $this = $(this), - parent = $this.parent(); - if (!parent.hasClass("active") && !parent.hasClass("disabled")) + if (this.rowCount !== -1 && paginationItems.length > 0) + { + var tpl = this.options.templates, + current = this.current, + totalPages = this.totalPages, + pagination = $(tpl.pagination.resolve(getParams.call(this))), + offsetRight = totalPages - current, + offsetLeft = (this.options.padding - current) * -1, + startWith = ((offsetRight >= this.options.padding) ? + Math.max(offsetLeft, 1) : + Math.max((offsetLeft - this.options.padding + offsetRight), 1)), + maxCount = this.options.padding * 2 + 1, + count = (totalPages >= maxCount) ? maxCount : totalPages; + + renderPaginationItem.call(this, pagination, "first", "«", "first") + ._bgEnableAria(current > 1); + renderPaginationItem.call(this, pagination, "prev", "‹", "prev") + ._bgEnableAria(current > 1); + + for (var i = 0; i < count; i++) { - var commandList = { - first: 1, - prev: that.current - 1, - next: that.current + 1, - last: that.totalPages - }; - var command = $this.data("page"); - that.current = commandList[command] || command; - loadData.call(that); + var pos = i + startWith; + renderPaginationItem.call(this, pagination, pos, pos, "page-" + pos) + ._bgEnableAria()._bgSelectAria(pos === current); } - $this.trigger("blur"); - }); - list.append(item); - return item; -} + if (count === 0) + { + renderPaginationItem.call(this, pagination, 1, 1, "page-" + 1) + ._bgEnableAria(false)._bgSelectAria(); + } -function renderRowCountSelection(actions) -{ - var that = this, - rowCountList = this.options.rowCount; + renderPaginationItem.call(this, pagination, "next", "›", "next") + ._bgEnableAria(totalPages > current); + renderPaginationItem.call(this, pagination, "last", "»", "last") + ._bgEnableAria(totalPages > current); - function getText(value) - { - return (value === -1) ? that.options.labels.all : value; + replacePlaceHolder.call(this, paginationItems, pagination); + } + } } - if ($.isArray(rowCountList)) + function renderPaginationItem(list, page, text, markerCss) { - var css = this.options.css, + var that = this, tpl = this.options.templates, - dropDown = $(tpl.actionDropDown.resolve(getParams.call(this, { content: getText(this.rowCount) }))), - menuSelector = getCssSelector(css.dropDownMenu), - menuTextSelector = getCssSelector(css.dropDownMenuText), - menuItemsSelector = getCssSelector(css.dropDownMenuItems), - menuItemSelector = getCssSelector(css.dropDownItemButton); + css = this.options.css, + values = getParams.call(this, { css: markerCss, text: text, page: page }), + item = $(tpl.paginationItem.resolve(values)) + .on("click" + namespace, getCssSelector(css.paginationButton), function (e) + { + e.stopPropagation(); + e.preventDefault(); - $.each(rowCountList, function (index, value) - { - var item = $(tpl.actionDropDownItem.resolve(getParams.call(that, - { text: getText(value), action: value }))) - ._bgSelectAria(value.toString() === that.rowCount.toString()) - .on("click" + namespace, menuItemSelector, function (e) + var $this = $(this), + parent = $this.parent(); + if (!parent.hasClass("active") && !parent.hasClass("disabled")) { - e.preventDefault(); + var commandList = { + first: 1, + prev: that.current - 1, + next: that.current + 1, + last: that.totalPages + }; + var command = $this.data("page"); + that.current = commandList[command] || command; + loadData.call(that); + } + $this.trigger("blur"); + }); - var $this = $(this), - newRowCount = $this.data("action"); - localStorage.setItem('rowCount[' + that.uid + ']', newRowCount); - if (newRowCount !== that.rowCount) - { - // todo: sophisticated solution needed for calculating which page is selected - that.current = 1; // that.rowCount === -1 ---> All - that.rowCount = newRowCount; - $this.parents(menuItemsSelector).children().each(function () - { - var $item = $(this), - currentRowCount = $item.find(menuItemSelector).data("action"); - $item._bgSelectAria(currentRowCount === newRowCount); - }); - $this.parents(menuSelector).find(menuTextSelector).text(getText(newRowCount)); - loadData.call(that); - } - }); - dropDown.find(menuItemsSelector).append(item); - }); - actions.append(dropDown); + list.append(item); + return item; } -} -function renderRows(rows) -{ - if (rows.length > 0) + function renderRowCountSelection(actions) { var that = this, - css = this.options.css, - tpl = this.options.templates, - tbody = this.element.children("tbody").first(), - allRowsSelected = true, - html = ""; + rowCountList = this.options.rowCount; - $.each(rows, function (index, row) + function getText(value) { - var cells = "", - rowAttr = " data-row-id=\"" + ((that.identifier == null) ? index : row[that.identifier]) + "\"", - rowCss = ""; + return (value === -1) ? that.options.labels.all : value; + } - if (that.selection) - { - var selected = ($.inArray(row[that.identifier], that.selectedRows) !== -1), - selectBox = tpl.select.resolve(getParams.call(that, - { type: "checkbox", value: row[that.identifier], checked: selected })); - cells += tpl.cell.resolve(getParams.call(that, { content: selectBox, css: css.selectCell })); - allRowsSelected = (allRowsSelected && selected); - if (selected) - { - rowCss += css.selected; - rowAttr += " aria-selected=\"true\""; - } - } + if ($.isArray(rowCountList)) + { + var css = this.options.css, + tpl = this.options.templates, + dropDown = $(tpl.actionDropDown.resolve(getParams.call(this, { content: getText(this.rowCount) }))), + menuSelector = getCssSelector(css.dropDownMenu), + menuTextSelector = getCssSelector(css.dropDownMenuText), + menuItemsSelector = getCssSelector(css.dropDownMenuItems), + menuItemSelector = getCssSelector(css.dropDownItemButton); - var status = row.status != null && that.options.statusMapping[row.status]; - if (status) + $.each(rowCountList, function (index, value) { - rowCss += status; - } + var item = $(tpl.actionDropDownItem.resolve(getParams.call(that, + { text: getText(value), action: value }))) + ._bgSelectAria(value.toString() === that.rowCount.toString()) + .on("click" + namespace, menuItemSelector, function (e) + { + e.preventDefault(); - $.each(that.columns, function (j, column) - { - if (column.visible) - { - var value = ($.isFunction(column.formatter)) ? - column.formatter.call(that, column, row) : - column.converter.to(row[column.id]), - cssClass = (column.cssClass.length > 0) ? " " + column.cssClass : ""; - cells += tpl.cell.resolve(getParams.call(that, { - content: (value == null || value === "") ? " " : value, - css: ((column.align === "right") ? css.right : (column.align === "center") ? - css.center : css.left) + cssClass, - style: (column.width == null) ? "" : "width:" + column.width + ";" })); - } + var $this = $(this), + newRowCount = $this.data("action"); + localStorage.setItem('rowCount[' + that.uid + ']', newRowCount); + if (newRowCount !== that.rowCount) + { + // todo: sophisticated solution needed for calculating which page is selected + that.current = 1; // that.rowCount === -1 ---> All + that.rowCount = newRowCount; + $this.parents(menuItemsSelector).children().each(function () + { + var $item = $(this), + currentRowCount = $item.find(menuItemSelector).data("action"); + $item._bgSelectAria(currentRowCount === newRowCount); + }); + $this.parents(menuSelector).find(menuTextSelector).text(getText(newRowCount)); + loadData.call(that); + } + }); + dropDown.find(menuItemsSelector).append(item); }); - - if (rowCss.length > 0) - { - rowAttr += " class=\"" + rowCss + "\""; - } - html += tpl.row.resolve(getParams.call(that, { attr: rowAttr, cells: cells })); - }); - - // sets or clears multi selectbox state - that.element.find("thead " + getCssSelector(that.options.css.selectBox)) - .prop("checked", allRowsSelected); - - tbody.html(html); - - registerRowEvents.call(this, tbody); - } - else - { - renderNoResultsRow.call(this); + actions.append(dropDown); + } } -} - -function registerRowEvents(tbody) -{ - var that = this, - selectBoxSelector = getCssSelector(this.options.css.selectBox); - if (this.selection && !this.options.rowSelect) + function renderRows(rows) { - tbody.off("click" + namespace, selectBoxSelector) - .on("click" + namespace, selectBoxSelector, function(e) - { - e.stopPropagation(); + if (rows.length > 0) + { + var that = this, + css = this.options.css, + tpl = this.options.templates, + tbody = this.element.children("tbody").first(), + allRowsSelected = true, + html = ""; - var $this = $(this), - id = that.converter.from($this.val()); + $.each(rows, function (index, row) + { + var cells = "", + rowAttr = " data-row-id=\"" + ((that.identifier == null) ? index : row[that.identifier]) + "\"", + rowCss = ""; - if ($this.prop("checked")) + if (that.selection) { - that.select([id]); + var selected = ($.inArray(row[that.identifier], that.selectedRows) !== -1), + selectBox = tpl.select.resolve(getParams.call(that, + { type: "checkbox", value: row[that.identifier], checked: selected })); + cells += tpl.cell.resolve(getParams.call(that, { content: selectBox, css: css.selectCell })); + allRowsSelected = (allRowsSelected && selected); + if (selected) + { + rowCss += css.selected; + rowAttr += " aria-selected=\"true\""; + } } - else + + var status = row.status != null && that.options.statusMapping[row.status]; + if (status) { - that.deselect([id]); + rowCss += status; } - }); - } - tbody.off("click" + namespace, "> tr") - .on("click" + namespace, "> tr", function(e) - { - e.stopPropagation(); - - var $this = $(this), - id = (that.identifier == null) ? $this.data("row-id") : - that.converter.from($this.data("row-id") + ""), - row = (that.identifier == null) ? that.currentRows[id] : - that.currentRows.first(function (item) { return item[that.identifier] === id; }); - - if (that.selection && that.options.rowSelect) - { - if ($this.hasClass(that.options.css.selected)) + $.each(that.columns, function (j, column) { - that.deselect([id]); - } - else + if (column.visible) + { + var value = ($.isFunction(column.formatter)) ? + column.formatter.call(that, column, row) : + column.converter.to(row[column.id]), + cssClass = (column.cssClass.length > 0) ? " " + column.cssClass : ""; + cells += tpl.cell.resolve(getParams.call(that, { + content: (value == null || value === "") ? " " : value, + css: ((column.align === "right") ? css.right : (column.align === "center") ? + css.center : css.left) + cssClass, + style: (column.width == null) ? "" : "width:" + column.width + ";" })); + } + }); + + if (rowCss.length > 0) { - that.select([id]); + rowAttr += " class=\"" + rowCss + "\""; } - } + html += tpl.row.resolve(getParams.call(that, { attr: rowAttr, cells: cells })); + }); - that.element.trigger("click" + namespace, [that.columns, row]); - }); -} + // sets or clears multi selectbox state + that.element.find("thead " + getCssSelector(that.options.css.selectBox)) + .prop("checked", allRowsSelected); -function renderSearchField() -{ - if (this.options.navigation !== 0) + tbody.html(html); + + registerRowEvents.call(this, tbody); + } + else + { + renderNoResultsRow.call(this); + } + } + + function registerRowEvents(tbody) { - var css = this.options.css, - selector = getCssSelector(css.search), - searchItems = findFooterAndHeaderItems.call(this, selector); + var that = this, + selectBoxSelector = getCssSelector(this.options.css.selectBox); - if (searchItems.length > 0) + if (this.selection && !this.options.rowSelect) { - var that = this, - tpl = this.options.templates, - timer = null, // fast keyup detection - currentValue = "", - searchFieldSelector = getCssSelector(css.searchField), - search = $(tpl.search.resolve(getParams.call(this))), - searchField = (search.is(searchFieldSelector)) ? search : - search.find(searchFieldSelector); - - searchField.on("keyup" + namespace, function (e) + tbody.off("click" + namespace, selectBoxSelector) + .on("click" + namespace, selectBoxSelector, function(e) + { + e.stopPropagation(); + + var $this = $(this), + id = that.converter.from($this.val()); + + if ($this.prop("checked")) + { + that.select([id]); + } + else + { + that.deselect([id]); + } + }); + } + + tbody.off("click" + namespace, "> tr") + .on("click" + namespace, "> tr", function(e) { e.stopPropagation(); - var newValue = $(this).val(); - if (currentValue !== newValue || (e.which === 13 && newValue !== "")) + + var $this = $(this), + id = (that.identifier == null) ? $this.data("row-id") : + that.converter.from($this.data("row-id") + ""), + row = (that.identifier == null) ? that.currentRows[id] : + that.currentRows.first(function (item) { return item[that.identifier] === id; }); + + if (that.selection && that.options.rowSelect) { - currentValue = newValue; - if (e.which === 13 || newValue.length === 0 || newValue.length >= that.options.searchSettings.characters) + if ($this.hasClass(that.options.css.selected)) { - window.clearTimeout(timer); - timer = window.setTimeout(function () - { - executeSearch.call(that, newValue); - }, that.options.searchSettings.delay); + that.deselect([id]); + } + else + { + that.select([id]); } } - }); - replacePlaceHolder.call(this, searchItems, search); - } + that.element.trigger("click" + namespace, [that.columns, row]); + }); } -} -function executeSearch(phrase) -{ - if (this.searchPhrase !== phrase) + function renderSearchField() { - this.current = 1; - this.searchPhrase = phrase; - loadData.call(this); - } -} + if (this.options.navigation !== 0) + { + var css = this.options.css, + selector = getCssSelector(css.search), + searchItems = findFooterAndHeaderItems.call(this, selector); -function renderTableHeader() -{ - var that = this, - headerRow = this.element.find("thead > tr"), - css = this.options.css, - tpl = this.options.templates, - html = "", - sorting = this.options.sorting; - - if (this.selection) - { - var selectBox = (this.options.multiSelect) ? - tpl.select.resolve(getParams.call(that, { type: "checkbox", value: "all" })) : ""; - html += tpl.rawHeaderCell.resolve(getParams.call(that, { content: selectBox, - css: css.selectCell })); + if (searchItems.length > 0) + { + var that = this, + tpl = this.options.templates, + timer = null, // fast keyup detection + currentValue = "", + searchFieldSelector = getCssSelector(css.searchField), + search = $(tpl.search.resolve(getParams.call(this))), + searchField = (search.is(searchFieldSelector)) ? search : + search.find(searchFieldSelector); + + searchField.on("keyup" + namespace, function (e) + { + e.stopPropagation(); + var newValue = $(this).val(); + if (currentValue !== newValue || (e.which === 13 && newValue !== "")) + { + currentValue = newValue; + if (e.which === 13 || newValue.length === 0 || newValue.length >= that.options.searchSettings.characters) + { + window.clearTimeout(timer); + timer = window.setTimeout(function () + { + executeSearch.call(that, newValue); + }, that.options.searchSettings.delay); + } + } + }); + + replacePlaceHolder.call(this, searchItems, search); + } + } } - $.each(this.columns, function (index, column) + function executeSearch(phrase) { - if (column.visible) + if (this.searchPhrase !== phrase) { - var sortOrder = that.sortDictionary[column.id], - iconCss = ((sorting && sortOrder && sortOrder === "asc") ? css.iconUp : - (sorting && sortOrder && sortOrder === "desc") ? css.iconDown : ""), - icon = tpl.icon.resolve(getParams.call(that, { iconCss: iconCss })), - align = column.headerAlign, - cssClass = (column.headerCssClass.length > 0) ? " " + column.headerCssClass : ""; - html += tpl.headerCell.resolve(getParams.call(that, { - column: column, icon: icon, sortable: sorting && column.sortable && css.sortable || "", - css: ((align === "right") ? css.right : (align === "center") ? - css.center : css.left) + cssClass, - style: (column.width == null) ? "" : "width:" + column.width + ";" })); + this.current = 1; + this.searchPhrase = phrase; + loadData.call(this); } - }); - - headerRow.html(html); + } - if (sorting) + function renderTableHeader() { - var sortingSelector = getCssSelector(css.sortable); - headerRow.off("click" + namespace, sortingSelector) - .on("click" + namespace, sortingSelector, function (e) - { - e.preventDefault(); + var that = this, + headerRow = this.element.find("thead > tr"), + css = this.options.css, + tpl = this.options.templates, + html = "", + sorting = this.options.sorting; - setTableHeaderSortDirection.call(that, $(this)); - sortRows.call(that); - loadData.call(that); - }); - } + if (this.selection) + { + var selectBox = (this.options.multiSelect) ? + tpl.select.resolve(getParams.call(that, { type: "checkbox", value: "all" })) : ""; + html += tpl.rawHeaderCell.resolve(getParams.call(that, { content: selectBox, + css: css.selectCell })); + } - // todo: create a own function for that piece of code - if (this.selection && this.options.multiSelect) - { - var selectBoxSelector = getCssSelector(css.selectBox); - headerRow.off("click" + namespace, selectBoxSelector) - .on("click" + namespace, selectBoxSelector, function(e) + $.each(this.columns, function (index, column) + { + if (column.visible) { - e.stopPropagation(); + var sortOrder = that.sortDictionary[column.id], + iconCss = ((sorting && sortOrder && sortOrder === "asc") ? css.iconUp : + (sorting && sortOrder && sortOrder === "desc") ? css.iconDown : ""), + icon = tpl.icon.resolve(getParams.call(that, { iconCss: iconCss })), + align = column.headerAlign, + cssClass = (column.headerCssClass.length > 0) ? " " + column.headerCssClass : ""; + html += tpl.headerCell.resolve(getParams.call(that, { + column: column, icon: icon, sortable: sorting && column.sortable && css.sortable || "", + css: ((align === "right") ? css.right : (align === "center") ? + css.center : css.left) + cssClass, + style: (column.width == null) ? "" : "width:" + column.width + ";" })); + } + }); - if ($(this).prop("checked")) - { - that.select(); - } - else + headerRow.html(html); + + if (sorting) + { + var sortingSelector = getCssSelector(css.sortable); + headerRow.off("click" + namespace, sortingSelector) + .on("click" + namespace, sortingSelector, function (e) { - that.deselect(); - } - }); - } -} + e.preventDefault(); -function setTableHeaderSortDirection(element) -{ - var css = this.options.css, - iconSelector = getCssSelector(css.icon), - columnId = element.data("column-id") || element.parents("th").first().data("column-id"), - sortOrder = this.sortDictionary[columnId], - icon = element.find(iconSelector); + setTableHeaderSortDirection.call(that, $(this)); + sortRows.call(that); + loadData.call(that); + }); + } - if (!this.options.multiSort) - { - element.parents("tr").first().find(iconSelector).removeClass(css.iconDown + " " + css.iconUp); - this.sortDictionary = {}; - for (var i = 0; i < this.columns.length; i++) + // todo: create a own function for that piece of code + if (this.selection && this.options.multiSelect) { - localStorage.removeItem('sortColumns[' + this.uid + '][' + this.columns[i].id + ']'); + var selectBoxSelector = getCssSelector(css.selectBox); + headerRow.off("click" + namespace, selectBoxSelector) + .on("click" + namespace, selectBoxSelector, function(e) + { + e.stopPropagation(); + + if ($(this).prop("checked")) + { + that.select(); + } + else + { + that.deselect(); + } + }); } } - if (sortOrder && sortOrder === "asc") - { - this.sortDictionary[columnId] = "desc"; - localStorage.setItem('sortColumns[' + this.uid + '][' + columnId + ']', "desc"); - icon.removeClass(css.iconUp).addClass(css.iconDown); - } - else if (sortOrder && sortOrder === "desc") + function setTableHeaderSortDirection(element) { - if (this.options.multiSort) + var css = this.options.css, + iconSelector = getCssSelector(css.icon), + columnId = element.data("column-id") || element.parents("th").first().data("column-id"), + sortOrder = this.sortDictionary[columnId], + icon = element.find(iconSelector); + + if (!this.options.multiSort) { - var newSort = {}; - for (var key in this.sortDictionary) + element.parents("tr").first().find(iconSelector).removeClass(css.iconDown + " " + css.iconUp); + this.sortDictionary = {}; + for (var i = 0; i < this.columns.length; i++) + { + localStorage.removeItem('sortColumns[' + this.uid + '][' + this.columns[i].id + ']'); + } + } + + if (sortOrder && sortOrder === "asc") + { + this.sortDictionary[columnId] = "desc"; + localStorage.setItem('sortColumns[' + this.uid + '][' + columnId + ']', "desc"); + icon.removeClass(css.iconUp).addClass(css.iconDown); + } + else if (sortOrder && sortOrder === "desc") + { + if (this.options.multiSort) { - if (key !== columnId) + var newSort = {}; + for (var key in this.sortDictionary) { - newSort[key] = this.sortDictionary[key]; + if (key !== columnId) + { + newSort[key] = this.sortDictionary[key]; + } } + this.sortDictionary = newSort; + localStorage.removeItem('sortColumns[' + this.uid + '][' + columnId + ']'); + icon.removeClass(css.iconDown); + } + else + { + this.sortDictionary[columnId] = "asc"; + localStorage.setItem('sortColumns[' + this.uid + '][' + columnId + ']', "asc"); + icon.removeClass(css.iconDown).addClass(css.iconUp); } - this.sortDictionary = newSort; - localStorage.removeItem('sortColumns[' + this.uid + '][' + columnId + ']'); - icon.removeClass(css.iconDown); } else { this.sortDictionary[columnId] = "asc"; localStorage.setItem('sortColumns[' + this.uid + '][' + columnId + ']', "asc"); - icon.removeClass(css.iconDown).addClass(css.iconUp); + icon.addClass(css.iconUp); } } - else + + function replacePlaceHolder(placeholder, element) { - this.sortDictionary[columnId] = "asc"; - localStorage.setItem('sortColumns[' + this.uid + '][' + columnId + ']', "asc"); - icon.addClass(css.iconUp); + placeholder.each(function (index, item) + { + // todo: check how append is implemented. Perhaps cloning here is superfluous. + $(item).before(element.clone(true)).remove(); + }); } -} -function replacePlaceHolder(placeholder, element) -{ - placeholder.each(function (index, item) + function showLoading() { - // todo: check how append is implemented. Perhaps cloning here is superfluous. - $(item).before(element.clone(true)).remove(); - }); -} - -function showLoading() -{ - var that = this; + var that = this; - window.setTimeout(function() - { - if (that.element._bgAria("busy") === "true") + window.setTimeout(function() { - var tpl = that.options.templates, - thead = that.element.children("thead").first(), - tbody = that.element.children("tbody").first(), - firstCell = tbody.find("tr > td").first(), - padding = (that.element.height() - thead.height()) - (firstCell.height() + 20), - count = that.columns.where(isVisible).length; - - if (that.selection) - { - count = count + 1; - } - tbody.html(tpl.loading.resolve(getParams.call(that, { columns: count }))); - if (that.rowCount !== -1 && padding > 0) + if (that.element._bgAria("busy") === "true") { - tbody.find("tr > td").css("padding", "20px 0 " + padding + "px"); + var tpl = that.options.templates, + thead = that.element.children("thead").first(), + tbody = that.element.children("tbody").first(), + firstCell = tbody.find("tr > td").first(), + padding = (that.element.height() - thead.height()) - (firstCell.height() + 20), + count = that.columns.where(isVisible).length; + + if (that.selection) + { + count = count + 1; + } + tbody.html(tpl.loading.resolve(getParams.call(that, { columns: count }))); + if (that.rowCount !== -1 && padding > 0) + { + tbody.find("tr > td").css("padding", "20px 0 " + padding + "px"); + } } - } - }, 250); -} - -function sortRows() -{ - var sortArray = []; + }, 250); + } - function sort(x, y, current) + function sortRows() { - current = current || 0; - var next = current + 1, - item = sortArray[current]; + var sortArray = []; - function sortOrder(value) + function sort(x, y, current) { - return (item.order === "asc") ? value : value * -1; - } + current = current || 0; + var next = current + 1, + item = sortArray[current]; - return (x[item.id] > y[item.id]) ? sortOrder(1) : - (x[item.id] < y[item.id]) ? sortOrder(-1) : - (sortArray.length > next) ? sort(x, y, next) : 0; - } + function sortOrder(value) + { + return (item.order === "asc") ? value : value * -1; + } - if (!this.options.ajax) - { - var that = this; + return (x[item.id] > y[item.id]) ? sortOrder(1) : + (x[item.id] < y[item.id]) ? sortOrder(-1) : + (sortArray.length > next) ? sort(x, y, next) : 0; + } - for (var key in this.sortDictionary) + if (!this.options.ajax) { - if (this.options.multiSort || sortArray.length === 0) + var that = this; + + for (var key in this.sortDictionary) { - sortArray.push({ - id: key, - order: this.sortDictionary[key] - }); + if (this.options.multiSort || sortArray.length === 0) + { + sortArray.push({ + id: key, + order: this.sortDictionary[key] + }); + } } - } - if (sortArray.length > 0) - { - this.rows.sort(sort); + if (sortArray.length > 0) + { + this.rows.sort(sort); + } } } - } - -// GRID PUBLIC CLASS DEFINITION -// ==================== - -/** - * Represents the jQuery Bootgrid plugin. - * - * @class Grid - * @constructor - * @param element {Object} The corresponding DOM element. - * @param options {Object} The options to override default settings. - * @chainable - **/ -var Grid = function(element, options) -{ - this.element = $(element); - this.origin = this.element.clone(); - this.options = $.extend(true, {}, Grid.defaults, this.element.data(), options); - // overrides rowCount explicitly because deep copy ($.extend) leads to strange behaviour - var rowCount = this.options.rowCount = this.element.data().rowCount || options.rowCount || this.options.rowCount; - this.columns = []; - this.current = 1; - this.currentRows = []; - this.identifier = null; // The first column ID that is marked as identifier - this.selection = false; - this.converter = null; // The converter for the column that is marked as identifier - this.rowCount = ($.isArray(rowCount)) ? rowCount[0] : rowCount; - this.rows = []; - this.searchPhrase = ""; - this.selectedRows = []; - this.sortDictionary = {}; - this.total = 0; - this.totalPages = 0; - this.cachedParams = { - lbl: this.options.labels, - css: this.options.css, - ctx: {} - }; - this.header = null; - this.footer = null; - this.xqr = null; - this.uid = window.location.pathname + "#" + this.element.attr('id'); - - // todo: implement cache -}; - -/** - * An object that represents the default settings. - * - * @static - * @class defaults - * @for Grid - * @example - * // Global approach - * $.bootgrid.defaults.selection = true; - * @example - * // Initialization approach - * $("#bootgrid").bootgrid({ selection = true }); - **/ -Grid.defaults = { - navigation: 3, // it's a flag: 0 = none, 1 = top, 2 = bottom, 3 = both (top and bottom) - padding: 2, // page padding (pagination) - columnSelection: true, - rowCount: [10, 25, 50, -1], // rows per page int or array of int (-1 represents "All") - /** - * Enables row selection (to enable multi selection see also `multiSelect`). Default value is `false`. - * - * @property selection - * @type Boolean - * @default false - * @for defaults - * @since 1.0.0 - **/ - selection: false, + // GRID PUBLIC CLASS DEFINITION + // ==================== /** - * Enables multi selection (`selection` must be set to `true` as well). Default value is `false`. + * Represents the jQuery Bootgrid plugin. * - * @property multiSelect - * @type Boolean - * @default false - * @for defaults - * @since 1.0.0 + * @class Grid + * @constructor + * @param element {Object} The corresponding DOM element. + * @param options {Object} The options to override default settings. + * @chainable **/ - multiSelect: false, + var Grid = function(element, options) + { + this.element = $(element); + this.origin = this.element.clone(); + this.options = $.extend(true, {}, Grid.defaults, this.element.data(), options); + // overrides rowCount explicitly because deep copy ($.extend) leads to strange behaviour + var rowCount = this.options.rowCount = this.element.data().rowCount || options.rowCount || this.options.rowCount; + this.columns = []; + this.current = 1; + this.currentRows = []; + this.identifier = null; // The first column ID that is marked as identifier + this.selection = false; + this.converter = null; // The converter for the column that is marked as identifier + this.rowCount = ($.isArray(rowCount)) ? rowCount[0] : rowCount; + this.rows = []; + this.searchPhrase = ""; + this.selectedRows = []; + this.sortDictionary = {}; + this.total = 0; + this.totalPages = 0; + this.cachedParams = { + lbl: this.options.labels, + css: this.options.css, + ctx: {} + }; + this.header = null; + this.footer = null; + this.xqr = null; + this.uid = window.location.pathname + "#" + this.element.attr('id'); - /** - * Enables entire row click selection (`selection` must be set to `true` as well). Default value is `false`. - * - * @property rowSelect - * @type Boolean - * @default false - * @for defaults - * @since 1.1.0 - **/ - rowSelect: false, + // todo: implement cache + }; /** - * Defines whether the row selection is saved internally on filtering, paging and sorting - * (even if the selected rows are not visible). + * An object that represents the default settings. * - * @property keepSelection - * @type Boolean - * @default false - * @for defaults - * @since 1.1.0 + * @static + * @class defaults + * @for Grid + * @example + * // Global approach + * $.bootgrid.defaults.selection = true; + * @example + * // Initialization approach + * $("#bootgrid").bootgrid({ selection = true }); **/ - keepSelection: false, - - highlightRows: false, // highlights new rows (find the page of the first new row) - sorting: true, - multiSort: false, + Grid.defaults = { + navigation: 3, // it's a flag: 0 = none, 1 = top, 2 = bottom, 3 = both (top and bottom) + padding: 2, // page padding (pagination) + columnSelection: true, + rowCount: [10, 25, 50, -1], // rows per page int or array of int (-1 represents "All") - /** - * General search settings to configure the search field behaviour. - * - * @property searchSettings - * @type Object - * @for defaults - * @since 1.2.0 - **/ - searchSettings: { /** - * The time in milliseconds to wait before search gets executed. + * Enables row selection (to enable multi selection see also `multiSelect`). Default value is `false`. * - * @property delay - * @type Number - * @default 250 - * @for searchSettings + * @property selection + * @type Boolean + * @default false + * @for defaults + * @since 1.0.0 **/ - delay: 250, + selection: false, /** - * The characters to type before the search gets executed. + * Enables multi selection (`selection` must be set to `true` as well). Default value is `false`. * - * @property characters - * @type Number - * @default 1 - * @for searchSettings + * @property multiSelect + * @type Boolean + * @default false + * @for defaults + * @since 1.0.0 **/ - characters: 1 - }, - - /** - * Defines whether the data shall be loaded via an asynchronous HTTP (Ajax) request. - * - * @property ajax - * @type Boolean - * @default false - * @for defaults - **/ - ajax: false, + multiSelect: false, - /** - * Ajax request settings that shall be used for server-side communication. - * All setting except data, error, success and url can be overridden. - * For the full list of settings go to http://api.jquery.com/jQuery.ajax/. - * - * @property ajaxSettings - * @type Object - * @for defaults - * @since 1.2.0 - **/ - ajaxSettings: { /** - * Specifies the HTTP method which shall be used when sending data to the server. - * Go to http://api.jquery.com/jQuery.ajax/ for more details. - * This setting is overriden for backward compatibility. + * Enables entire row click selection (`selection` must be set to `true` as well). Default value is `false`. * - * @property method - * @type String - * @default "POST" - * @for ajaxSettings + * @property rowSelect + * @type Boolean + * @default false + * @for defaults + * @since 1.1.0 **/ - method: "POST" - }, - - /** - * Enriches the request object with additional properties. Either a `PlainObject` or a `Function` - * that returns a `PlainObject` can be passed. Default value is `{}`. - * - * @property post - * @type Object|Function - * @default function (request) { return request; } - * @for defaults - * @deprecated Use instead `requestHandler` - **/ - post: {}, // or use function () { return {}; } (reserved properties are "current", "rowCount", "sort" and "searchPhrase") - - /** - * Sets the data URL to a data service (e.g. a REST service). Either a `String` or a `Function` - * that returns a `String` can be passed. Default value is `""`. - * - * @property url - * @type String|Function - * @default "" - * @for defaults - **/ - url: "", // or use function () { return ""; } - - /** - * Defines whether the search is case sensitive or insensitive. - * - * @property caseSensitive - * @type Boolean - * @default true - * @for defaults - * @since 1.1.0 - **/ - caseSensitive: true, - - // note: The following properties should not be used via data-api attributes - - /** - * Transforms the JSON request object in what ever is needed on the server-side implementation. - * - * @property requestHandler - * @type Function - * @default function (request) { return request; } - * @for defaults - * @since 1.1.0 - **/ - requestHandler: function (request) { return request; }, - - /** - * Transforms the response object into the expected JSON response object. - * - * @property responseHandler - * @type Function - * @default function (response) { return response; } - * @for defaults - * @since 1.1.0 - **/ - responseHandler: function (response) { return response; }, - - /** - * A list of converters. - * - * @property converters - * @type Object - * @for defaults - * @since 1.0.0 - **/ - converters: { - numeric: { - from: function (value) { return +value; }, // converts from string to numeric - to: function (value) { - // converts from numeric to string - if (value === undefined) { - return ""; - } else { - return value + ""; - } - } - }, - string: { - // default converter - from: function (value) { return value; }, - to: function (value) { return value; } - }, - datetime: { - // convert datetime type fields from unix timestamp to readable format - from: function (value) { - return value ? moment(parseInt(value)*1000) : ""; - }, - to: function (value) { - return value ? value.format("lll") : ""; - } - }, - memsize: { - from: function (value) { - var modifiers = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']; - - var ret = parseInt(value); - var modifier = value.slice(-1).toUpperCase(); - for (var exponent = modifiers.length - 1; exponent >= 0; exponent--) { - if (modifier === modifiers[exponent]) { - ret *= Math.pow(1024, exponent); - break; - } - } - return ret; - }, - to: function (value) { - var modifiers = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']; - - for (var exponent = modifiers.length - 1; exponent >= 0; exponent--) { - if (value >= (5 * Math.pow(1024, exponent))) { - return parseInt(value / Math.pow(1024, exponent)) + modifiers[exponent]; - } - } - return parseInt(value) + ''; - } - }, - notprefixable: { - to: function (value) { - if (value.not) { - return ' ' + value.val; - } else { - return value.val; - } - } - } - - }, - - /** - * Contains all css classes. - * - * @property css - * @type Object - * @for defaults - **/ - css: { - actions: "actions btn-group", // must be a unique class name or constellation of class names within the header and footer - center: "text-center", - columnHeaderAnchor: "column-header-anchor", // must be a unique class name or constellation of class names within the column header cell - columnHeaderText: "text", - dropDownItem: "dropdown-item", // must be a unique class name or constellation of class names within the actionDropDown, - dropDownItemButton: "dropdown-item-button", // must be a unique class name or constellation of class names within the actionDropDown - dropDownItemCheckbox: "dropdown-item-checkbox", // must be a unique class name or constellation of class names within the actionDropDown - dropDownMenu: "dropdown btn-group", // must be a unique class name or constellation of class names within the actionDropDown - dropDownMenuItems: "dropdown-menu pull-right", // must be a unique class name or constellation of class names within the actionDropDown - dropDownMenuText: "dropdown-text", // must be a unique class name or constellation of class names within the actionDropDown - footer: "bootgrid-footer container-fluid", - header: "bootgrid-header container-fluid", - icon: "icon glyphicon", - iconColumns: "glyphicon-th-list", - iconDown: "glyphicon-chevron-down", - iconRefresh: "glyphicon-refresh", - iconSearch: "glyphicon-search", - iconUp: "glyphicon-chevron-up", - infos: "infos", // must be a unique class name or constellation of class names within the header and footer, - left: "text-left", - pagination: "pagination", // must be a unique class name or constellation of class names within the header and footer - paginationButton: "button", // must be a unique class name or constellation of class names within the pagination + rowSelect: false, /** - * CSS class to select the parent div which activates responsive mode. + * Defines whether the row selection is saved internally on filtering, paging and sorting + * (even if the selected rows are not visible). * - * @property responsiveTable - * @type String - * @default "table-responsive" - * @for css + * @property keepSelection + * @type Boolean + * @default false + * @for defaults * @since 1.1.0 **/ - responsiveTable: "table-responsive", + keepSelection: false, - right: "text-right", - search: "search form-group", // must be a unique class name or constellation of class names within the header and footer - searchField: "search-field form-control", - selectBox: "select-box", // must be a unique class name or constellation of class names within the entire table - selectCell: "select-cell", // must be a unique class name or constellation of class names within the entire table + highlightRows: false, // highlights new rows (find the page of the first new row) + sorting: true, + multiSort: false, + resetButton: false, /** - * CSS class to highlight selected rows. + * General search settings to configure the search field behaviour. * - * @property selected - * @type String - * @default "active" - * @for css - * @since 1.1.0 + * @property searchSettings + * @type Object + * @for defaults + * @since 1.2.0 **/ - selected: "active", + searchSettings: { + /** + * The time in milliseconds to wait before search gets executed. + * + * @property delay + * @type Number + * @default 250 + * @for searchSettings + **/ + delay: 250, + + /** + * The characters to type before the search gets executed. + * + * @property characters + * @type Number + * @default 1 + * @for searchSettings + **/ + characters: 1 + }, - sortable: "sortable", - table: "bootgrid-table table" - }, + /** + * Defines whether the data shall be loaded via an asynchronous HTTP (Ajax) request. + * + * @property ajax + * @type Boolean + * @default false + * @for defaults + **/ + ajax: false, - /** - * A dictionary of formatters. - * - * @property formatters - * @type Object - * @for defaults - * @since 1.0.0 - **/ - formatters: {}, + /** + * Ajax request settings that shall be used for server-side communication. + * All setting except data, error, success and url can be overridden. + * For the full list of settings go to http://api.jquery.com/jQuery.ajax/. + * + * @property ajaxSettings + * @type Object + * @for defaults + * @since 1.2.0 + **/ + ajaxSettings: { + /** + * Specifies the HTTP method which shall be used when sending data to the server. + * Go to http://api.jquery.com/jQuery.ajax/ for more details. + * This setting is overriden for backward compatibility. + * + * @property method + * @type String + * @default "POST" + * @for ajaxSettings + **/ + method: "POST" + }, - /** - * Contains all labels. - * - * @property labels - * @type Object - * @for defaults - **/ - labels: { - all: "All", - infos: "Showing {{ctx.start}} to {{ctx.end}} of {{ctx.total}} entries", - loading: "Loading...", - noResults: "No results found!", - refresh: "Refresh", - search: "Search" - }, + /** + * Enriches the request object with additional properties. Either a `PlainObject` or a `Function` + * that returns a `PlainObject` can be passed. Default value is `{}`. + * + * @property post + * @type Object|Function + * @default function (request) { return request; } + * @for defaults + * @deprecated Use instead `requestHandler` + **/ + post: {}, // or use function () { return {}; } (reserved properties are "current", "rowCount", "sort" and "searchPhrase") - /** - * Specifies the mapping between status and contextual classes to color rows. - * - * @property statusMapping - * @type Object - * @for defaults - * @since 1.2.0 - **/ - statusMapping: { /** - * Specifies a successful or positive action. + * Sets the data URL to a data service (e.g. a REST service). Either a `String` or a `Function` + * that returns a `String` can be passed. Default value is `""`. * - * @property 0 - * @type String - * @for statusMapping + * @property url + * @type String|Function + * @default "" + * @for defaults **/ - 0: "success", + url: "", // or use function () { return ""; } /** - * Specifies a neutral informative change or action. + * Defines whether the search is case sensitive or insensitive. * - * @property 1 - * @type String - * @for statusMapping + * @property caseSensitive + * @type Boolean + * @default true + * @for defaults + * @since 1.1.0 **/ - 1: "info", + caseSensitive: true, + + // note: The following properties should not be used via data-api attributes /** - * Specifies a warning that might need attention. + * Transforms the JSON request object in what ever is needed on the server-side implementation. * - * @property 2 - * @type String - * @for statusMapping + * @property requestHandler + * @type Function + * @default function (request) { return request; } + * @for defaults + * @since 1.1.0 **/ - 2: "warning", + requestHandler: function (request) { return request; }, /** - * Specifies a dangerous or potentially negative action. + * Transforms the response object into the expected JSON response object. * - * @property 3 - * @type String - * @for statusMapping + * @property responseHandler + * @type Function + * @default function (response) { return response; } + * @for defaults + * @since 1.1.0 **/ - 3: "danger" - }, + responseHandler: function (response) { return response; }, - /** - * Contains all templates. - * - * @property templates - * @type Object - * @for defaults - **/ - templates: { - actionButton: "", - actionDropDown: "
    ", - actionDropDownItem: "
  • {{ctx.text}}
  • ", - actionDropDownCheckboxItem: "
  • ", - actions: "
    ", - body: "", - cell: "{{ctx.content}}", - footer: "

    ", - header: "

    ", - headerCell: "{{ctx.column.text}}{{ctx.icon}}", - icon: "", - infos: "
    {{lbl.infos}}
    ", - loading: "{{lbl.loading}}", - noResults: "{{lbl.noResults}}", - pagination: "
      ", - paginationItem: "
    • {{ctx.text}}
    • ", - rawHeaderCell: "{{ctx.content}}", // Used for the multi select box - row: "{{ctx.cells}}", - search: "
      ", - select: "" - } -}; - -/** - * Appends rows. - * - * @method append - * @param rows {Array} An array of rows to append - * @chainable - **/ -Grid.prototype.append = function(rows) -{ - if (this.options.ajax) - { - // todo: implement ajax PUT - } - else - { - var appendedRows = []; - for (var i = 0; i < rows.length; i++) - { - var row = rows[i]; - for (var j = 0; j < this.columns.length; j++) { - var column = this.columns[j]; - row[column.id] = column.converter.from(row[column.id]); - } - if (appendRow.call(this, row)) - { - appendedRows.push(row); + /** + * A list of converters. + * + * @property converters + * @type Object + * @for defaults + * @since 1.0.0 + **/ + converters: { + numeric: { + from: function (value) { return +value; }, // converts from string to numeric + to: function (value) { + // converts from numeric to string + if (value === undefined) { + return ""; + } else { + return value + ""; + } + } + }, + string: { + // default converter + from: function (value) { return value; }, + to: function (value) { return value; } + }, + datetime: { + // convert datetime type fields from unix timestamp to readable format + from: function (value) { + return value ? moment(parseInt(value)*1000) : ""; + }, + to: function (value) { + return value ? value.format("lll") : ""; + } + }, + memsize: { + from: function (value) { + var modifiers = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']; + + var ret = parseInt(value); + var modifier = value.slice(-1).toUpperCase(); + for (var exponent = modifiers.length - 1; exponent >= 0; exponent--) { + if (modifier === modifiers[exponent]) { + ret *= Math.pow(1024, exponent); + break; + } + } + return ret; + }, + to: function (value) { + var modifiers = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']; + + for (var exponent = modifiers.length - 1; exponent >= 0; exponent--) { + if (value >= (5 * Math.pow(1024, exponent))) { + return parseInt(value / Math.pow(1024, exponent)) + modifiers[exponent]; + } + } + return parseInt(value) + ''; + } + }, + notprefixable: { + to: function (value) { + if (value.not) { + return ' ' + value.val; + } else { + return value.val; + } + } } - } - sortRows.call(this); - highlightAppendedRows.call(this, appendedRows); - loadData.call(this); - this.element.trigger("appended" + namespace, [appendedRows]); - } - return this; -}; + }, -/** - * Removes all rows. - * - * @method clear - * @chainable - **/ -Grid.prototype.clear = function() -{ - if (this.options.ajax) - { - // todo: implement ajax POST - } - else - { - var removedRows = $.extend([], this.rows); - this.rows = []; - this.current = 1; - this.total = 0; - loadData.call(this); - this.element.trigger("cleared" + namespace, [removedRows]); - } + /** + * Contains all css classes. + * + * @property css + * @type Object + * @for defaults + **/ + css: { + actions: "actions btn-group", // must be a unique class name or constellation of class names within the header and footer + center: "text-center", + columnHeaderAnchor: "column-header-anchor", // must be a unique class name or constellation of class names within the column header cell + columnHeaderText: "text", + dropDownItem: "dropdown-item", // must be a unique class name or constellation of class names within the actionDropDown, + dropDownItemButton: "dropdown-item-button", // must be a unique class name or constellation of class names within the actionDropDown + dropDownItemCheckbox: "dropdown-item-checkbox", // must be a unique class name or constellation of class names within the actionDropDown + dropDownMenu: "dropdown btn-group", // must be a unique class name or constellation of class names within the actionDropDown + dropDownMenuItems: "dropdown-menu pull-right", // must be a unique class name or constellation of class names within the actionDropDown + dropDownMenuText: "dropdown-text", // must be a unique class name or constellation of class names within the actionDropDown + footer: "bootgrid-footer container-fluid", + header: "bootgrid-header container-fluid", + icon: "icon glyphicon", + iconColumns: "glyphicon-th-list", + iconDown: "glyphicon-chevron-down", + iconRefresh: "glyphicon-refresh", + iconSearch: "glyphicon-search", + iconUp: "glyphicon-chevron-up", + iconReset: "glyphicon-flash", + infos: "infos", // must be a unique class name or constellation of class names within the header and footer, + left: "text-left", + pagination: "pagination", // must be a unique class name or constellation of class names within the header and footer + paginationButton: "button", // must be a unique class name or constellation of class names within the pagination + + /** + * CSS class to select the parent div which activates responsive mode. + * + * @property responsiveTable + * @type String + * @default "table-responsive" + * @for css + * @since 1.1.0 + **/ + responsiveTable: "table-responsive", + + right: "text-right", + search: "search form-group", // must be a unique class name or constellation of class names within the header and footer + searchField: "search-field form-control", + selectBox: "select-box", // must be a unique class name or constellation of class names within the entire table + selectCell: "select-cell", // must be a unique class name or constellation of class names within the entire table + + /** + * CSS class to highlight selected rows. + * + * @property selected + * @type String + * @default "active" + * @for css + * @since 1.1.0 + **/ + selected: "active", + + sortable: "sortable", + table: "bootgrid-table table" + }, + + /** + * A dictionary of formatters. + * + * @property formatters + * @type Object + * @for defaults + * @since 1.0.0 + **/ + formatters: {}, - return this; -}; + /** + * Contains all labels. + * + * @property labels + * @type Object + * @for defaults + **/ + labels: { + all: "All", + infos: "Showing {{ctx.start}} to {{ctx.end}} of {{ctx.total}} entries", + loading: "Loading...", + noResults: "No results found!", + refresh: "Refresh", + reset: "Reset stored settings and reload the page", + search: "Search" + }, -/** - * Removes the control functionality completely and transforms the current state to the initial HTML structure. - * - * @method destroy - * @chainable - **/ -Grid.prototype.destroy = function() -{ - // todo: this method has to be optimized (the complete initial state must be restored) - $(window).off(namespace); - if (this.options.navigation & 1) - { - this.header.remove(); - } - if (this.options.navigation & 2) - { - this.footer.remove(); - } - this.element.before(this.origin).remove(); - - return this; -}; - -/** - * Resets the state and reloads rows. - * - * @method reload - * @chainable - **/ -Grid.prototype.reload = function() -{ - this.current = 1; // reset - loadData.call(this); - - return this; -}; - -/** - * Removes rows by ids. Removes selected rows if no ids are provided. - * - * @method remove - * @param [rowsIds] {Array} An array of rows ids to remove - * @chainable - **/ -Grid.prototype.remove = function(rowIds) -{ - if (this.identifier != null) - { - var that = this; + /** + * Specifies the mapping between status and contextual classes to color rows. + * + * @property statusMapping + * @type Object + * @for defaults + * @since 1.2.0 + **/ + statusMapping: { + /** + * Specifies a successful or positive action. + * + * @property 0 + * @type String + * @for statusMapping + **/ + 0: "success", + + /** + * Specifies a neutral informative change or action. + * + * @property 1 + * @type String + * @for statusMapping + **/ + 1: "info", + + /** + * Specifies a warning that might need attention. + * + * @property 2 + * @type String + * @for statusMapping + **/ + 2: "warning", + + /** + * Specifies a dangerous or potentially negative action. + * + * @property 3 + * @type String + * @for statusMapping + **/ + 3: "danger" + }, + /** + * Contains all templates. + * + * @property templates + * @type Object + * @for defaults + **/ + templates: { + actionButton: "", + actionDropDown: "
        ", + actionDropDownItem: "
      • {{ctx.text}}
      • ", + actionDropDownCheckboxItem: "
      • ", + actions: "
        ", + body: "", + cell: "{{ctx.content}}", + footer: "

        ", + header: "

        ", + headerCell: "{{ctx.column.text}}{{ctx.icon}}", + icon: "", + infos: "
        {{lbl.infos}}
        ", + loading: "{{lbl.loading}}", + noResults: "{{lbl.noResults}}", + pagination: "
          ", + paginationItem: "
        • {{ctx.text}}
        • ", + rawHeaderCell: "{{ctx.content}}", // Used for the multi select box + row: "{{ctx.cells}}", + search: "
          ", + select: "" + } + }; + + /** + * Appends rows. + * + * @method append + * @param rows {Array} An array of rows to append + * @chainable + **/ + Grid.prototype.append = function(rows) + { if (this.options.ajax) { - // todo: implement ajax DELETE + // todo: implement ajax PUT } else { - rowIds = rowIds || this.selectedRows; - var id, - removedRows = []; - - for (var i = 0; i < rowIds.length; i++) + var appendedRows = []; + for (var i = 0; i < rows.length; i++) { - id = rowIds[i]; - - for (var j = 0; j < this.rows.length; j++) + var row = rows[i]; + for (var j = 0; j < this.columns.length; j++) { + var column = this.columns[j]; + row[column.id] = column.converter.from(row[column.id]); + } + if (appendRow.call(this, row)) { - if (this.rows[j][this.identifier] === id) - { - removedRows.push(this.rows[j]); - this.rows.splice(j, 1); - break; - } + appendedRows.push(row); } } - - this.current = 1; // reset + sortRows.call(this); + highlightAppendedRows.call(this, appendedRows); loadData.call(this); - this.element.trigger("removed" + namespace, [removedRows]); + this.element.trigger("appended" + namespace, [appendedRows]); } - } - return this; -}; - -/** - * Searches in all rows for a specific phrase (but only in visible cells). - * The search filter will be reseted, if no argument is provided. - * - * @method search - * @param [phrase] {String} The phrase to search for - * @chainable - **/ -Grid.prototype.search = function(phrase) -{ - phrase = phrase || ""; + return this; + }; - if (this.searchPhrase !== phrase) + /** + * Removes all rows. + * + * @method clear + * @chainable + **/ + Grid.prototype.clear = function() { - var selector = getCssSelector(this.options.css.searchField), - searchFields = findFooterAndHeaderItems.call(this, selector); - searchFields.val(phrase); - } + if (this.options.ajax) + { + // todo: implement ajax POST + } + else + { + var removedRows = $.extend([], this.rows); + this.rows = []; + this.current = 1; + this.total = 0; + loadData.call(this); + this.element.trigger("cleared" + namespace, [removedRows]); + } - executeSearch.call(this, phrase); + return this; + }; + /** + * Removes the control functionality completely and transforms the current state to the initial HTML structure. + * + * @method destroy + * @chainable + **/ + Grid.prototype.destroy = function() + { + // todo: this method has to be optimized (the complete initial state must be restored) + $(window).off(namespace); + if (this.options.navigation & 1) + { + this.header.remove(); + } + if (this.options.navigation & 2) + { + this.footer.remove(); + } + this.element.before(this.origin).remove(); - return this; -}; + return this; + }; -/** - * Selects rows by ids. Selects all visible rows if no ids are provided. - * In server-side scenarios only visible rows are selectable. - * - * @method select - * @param [rowsIds] {Array} An array of rows ids to select - * @chainable - **/ -Grid.prototype.select = function(rowIds) -{ - if (this.selection) + /** + * Resets the state and reloads rows. + * + * @method reload + * @chainable + **/ + Grid.prototype.reload = function() { - rowIds = rowIds || this.currentRows.propValues(this.identifier); + this.current = 1; // reset + loadData.call(this); - var id, i, - selectedRows = []; + return this; + }; - while (rowIds.length > 0 && !(!this.options.multiSelect && selectedRows.length === 1)) + /** + * Removes rows by ids. Removes selected rows if no ids are provided. + * + * @method remove + * @param [rowsIds] {Array} An array of rows ids to remove + * @chainable + **/ + Grid.prototype.remove = function(rowIds) + { + if (this.identifier != null) { - id = rowIds.pop(); - if ($.inArray(id, this.selectedRows) === -1) + var that = this; + + if (this.options.ajax) { - for (i = 0; i < this.currentRows.length; i++) + // todo: implement ajax DELETE + } + else + { + rowIds = rowIds || this.selectedRows; + var id, + removedRows = []; + + for (var i = 0; i < rowIds.length; i++) { - if (this.currentRows[i][this.identifier] === id) + id = rowIds[i]; + + for (var j = 0; j < this.rows.length; j++) { - selectedRows.push(this.currentRows[i]); - this.selectedRows.push(id); - break; + if (this.rows[j][this.identifier] === id) + { + removedRows.push(this.rows[j]); + this.rows.splice(j, 1); + break; + } } } + + this.current = 1; // reset + loadData.call(this); + this.element.trigger("removed" + namespace, [removedRows]); } } - if (selectedRows.length > 0) + return this; + }; + + /** + * Searches in all rows for a specific phrase (but only in visible cells). + * The search filter will be reseted, if no argument is provided. + * + * @method search + * @param [phrase] {String} The phrase to search for + * @chainable + **/ + Grid.prototype.search = function(phrase) + { + phrase = phrase || ""; + + if (this.searchPhrase !== phrase) { - var selectBoxSelector = getCssSelector(this.options.css.selectBox), - selectMultiSelectBox = this.selectedRows.length >= this.currentRows.length; + var selector = getCssSelector(this.options.css.searchField), + searchFields = findFooterAndHeaderItems.call(this, selector); + searchFields.val(phrase); + } - i = 0; - while (!this.options.keepSelection && selectMultiSelectBox && i < this.currentRows.length) - { - selectMultiSelectBox = ($.inArray(this.currentRows[i++][this.identifier], this.selectedRows) !== -1); - } - this.element.find("thead " + selectBoxSelector).prop("checked", selectMultiSelectBox); + executeSearch.call(this, phrase); + + + return this; + }; + + /** + * Selects rows by ids. Selects all visible rows if no ids are provided. + * In server-side scenarios only visible rows are selectable. + * + * @method select + * @param [rowsIds] {Array} An array of rows ids to select + * @chainable + **/ + Grid.prototype.select = function(rowIds) + { + if (this.selection) + { + rowIds = rowIds || this.currentRows.propValues(this.identifier); + + var id, i, + selectedRows = []; - if (!this.options.multiSelect) + while (rowIds.length > 0 && !(!this.options.multiSelect && selectedRows.length === 1)) { - this.element.find("tbody > tr " + selectBoxSelector + ":checked") - .trigger("click" + namespace); + id = rowIds.pop(); + if ($.inArray(id, this.selectedRows) === -1) + { + for (i = 0; i < this.currentRows.length; i++) + { + if (this.currentRows[i][this.identifier] === id) + { + selectedRows.push(this.currentRows[i]); + this.selectedRows.push(id); + break; + } + } + } } - for (i = 0; i < this.selectedRows.length; i++) + if (selectedRows.length > 0) { - this.element.find("tbody > tr[data-row-id=\"" + this.selectedRows[i] + "\"]") - .addClass(this.options.css.selected)._bgAria("selected", "true") - .find(selectBoxSelector).prop("checked", true); - } + var selectBoxSelector = getCssSelector(this.options.css.selectBox), + selectMultiSelectBox = this.selectedRows.length >= this.currentRows.length; + + i = 0; + while (!this.options.keepSelection && selectMultiSelectBox && i < this.currentRows.length) + { + selectMultiSelectBox = ($.inArray(this.currentRows[i++][this.identifier], this.selectedRows) !== -1); + } + this.element.find("thead " + selectBoxSelector).prop("checked", selectMultiSelectBox); + + if (!this.options.multiSelect) + { + this.element.find("tbody > tr " + selectBoxSelector + ":checked") + .trigger("click" + namespace); + } - this.element.trigger("selected" + namespace, [selectedRows]); + for (i = 0; i < this.selectedRows.length; i++) + { + this.element.find("tbody > tr[data-row-id=\"" + this.selectedRows[i] + "\"]") + .addClass(this.options.css.selected)._bgAria("selected", "true") + .find(selectBoxSelector).prop("checked", true); + } + + this.element.trigger("selected" + namespace, [selectedRows]); + } } - } - return this; -}; - -/** - * Deselects rows by ids. Deselects all visible rows if no ids are provided. - * In server-side scenarios only visible rows are deselectable. - * - * @method deselect - * @param [rowsIds] {Array} An array of rows ids to deselect - * @chainable - **/ -Grid.prototype.deselect = function(rowIds) -{ - if (this.selection) + return this; + }; + + /** + * Deselects rows by ids. Deselects all visible rows if no ids are provided. + * In server-side scenarios only visible rows are deselectable. + * + * @method deselect + * @param [rowsIds] {Array} An array of rows ids to deselect + * @chainable + **/ + Grid.prototype.deselect = function(rowIds) { - rowIds = rowIds || this.currentRows.propValues(this.identifier); + if (this.selection) + { + rowIds = rowIds || this.currentRows.propValues(this.identifier); - var id, i, pos, - deselectedRows = []; + var id, i, pos, + deselectedRows = []; - while (rowIds.length > 0) - { - id = rowIds.pop(); - pos = $.inArray(id, this.selectedRows); - if (pos !== -1) + while (rowIds.length > 0) { - for (i = 0; i < this.currentRows.length; i++) + id = rowIds.pop(); + pos = $.inArray(id, this.selectedRows); + if (pos !== -1) { - if (this.currentRows[i][this.identifier] === id) + for (i = 0; i < this.currentRows.length; i++) { - deselectedRows.push(this.currentRows[i]); - this.selectedRows.splice(pos, 1); - break; + if (this.currentRows[i][this.identifier] === id) + { + deselectedRows.push(this.currentRows[i]); + this.selectedRows.splice(pos, 1); + break; + } } } } - } - - if (deselectedRows.length > 0) - { - var selectBoxSelector = getCssSelector(this.options.css.selectBox); - this.element.find("thead " + selectBoxSelector).prop("checked", false); - for (i = 0; i < deselectedRows.length; i++) + if (deselectedRows.length > 0) { - this.element.find("tbody > tr[data-row-id=\"" + deselectedRows[i][this.identifier] + "\"]") - .removeClass(this.options.css.selected)._bgAria("selected", "false") - .find(selectBoxSelector).prop("checked", false); - } + var selectBoxSelector = getCssSelector(this.options.css.selectBox); + + this.element.find("thead " + selectBoxSelector).prop("checked", false); + for (i = 0; i < deselectedRows.length; i++) + { + this.element.find("tbody > tr[data-row-id=\"" + deselectedRows[i][this.identifier] + "\"]") + .removeClass(this.options.css.selected)._bgAria("selected", "false") + .find(selectBoxSelector).prop("checked", false); + } - this.element.trigger("deselected" + namespace, [deselectedRows]); + this.element.trigger("deselected" + namespace, [deselectedRows]); + } } - } - return this; -}; - -/** - * Sorts the rows by a given sort descriptor dictionary. - * The sort filter will be reseted, if no argument is provided. - * - * @method sort - * @param [dictionary] {Object} A sort descriptor dictionary that contains the sort information - * @chainable - **/ -Grid.prototype.sort = function(dictionary) -{ - var values = (dictionary) ? $.extend({}, dictionary) : {}; + return this; + }; - if (values === this.sortDictionary) + /** + * Sorts the rows by a given sort descriptor dictionary. + * The sort filter will be reseted, if no argument is provided. + * + * @method sort + * @param [dictionary] {Object} A sort descriptor dictionary that contains the sort information + * @chainable + **/ + Grid.prototype.sort = function(dictionary) { - return this; - } + var values = (dictionary) ? $.extend({}, dictionary) : {}; - this.sortDictionary = values; - renderTableHeader.call(this); - sortRows.call(this); - loadData.call(this); - - return this; -}; - -/** - * Gets a list of the column settings. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getColumnSettings - * @return {Array} Returns a list of the column settings. - * @since 1.2.0 - **/ -Grid.prototype.getColumnSettings = function() -{ - return $.merge([], this.columns); -}; - -/** - * Gets the current page index. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getCurrentPage - * @return {Number} Returns the current page index. - * @since 1.2.0 - **/ -Grid.prototype.getCurrentPage = function() -{ - return this.current; -}; - -/** - * Gets the current rows. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getCurrentPage - * @return {Array} Returns the current rows. - * @since 1.2.0 - **/ -Grid.prototype.getCurrentRows = function() -{ - return $.merge([], this.currentRows); -}; - -/** - * Gets a number represents the row count per page. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getRowCount - * @return {Number} Returns the row count per page. - * @since 1.2.0 - **/ -Grid.prototype.getRowCount = function() -{ - return this.rowCount; -}; - -/** - * Gets the actual search phrase. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getSearchPhrase - * @return {String} Returns the actual search phrase. - * @since 1.2.0 - **/ -Grid.prototype.getSearchPhrase = function() -{ - return this.searchPhrase; -}; - -/** - * Gets the complete list of currently selected rows. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getSelectedRows - * @return {Array} Returns all selected rows. - * @since 1.2.0 - **/ -Grid.prototype.getSelectedRows = function() -{ - return $.merge([], this.selectedRows); -}; - -/** - * Gets the sort dictionary which represents the state of column sorting. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getSortDictionary - * @return {Object} Returns the sort dictionary. - * @since 1.2.0 - **/ -Grid.prototype.getSortDictionary = function() -{ - return $.extend({}, this.sortDictionary); -}; - -/** - * Gets a number represents the total page count. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getTotalPageCount - * @return {Number} Returns the total page count. - * @since 1.2.0 - **/ -Grid.prototype.getTotalPageCount = function() -{ - return this.totalPages; -}; - -/** - * Gets a number represents the total row count. - * This method returns only for the first grid instance a value. - * Therefore be sure that only one grid instance is catched by your selector. - * - * @method getTotalRowCount - * @return {Number} Returns the total row count. - * @since 1.2.0 - **/ -Grid.prototype.getTotalRowCount = function() -{ - return this.total; + if (values === this.sortDictionary) + { + return this; + } + + this.sortDictionary = values; + renderTableHeader.call(this); + sortRows.call(this); + loadData.call(this); + + return this; }; -// GRID COMMON TYPE EXTENSIONS -// ============ + /** + * Gets a list of the column settings. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getColumnSettings + * @return {Array} Returns a list of the column settings. + * @since 1.2.0 + **/ + Grid.prototype.getColumnSettings = function() + { + return $.merge([], this.columns); + }; -$.fn.extend({ - _bgAria: function (name, value) + /** + * Gets the current page index. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getCurrentPage + * @return {Number} Returns the current page index. + * @since 1.2.0 + **/ + Grid.prototype.getCurrentPage = function() { - return (value) ? this.attr("aria-" + name, value) : this.attr("aria-" + name); - }, + return this.current; + }; - _bgBusyAria: function(busy) + /** + * Gets the current rows. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getCurrentPage + * @return {Array} Returns the current rows. + * @since 1.2.0 + **/ + Grid.prototype.getCurrentRows = function() { - return (busy == null || busy) ? - this._bgAria("busy", "true") : - this._bgAria("busy", "false"); - }, + return $.merge([], this.currentRows); + }; - _bgRemoveAria: function (name) + /** + * Gets a number represents the row count per page. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getRowCount + * @return {Number} Returns the row count per page. + * @since 1.2.0 + **/ + Grid.prototype.getRowCount = function() { - return this.removeAttr("aria-" + name); - }, + return this.rowCount; + }; - _bgEnableAria: function (enable) + /** + * Gets the actual search phrase. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getSearchPhrase + * @return {String} Returns the actual search phrase. + * @since 1.2.0 + **/ + Grid.prototype.getSearchPhrase = function() { - return (enable == null || enable) ? - this.removeClass("disabled")._bgAria("disabled", "false") : - this.addClass("disabled")._bgAria("disabled", "true"); - }, + return this.searchPhrase; + }; - _bgEnableField: function (enable) + /** + * Gets the complete list of currently selected rows. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getSelectedRows + * @return {Array} Returns all selected rows. + * @since 1.2.0 + **/ + Grid.prototype.getSelectedRows = function() { - return (enable == null || enable) ? - this.removeAttr("disabled") : - this.attr("disabled", "disable"); - }, + return $.merge([], this.selectedRows); + }; - _bgShowAria: function (show) + /** + * Gets the sort dictionary which represents the state of column sorting. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getSortDictionary + * @return {Object} Returns the sort dictionary. + * @since 1.2.0 + **/ + Grid.prototype.getSortDictionary = function() { - return (show == null || show) ? - this.show()._bgAria("hidden", "false") : - this.hide()._bgAria("hidden", "true"); - }, + return $.extend({}, this.sortDictionary); + }; - _bgSelectAria: function (select) + /** + * Gets a number represents the total page count. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getTotalPageCount + * @return {Number} Returns the total page count. + * @since 1.2.0 + **/ + Grid.prototype.getTotalPageCount = function() { - return (select == null || select) ? - this.addClass("active")._bgAria("selected", "true") : - this.removeClass("active")._bgAria("selected", "false"); - }, + return this.totalPages; + }; - _bgId: function (id) + /** + * Gets a number represents the total row count. + * This method returns only for the first grid instance a value. + * Therefore be sure that only one grid instance is catched by your selector. + * + * @method getTotalRowCount + * @return {Number} Returns the total row count. + * @since 1.2.0 + **/ + Grid.prototype.getTotalRowCount = function() { - return (id) ? this.attr("id", id) : this.attr("id"); - } -}); + return this.total; + }; -if (!String.prototype.resolve) -{ - var formatter = { - "checked": function(value) + // GRID COMMON TYPE EXTENSIONS + // ============ + + $.fn.extend({ + _bgAria: function (name, value) { - if (typeof value === "boolean") - { - return (value) ? "checked=\"checked\"" : ""; - } - return value; + return (value) ? this.attr("aria-" + name, value) : this.attr("aria-" + name); + }, + + _bgBusyAria: function(busy) + { + return (busy == null || busy) ? + this._bgAria("busy", "true") : + this._bgAria("busy", "false"); + }, + + _bgRemoveAria: function (name) + { + return this.removeAttr("aria-" + name); + }, + + _bgEnableAria: function (enable) + { + return (enable == null || enable) ? + this.removeClass("disabled")._bgAria("disabled", "false") : + this.addClass("disabled")._bgAria("disabled", "true"); + }, + + _bgEnableField: function (enable) + { + return (enable == null || enable) ? + this.removeAttr("disabled") : + this.attr("disabled", "disable"); + }, + + _bgShowAria: function (show) + { + return (show == null || show) ? + this.show()._bgAria("hidden", "false") : + this.hide()._bgAria("hidden", "true"); + }, + + _bgSelectAria: function (select) + { + return (select == null || select) ? + this.addClass("active")._bgAria("selected", "true") : + this.removeClass("active")._bgAria("selected", "false"); + }, + + _bgId: function (id) + { + return (id) ? this.attr("id", id) : this.attr("id"); } - }; + }); - String.prototype.resolve = function (substitutes, prefixes) + if (!String.prototype.resolve) { - var result = this; - $.each(substitutes, function (key, value) - { - if (value != null && typeof value !== "function") + var formatter = { + "checked": function(value) { - if (typeof value === "object") + if (typeof value === "boolean") { - var keys = (prefixes) ? $.extend([], prefixes) : []; - keys.push(key); - result = result.resolve(value, keys) + ""; + return (value) ? "checked=\"checked\"" : ""; } - else + return value; + } + }; + + String.prototype.resolve = function (substitutes, prefixes) + { + var result = this; + $.each(substitutes, function (key, value) + { + if (value != null && typeof value !== "function") { - if (formatter && formatter[key] && typeof formatter[key] === "function") + if (typeof value === "object") { - value = formatter[key](value); + var keys = (prefixes) ? $.extend([], prefixes) : []; + keys.push(key); + result = result.resolve(value, keys) + ""; + } + else + { + if (formatter && formatter[key] && typeof formatter[key] === "function") + { + value = formatter[key](value); + } + key = (prefixes) ? prefixes.join(".") + "." + key : key; + var pattern = new RegExp("\\{\\{" + key + "\\}\\}", "gm"); + result = result.replace(pattern, (value.replace) ? value.replace(/\$/gi, "$") : value); } - key = (prefixes) ? prefixes.join(".") + "." + key : key; - var pattern = new RegExp("\\{\\{" + key + "\\}\\}", "gm"); - result = result.replace(pattern, (value.replace) ? value.replace(/\$/gi, "$") : value); } - } - }); - return result; - }; -} + }); + return result; + }; + } -if (!Array.prototype.first) -{ - Array.prototype.first = function (condition) + if (!Array.prototype.first) { - for (var i = 0; i < this.length; i++) + Array.prototype.first = function (condition) { - var item = this[i]; - if (condition(item)) + for (var i = 0; i < this.length; i++) { - return item; + var item = this[i]; + if (condition(item)) + { + return item; + } } - } - return null; - }; -} + return null; + }; + } -if (!Array.prototype.contains) -{ - Array.prototype.contains = function (condition) + if (!Array.prototype.contains) { - for (var i = 0; i < this.length; i++) + Array.prototype.contains = function (condition) { - var item = this[i]; - if (condition(item)) + for (var i = 0; i < this.length; i++) { - return true; + var item = this[i]; + if (condition(item)) + { + return true; + } } - } - return false; - }; -} + return false; + }; + } -if (!Array.prototype.page) -{ - Array.prototype.page = function (page, size) + if (!Array.prototype.page) { - var skip = (page - 1) * size, - end = skip + size; - return (this.length > skip) ? - (this.length > end) ? this.slice(skip, end) : - this.slice(skip) : []; - }; -} + Array.prototype.page = function (page, size) + { + var skip = (page - 1) * size, + end = skip + size; + return (this.length > skip) ? + (this.length > end) ? this.slice(skip, end) : + this.slice(skip) : []; + }; + } -if (!Array.prototype.where) -{ - Array.prototype.where = function (condition) + if (!Array.prototype.where) { - var result = []; - for (var i = 0; i < this.length; i++) + Array.prototype.where = function (condition) { - var item = this[i]; - if (condition(item)) + var result = []; + for (var i = 0; i < this.length; i++) { - result.push(item); + var item = this[i]; + if (condition(item)) + { + result.push(item); + } } - } - return result; - }; -} + return result; + }; + } -if (!Array.prototype.propValues) -{ - Array.prototype.propValues = function (propName) + if (!Array.prototype.propValues) { - var result = []; - for (var i = 0; i < this.length; i++) + Array.prototype.propValues = function (propName) { - result.push(this[i][propName]); - } - return result; - }; + var result = []; + for (var i = 0; i < this.length; i++) + { + result.push(this[i][propName]); + } + return result; + }; } -// GRID PLUGIN DEFINITION -// ===================== - -var old = $.fn.bootgrid; + // GRID PLUGIN DEFINITION + // ===================== -$.fn.bootgrid = function (option) -{ - var args = Array.prototype.slice.call(arguments, 1), - returnValue = null, - elements = this.each(function (index) - { - var $this = $(this), - instance = $this.data(namespace), - options = typeof option === "object" && option; + var old = $.fn.bootgrid; - if (!instance && option === "destroy") - { - return; - } - if (!instance) - { - $this.data(namespace, (instance = new Grid(this, options))); - init.call(instance); - } - if (typeof option === "string") + $.fn.bootgrid = function (option) + { + var args = Array.prototype.slice.call(arguments, 1), + returnValue = null, + elements = this.each(function (index) { - if (option.indexOf("get") === 0 && index === 0) + var $this = $(this), + instance = $this.data(namespace), + options = typeof option === "object" && option; + + if (!instance && option === "destroy") { - returnValue = instance[option].apply(instance, args); + return; } - else if (option.indexOf("get") !== 0) + if (!instance) { - return instance[option].apply(instance, args); + $this.data(namespace, (instance = new Grid(this, options))); + init.call(instance); } - } - }); - return (typeof option === "string" && option.indexOf("get") === 0) ? returnValue : elements; -}; + if (typeof option === "string") + { + if (option.indexOf("get") === 0 && index === 0) + { + returnValue = instance[option].apply(instance, args); + } + else if (option.indexOf("get") !== 0) + { + return instance[option].apply(instance, args); + } + } + }); + return (typeof option === "string" && option.indexOf("get") === 0) ? returnValue : elements; + }; -$.fn.bootgrid.Constructor = Grid; + $.fn.bootgrid.Constructor = Grid; -// GRID NO CONFLICT -// =============== + // GRID NO CONFLICT + // =============== -$.fn.bootgrid.noConflict = function () -{ - $.fn.bootgrid = old; - return this; -}; + $.fn.bootgrid.noConflict = function () + { + $.fn.bootgrid = old; + return this; + }; -// GRID DATA-API -// ============ + // GRID DATA-API + // ============ $("[data-toggle=\"bootgrid\"]").bootgrid(); -})(jQuery, window); \ No newline at end of file +})(jQuery, window); diff --git a/dist/jquery.bootgrid.min.css b/dist/jquery.bootgrid.min.css index 706ed21..4ca1fc7 100644 --- a/dist/jquery.bootgrid.min.css +++ b/dist/jquery.bootgrid.min.css @@ -1,5 +1,5 @@ -/*! - * jQuery Bootgrid v1.4.0 - 12/31/2021 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2021 Deciso B.V. (http://www.jquery-bootgrid.com) +/*! + * jQuery Bootgrid v1.4.1 - 08/24/2022 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */.bootgrid-footer,.bootgrid-header{margin:15px 0}.bootgrid-footer a,.bootgrid-header a{outline:0}.bootgrid-footer .search,.bootgrid-header .search{display:inline-block;margin:0 20px 0 0;vertical-align:middle;width:180px}.bootgrid-footer .search .glyphicon,.bootgrid-header .search .glyphicon{top:0}.bootgrid-footer .search .fa,.bootgrid-header .search .fa{display:table-cell}.bootgrid-footer .search .search-field::-ms-clear,.bootgrid-footer .search.search-field::-ms-clear,.bootgrid-header .search .search-field::-ms-clear,.bootgrid-header .search.search-field::-ms-clear{display:none}.bootgrid-footer .pagination,.bootgrid-header .pagination{margin:0!important}.bootgrid-footer .infoBar,.bootgrid-header .actionBar{text-align:right}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu{text-align:left}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item{cursor:pointer;display:block;margin:0;padding:3px 20px;white-space:nowrap}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item:focus,.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item:hover,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item:focus,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item .dropdown-item-checkbox,.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item.dropdown-item-checkbox,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item .dropdown-item-checkbox,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item.dropdown-item-checkbox{margin:0 2px 4px 0;vertical-align:middle}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item.disabled,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item.disabled{cursor:not-allowed}.bootgrid-table{table-layout:fixed}.bootgrid-table a{outline:0}.bootgrid-table th>.column-header-anchor{color:#333;cursor:not-allowed;display:block;position:relative;text-decoration:none}.bootgrid-table th>.column-header-anchor.sortable{cursor:pointer}.bootgrid-table th>.column-header-anchor>.text{display:block;margin:0 16px 0 0;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.bootgrid-table th>.column-header-anchor>.icon{display:block;position:absolute;right:0;top:2px}.bootgrid-table th:active,.bootgrid-table th:hover{background:#fafafa}.bootgrid-table td{overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.bootgrid-table td.loading,.bootgrid-table td.no-results{background:#fff;text-align:center}.bootgrid-table td.select-cell,.bootgrid-table th.select-cell{text-align:center;width:30px}.bootgrid-table td.select-cell .select-box,.bootgrid-table th.select-cell .select-box{margin:0;outline:0}.table-responsive .bootgrid-table{table-layout:inherit!important}.table-responsive .bootgrid-table th>.column-header-anchor>.text{overflow:inherit!important;-ms-text-overflow:inherit!important;-o-text-overflow:inherit!important;text-overflow:inherit!important;white-space:inherit!important}.table-responsive .bootgrid-table td{overflow:inherit!important;-ms-text-overflow:inherit!important;-o-text-overflow:inherit!important;text-overflow:inherit!important;white-space:inherit!important} \ No newline at end of file diff --git a/dist/jquery.bootgrid.min.js b/dist/jquery.bootgrid.min.js index 21dd490..01e940e 100644 --- a/dist/jquery.bootgrid.min.js +++ b/dist/jquery.bootgrid.min.js @@ -1 +1 @@ -!function(p,h,t){"use strict";var f=".rs.jquery.bootgrid";function r(e){var i=this;return!this.rows.contains(function(t){return i.identifier&&t[i.identifier]===e[i.identifier]})&&(this.rows.push(e),!0)}function g(t){var e=this.footer?this.footer.find(t):p(),i=this.header?this.header.find(t):p();return p.merge(e,i)}function v(t){return t?p.extend({},this.cachedParams,{ctx:t}):this.cachedParams}function m(t){return"."+p.trim(t).replace(/\s+/gm,".")}function l(){this.element.trigger("initialize"+f),function(){var n=this,t=this.element.find("thead > tr").first(),r=!1;t.children().each(function(){var t=p(this),e=t.data(),i=localStorage.getItem("visibleColumns["+n.uid+"]["+e.columnId+"]"),s=localStorage.getItem("sortColumns["+n.uid+"]["+e.columnId+"]"),o={id:e.columnId,identifier:null==n.identifier&&e.identifier||!1,converter:n.options.converters[e.converter||e.type]||n.options.converters.string,text:t.html(),align:e.align||"left",headerAlign:e.headerAlign||"left",cssClass:e.cssClass||"",headerCssClass:e.headerCssClass||"",formatter:n.options.formatters[e.formatter]||null,order:r?null:null===s?"asc"===e.order||"desc"===e.order?e.order:null:"asc"===s||"desc"===s?s:null,searchable:!(!1===e.searchable),sortable:!(!1===e.sortable),visible:null===i?!(!1===e.visible):"true"===i,visibleInSelection:!(!1===e.visibleInSelection),width:p.isNumeric(e.width)?e.width+"px":"string"==typeof e.width?e.width:null};n.columns.push(o),null!=o.order&&(n.sortDictionary[o.id]=o.order),o.identifier&&(n.identifier=o.id,n.converter=o.converter),n.options.multiSort||null===o.order||(r=!0)})}.call(this),this.selection=this.options.selection&&null!=this.identifier,this.rowCount=localStorage.getItem("rowCount["+this.uid+"]")||this.rowCount,function(){if(!this.options.ajax){var e=this,t=this.element.find("tbody > tr");t.each(function(){var t=p(this),i=t.children("td"),s={};p.each(e.columns,function(t,e){s[e.id]=e.converter.from(i.eq(t).text())}),r.call(e,s)}),a.call(this,this.rows.length),D.call(this)}}.call(this),function(){var t=this.options.templates,e=this.element.parent().hasClass(this.options.css.responsiveTable)?this.element.parent():this.element;this.element.addClass(this.options.css.table),0===this.element.children("tbody").length&&this.element.append(t.body);1&this.options.navigation&&(this.header=p(t.header.resolve(v.call(this,{id:this.element._bgId()+"-header"}))),e.before(this.header));2&this.options.navigation&&(this.footer=p(t.footer.resolve(v.call(this,{id:this.element._bgId()+"-footer"}))),e.after(this.footer))}.call(this),x.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=m(t.search),i=g.call(this,e);if(0=s.options.searchSettings.characters)&&(h.clearTimeout(n),n=h.setTimeout(function(){y.call(s,e)},s.options.searchSettings.delay)))}),C.call(this,i,a)}}}.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=m(t.actions),i=g.call(this,e);if(0 tr").on("click"+f,"> tr",function(t){t.stopPropagation();var e=p(this),i=null==o.identifier?e.data("row-id"):o.converter.from(e.data("row-id")+""),s=null==o.identifier?o.currentRows[i]:o.currentRows.first(function(t){return t[o.identifier]===i});o.selection&&o.options.rowSelect&&(e.hasClass(o.options.css.selected)?o.deselect([i]):o.select([i])),o.element.trigger("click"+f,[o.columns,s])})}.call(this,e)}else b.call(this)}.call(o,t),function(){if(0!==this.options.navigation){var t=m(this.options.css.infos),e=g.call(this,t);if(0this.total?this.total:i,start:0===this.total?0:i-this.rowCount+1,total:this.total})));C.call(this,e,s)}}}.call(o),function(){if(0!==this.options.navigation){var t=m(this.options.css.pagination),e=g.call(this,t)._bgShowAria(-1!==this.rowCount);if(-1!==this.rowCount&&0=this.options.padding?Math.max(l,1):Math.max(l-this.options.padding+r,1),c=2*this.options.padding+1,h=c<=o?c:o;w.call(this,n,"first","«","first")._bgEnableAria(1 td").first(),o=r.element.height()-e.height()-(s.height()+20),n=r.columns.where(u).length;r.selection&&(n+=1),i.html(t.loading.resolve(v.call(r,{columns:n}))),-1!==r.rowCount&&0 td").css("padding","20px 0 "+o+"px")}},250)}.call(this),this.options.ajax){var t=function(){var t={current:this.current,rowCount:this.rowCount,sort:this.sortDictionary,searchPhrase:this.searchPhrase},e=this.options.post;return e=p.isFunction(e)?e():e,this.options.requestHandler(p.extend(!0,t,e))}.call(this),i=function(){var t=this.options.url;return p.isFunction(t)?t():t}.call(this);if(null==i||"string"!=typeof i||0===i.length)throw new Error("Url setting must be a none empty string or a function that returns one.");this.xqr&&this.xqr.abort();var s={url:i,data:t,success:function(t){o.xqr=null,"string"==typeof t&&(t=p.parseJSON(t)),t=o.options.responseHandler(t),o.current=t.current,e(t.rows,t.total)},error:function(t,e,i){o.xqr=null,"abort"!==e&&(b.call(o),o.element._bgBusyAria(!1).trigger("loaded"+f))}};s=p.extend(this.options.ajaxSettings,s),this.xqr=p.ajax(s)}else{var n=0 tr"),a=this.options.css,c=this.options.templates,h="",u=this.options.sorting;if(this.selection){var e=this.options.multiSelect?c.select.resolve(v.call(l,{type:"checkbox",value:"all"})):"";h+=c.rawHeaderCell.resolve(v.call(l,{content:e,css:a.selectCell}))}if(p.each(this.columns,function(t,e){if(e.visible){var i=l.sortDictionary[e.id],s=u&&i&&"asc"===i?a.iconUp:u&&i&&"desc"===i?a.iconDown:"",o=c.icon.resolve(v.call(l,{iconCss:s})),n=e.headerAlign,r=0i[n.id]?r(1):e[n.id]o?t(e,i,o):0})}}var c=function(t,e){this.element=p(t),this.origin=this.element.clone(),this.options=p.extend(!0,{},c.defaults,this.element.data(),e);var i=this.options.rowCount=this.element.data().rowCount||e.rowCount||this.options.rowCount;this.columns=[],this.current=1,this.currentRows=[],this.identifier=null,this.selection=!1,this.converter=null,this.rowCount=p.isArray(i)?i[0]:i,this.rows=[],this.searchPhrase="",this.selectedRows=[],this.sortDictionary={},this.total=0,this.totalPages=0,this.cachedParams={lbl:this.options.labels,css:this.options.css,ctx:{}},this.header=null,this.footer=null,this.xqr=null,this.uid=h.location.pathname+"#"+this.element.attr("id")};if(c.defaults={navigation:3,padding:2,columnSelection:!0,rowCount:[10,25,50,-1],selection:!1,multiSelect:!1,rowSelect:!1,keepSelection:!1,highlightRows:!1,sorting:!0,multiSort:!1,searchSettings:{delay:250,characters:1},ajax:!1,ajaxSettings:{method:"POST"},post:{},url:"",caseSensitive:!0,requestHandler:function(t){return t},responseHandler:function(t){return t},converters:{numeric:{from:function(t){return+t},to:function(t){return void 0===t?"":t+""}},string:{from:function(t){return t},to:function(t){return t}},datetime:{from:function(t){return t?moment(1e3*parseInt(t)):""},to:function(t){return t?t.format("lll"):""}},memsize:{from:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=parseInt(t),s=t.slice(-1).toUpperCase(),o=e.length-1;0<=o;o--)if(s===e[o]){i*=Math.pow(1024,o);break}return i},to:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=e.length-1;0<=i;i--)if(t>=5*Math.pow(1024,i))return parseInt(t/Math.pow(1024,i))+e[i];return parseInt(t)+""}},notprefixable:{to:function(t){return t.not?' '+t.val:t.val}}},css:{actions:"actions btn-group",center:"text-center",columnHeaderAnchor:"column-header-anchor",columnHeaderText:"text",dropDownItem:"dropdown-item",dropDownItemButton:"dropdown-item-button",dropDownItemCheckbox:"dropdown-item-checkbox",dropDownMenu:"dropdown btn-group",dropDownMenuItems:"dropdown-menu pull-right",dropDownMenuText:"dropdown-text",footer:"bootgrid-footer container-fluid",header:"bootgrid-header container-fluid",icon:"icon glyphicon",iconColumns:"glyphicon-th-list",iconDown:"glyphicon-chevron-down",iconRefresh:"glyphicon-refresh",iconSearch:"glyphicon-search",iconUp:"glyphicon-chevron-up",infos:"infos",left:"text-left",pagination:"pagination",paginationButton:"button",responsiveTable:"table-responsive",right:"text-right",search:"search form-group",searchField:"search-field form-control",selectBox:"select-box",selectCell:"select-cell",selected:"active",sortable:"sortable",table:"bootgrid-table table"},formatters:{},labels:{all:"All",infos:"Showing {{ctx.start}} to {{ctx.end}} of {{ctx.total}} entries",loading:"Loading...",noResults:"No results found!",refresh:"Refresh",search:"Search"},statusMapping:{0:"success",1:"info",2:"warning",3:"danger"},templates:{actionButton:'',actionDropDown:'
          ',actionDropDownItem:'
        • {{ctx.text}}
        • ',actionDropDownCheckboxItem:'
        • ',actions:'
          ',body:"",cell:'{{ctx.content}}',footer:'

          ',header:'

          ',headerCell:'{{ctx.column.text}}{{ctx.icon}}',icon:'',infos:'
          {{lbl.infos}}
          ',loading:'{{lbl.loading}}',noResults:'{{lbl.noResults}}',pagination:'
            ',paginationItem:'
          • {{ctx.text}}
          • ',rawHeaderCell:'{{ctx.content}}',row:"{{ctx.cells}}",search:'
            ',select:''}},c.prototype.append=function(t){if(this.options.ajax);else{for(var e=[],i=0;i=this.currentRows.length;for(i=0;!this.options.keepSelection&&n&&i tr "+o+":checked").trigger("click"+f),i=0;i tr[data-row-id="'+this.selectedRows[i]+'"]').addClass(this.options.css.selected)._bgAria("selected","true").find(o).prop("checked",!0);this.element.trigger("selected"+f,[s])}}return this},c.prototype.deselect=function(t){if(this.selection){t=t||this.currentRows.propValues(this.identifier);for(var e,i,s,o=[];0 tr[data-row-id="'+o[i][this.identifier]+'"]').removeClass(this.options.css.selected)._bgAria("selected","false").find(n).prop("checked",!1);this.element.trigger("deselected"+f,[o])}}return this},c.prototype.sort=function(t){var e=t?p.extend({},t):{};return e===this.sortDictionary||(this.sortDictionary=e,x.call(this),D.call(this),d.call(this)),this},c.prototype.getColumnSettings=function(){return p.merge([],this.columns)},c.prototype.getCurrentPage=function(){return this.current},c.prototype.getCurrentRows=function(){return p.merge([],this.currentRows)},c.prototype.getRowCount=function(){return this.rowCount},c.prototype.getSearchPhrase=function(){return this.searchPhrase},c.prototype.getSelectedRows=function(){return p.merge([],this.selectedRows)},c.prototype.getSortDictionary=function(){return p.extend({},this.sortDictionary)},c.prototype.getTotalPageCount=function(){return this.totalPages},c.prototype.getTotalRowCount=function(){return this.total},p.fn.extend({_bgAria:function(t,e){return e?this.attr("aria-"+t,e):this.attr("aria-"+t)},_bgBusyAria:function(t){return null==t||t?this._bgAria("busy","true"):this._bgAria("busy","false")},_bgRemoveAria:function(t){return this.removeAttr("aria-"+t)},_bgEnableAria:function(t){return null==t||t?this.removeClass("disabled")._bgAria("disabled","false"):this.addClass("disabled")._bgAria("disabled","true")},_bgEnableField:function(t){return null==t||t?this.removeAttr("disabled"):this.attr("disabled","disable")},_bgShowAria:function(t){return null==t||t?this.show()._bgAria("hidden","false"):this.hide()._bgAria("hidden","true")},_bgSelectAria:function(t){return null==t||t?this.addClass("active")._bgAria("selected","true"):this.removeClass("active")._bgAria("selected","false")},_bgId:function(t){return t?this.attr("id",t):this.attr("id")}}),!String.prototype.resolve){var S={checked:function(t){return"boolean"==typeof t?t?'checked="checked"':"":t}};String.prototype.resolve=function(t,o){var n=this;return p.each(t,function(t,e){if(null!=e&&"function"!=typeof e)if("object"==typeof e){var i=o?p.extend([],o):[];i.push(t),n=n.resolve(e,i)+""}else{S&&S[t]&&"function"==typeof S[t]&&(e=S[t](e)),t=o?o.join(".")+"."+t:t;var s=new RegExp("\\{\\{"+t+"\\}\\}","gm");n=n.replace(s,e.replace?e.replace(/\$/gi,"$"):e)}}),n}}Array.prototype.first||(Array.prototype.first=function(t){for(var e=0;ei?this.length>s?this.slice(i,s):this.slice(i):[]}),Array.prototype.where||(Array.prototype.where=function(t){for(var e=[],i=0;i tr").first(),r=!1;t.children().each(function(){var t=p(this),e=t.data(),i=localStorage.getItem("visibleColumns["+n.uid+"]["+e.columnId+"]"),s=localStorage.getItem("sortColumns["+n.uid+"]["+e.columnId+"]"),o={id:e.columnId,identifier:null==n.identifier&&e.identifier||!1,converter:n.options.converters[e.converter||e.type]||n.options.converters.string,text:t.html(),align:e.align||"left",headerAlign:e.headerAlign||"left",cssClass:e.cssClass||"",headerCssClass:e.headerCssClass||"",formatter:n.options.formatters[e.formatter]||null,order:r?null:null===s?"asc"===e.order||"desc"===e.order?e.order:null:"asc"===s||"desc"===s?s:null,searchable:!(!1===e.searchable),sortable:!(!1===e.sortable),visible:null===i?!(!1===e.visible):"true"===i,visibleInSelection:!(!1===e.visibleInSelection),width:p.isNumeric(e.width)?e.width+"px":"string"==typeof e.width?e.width:null};n.columns.push(o),null!=o.order&&(n.sortDictionary[o.id]=o.order),o.identifier&&(n.identifier=o.id,n.converter=o.converter),n.options.multiSort||null===o.order||(r=!0)})}.call(this),this.selection=this.options.selection&&null!=this.identifier,this.rowCount=parseInt(localStorage.getItem("rowCount["+this.uid+"]"))||this.rowCount,function(){if(!this.options.ajax){var e=this,t=this.element.find("tbody > tr");t.each(function(){var t=p(this),i=t.children("td"),s={};p.each(e.columns,function(t,e){s[e.id]=e.converter.from(i.eq(t).text())}),r.call(e,s)}),a.call(this,this.rows.length),S.call(this)}}.call(this),function(){var t=this.options.templates,e=this.element.parent().hasClass(this.options.css.responsiveTable)?this.element.parent():this.element;this.element.addClass(this.options.css.table),0===this.element.children("tbody").length&&this.element.append(t.body);1&this.options.navigation&&(this.header=p(t.header.resolve(m.call(this,{id:this.element._bgId()+"-header"}))),e.before(this.header));2&this.options.navigation&&(this.footer=p(t.footer.resolve(m.call(this,{id:this.element._bgId()+"-footer"}))),e.after(this.footer))}.call(this),x.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=v(t.search),i=g.call(this,e);if(0=s.options.searchSettings.characters)&&(h.clearTimeout(n),n=h.setTimeout(function(){y.call(s,e)},s.options.searchSettings.delay)))}),C.call(this,i,a)}}}.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=v(t.actions),i=g.call(this,e);if(0 tr").on("click"+f,"> tr",function(t){t.stopPropagation();var e=p(this),i=null==o.identifier?e.data("row-id"):o.converter.from(e.data("row-id")+""),s=null==o.identifier?o.currentRows[i]:o.currentRows.first(function(t){return t[o.identifier]===i});o.selection&&o.options.rowSelect&&(e.hasClass(o.options.css.selected)?o.deselect([i]):o.select([i])),o.element.trigger("click"+f,[o.columns,s])})}.call(this,e)}else b.call(this)}.call(o,t),function(){if(0!==this.options.navigation){var t=v(this.options.css.infos),e=g.call(this,t);if(0this.total?this.total:i,start:0===this.total?0:i-this.rowCount+1,total:this.total})));C.call(this,e,s)}}}.call(o),function(){if(0!==this.options.navigation){var t=v(this.options.css.pagination),e=g.call(this,t)._bgShowAria(-1!==this.rowCount);if(-1!==this.rowCount&&0=this.options.padding?Math.max(l,1):Math.max(l-this.options.padding+r,1),c=2*this.options.padding+1,h=c<=o?c:o;w.call(this,n,"first","«","first")._bgEnableAria(1 td").first(),o=r.element.height()-e.height()-(s.height()+20),n=r.columns.where(u).length;r.selection&&(n+=1),i.html(t.loading.resolve(m.call(r,{columns:n}))),-1!==r.rowCount&&0 td").css("padding","20px 0 "+o+"px")}},250)}.call(this),this.options.ajax){var t=function(){var t={current:this.current,rowCount:this.rowCount,sort:this.sortDictionary,searchPhrase:this.searchPhrase},e=this.options.post;return e=p.isFunction(e)?e():e,this.options.requestHandler(p.extend(!0,t,e))}.call(this),i=function(){var t=this.options.url;return p.isFunction(t)?t():t}.call(this);if(null==i||"string"!=typeof i||0===i.length)throw new Error("Url setting must be a none empty string or a function that returns one.");this.xqr&&this.xqr.abort();var s={url:i,data:t,success:function(t){o.xqr=null,"string"==typeof t&&(t=p.parseJSON(t)),t=o.options.responseHandler(t),o.current=t.current,e(t.rows,t.total)},error:function(t,e,i){o.xqr=null,"abort"!==e&&(b.call(o),o.element._bgBusyAria(!1).trigger("loaded"+f))}};s=p.extend(this.options.ajaxSettings,s),this.xqr=p.ajax(s)}else{var n=0 tr"),a=this.options.css,c=this.options.templates,h="",u=this.options.sorting;if(this.selection){var e=this.options.multiSelect?c.select.resolve(m.call(l,{type:"checkbox",value:"all"})):"";h+=c.rawHeaderCell.resolve(m.call(l,{content:e,css:a.selectCell}))}if(p.each(this.columns,function(t,e){if(e.visible){var i=l.sortDictionary[e.id],s=u&&i&&"asc"===i?a.iconUp:u&&i&&"desc"===i?a.iconDown:"",o=c.icon.resolve(m.call(l,{iconCss:s})),n=e.headerAlign,r=0i[n.id]?r(1):e[n.id]o?t(e,i,o):0})}}var c=function(t,e){this.element=p(t),this.origin=this.element.clone(),this.options=p.extend(!0,{},c.defaults,this.element.data(),e);var i=this.options.rowCount=this.element.data().rowCount||e.rowCount||this.options.rowCount;this.columns=[],this.current=1,this.currentRows=[],this.identifier=null,this.selection=!1,this.converter=null,this.rowCount=p.isArray(i)?i[0]:i,this.rows=[],this.searchPhrase="",this.selectedRows=[],this.sortDictionary={},this.total=0,this.totalPages=0,this.cachedParams={lbl:this.options.labels,css:this.options.css,ctx:{}},this.header=null,this.footer=null,this.xqr=null,this.uid=h.location.pathname+"#"+this.element.attr("id")};if(c.defaults={navigation:3,padding:2,columnSelection:!0,rowCount:[10,25,50,-1],selection:!1,multiSelect:!1,rowSelect:!1,keepSelection:!1,highlightRows:!1,sorting:!0,multiSort:!1,resetButton:!1,searchSettings:{delay:250,characters:1},ajax:!1,ajaxSettings:{method:"POST"},post:{},url:"",caseSensitive:!0,requestHandler:function(t){return t},responseHandler:function(t){return t},converters:{numeric:{from:function(t){return+t},to:function(t){return void 0===t?"":t+""}},string:{from:function(t){return t},to:function(t){return t}},datetime:{from:function(t){return t?moment(1e3*parseInt(t)):""},to:function(t){return t?t.format("lll"):""}},memsize:{from:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=parseInt(t),s=t.slice(-1).toUpperCase(),o=e.length-1;0<=o;o--)if(s===e[o]){i*=Math.pow(1024,o);break}return i},to:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=e.length-1;0<=i;i--)if(t>=5*Math.pow(1024,i))return parseInt(t/Math.pow(1024,i))+e[i];return parseInt(t)+""}},notprefixable:{to:function(t){return t.not?' '+t.val:t.val}}},css:{actions:"actions btn-group",center:"text-center",columnHeaderAnchor:"column-header-anchor",columnHeaderText:"text",dropDownItem:"dropdown-item",dropDownItemButton:"dropdown-item-button",dropDownItemCheckbox:"dropdown-item-checkbox",dropDownMenu:"dropdown btn-group",dropDownMenuItems:"dropdown-menu pull-right",dropDownMenuText:"dropdown-text",footer:"bootgrid-footer container-fluid",header:"bootgrid-header container-fluid",icon:"icon glyphicon",iconColumns:"glyphicon-th-list",iconDown:"glyphicon-chevron-down",iconRefresh:"glyphicon-refresh",iconSearch:"glyphicon-search",iconUp:"glyphicon-chevron-up",iconReset:"glyphicon-flash",infos:"infos",left:"text-left",pagination:"pagination",paginationButton:"button",responsiveTable:"table-responsive",right:"text-right",search:"search form-group",searchField:"search-field form-control",selectBox:"select-box",selectCell:"select-cell",selected:"active",sortable:"sortable",table:"bootgrid-table table"},formatters:{},labels:{all:"All",infos:"Showing {{ctx.start}} to {{ctx.end}} of {{ctx.total}} entries",loading:"Loading...",noResults:"No results found!",refresh:"Refresh",reset:"Reset stored settings and reload the page",search:"Search"},statusMapping:{0:"success",1:"info",2:"warning",3:"danger"},templates:{actionButton:'',actionDropDown:'
            ',actionDropDownItem:'
          • {{ctx.text}}
          • ',actionDropDownCheckboxItem:'
          • ',actions:'
            ',body:"",cell:'{{ctx.content}}',footer:'

            ',header:'

            ',headerCell:'{{ctx.column.text}}{{ctx.icon}}',icon:'',infos:'
            {{lbl.infos}}
            ',loading:'{{lbl.loading}}',noResults:'{{lbl.noResults}}',pagination:'
              ',paginationItem:'
            • {{ctx.text}}
            • ',rawHeaderCell:'{{ctx.content}}',row:"{{ctx.cells}}",search:'
              ',select:''}},c.prototype.append=function(t){if(this.options.ajax);else{for(var e=[],i=0;i=this.currentRows.length;for(i=0;!this.options.keepSelection&&n&&i tr "+o+":checked").trigger("click"+f),i=0;i tr[data-row-id="'+this.selectedRows[i]+'"]').addClass(this.options.css.selected)._bgAria("selected","true").find(o).prop("checked",!0);this.element.trigger("selected"+f,[s])}}return this},c.prototype.deselect=function(t){if(this.selection){t=t||this.currentRows.propValues(this.identifier);for(var e,i,s,o=[];0 tr[data-row-id="'+o[i][this.identifier]+'"]').removeClass(this.options.css.selected)._bgAria("selected","false").find(n).prop("checked",!1);this.element.trigger("deselected"+f,[o])}}return this},c.prototype.sort=function(t){var e=t?p.extend({},t):{};return e===this.sortDictionary||(this.sortDictionary=e,x.call(this),S.call(this),d.call(this)),this},c.prototype.getColumnSettings=function(){return p.merge([],this.columns)},c.prototype.getCurrentPage=function(){return this.current},c.prototype.getCurrentRows=function(){return p.merge([],this.currentRows)},c.prototype.getRowCount=function(){return this.rowCount},c.prototype.getSearchPhrase=function(){return this.searchPhrase},c.prototype.getSelectedRows=function(){return p.merge([],this.selectedRows)},c.prototype.getSortDictionary=function(){return p.extend({},this.sortDictionary)},c.prototype.getTotalPageCount=function(){return this.totalPages},c.prototype.getTotalRowCount=function(){return this.total},p.fn.extend({_bgAria:function(t,e){return e?this.attr("aria-"+t,e):this.attr("aria-"+t)},_bgBusyAria:function(t){return null==t||t?this._bgAria("busy","true"):this._bgAria("busy","false")},_bgRemoveAria:function(t){return this.removeAttr("aria-"+t)},_bgEnableAria:function(t){return null==t||t?this.removeClass("disabled")._bgAria("disabled","false"):this.addClass("disabled")._bgAria("disabled","true")},_bgEnableField:function(t){return null==t||t?this.removeAttr("disabled"):this.attr("disabled","disable")},_bgShowAria:function(t){return null==t||t?this.show()._bgAria("hidden","false"):this.hide()._bgAria("hidden","true")},_bgSelectAria:function(t){return null==t||t?this.addClass("active")._bgAria("selected","true"):this.removeClass("active")._bgAria("selected","false")},_bgId:function(t){return t?this.attr("id",t):this.attr("id")}}),!String.prototype.resolve){var D={checked:function(t){return"boolean"==typeof t?t?'checked="checked"':"":t}};String.prototype.resolve=function(t,o){var n=this;return p.each(t,function(t,e){if(null!=e&&"function"!=typeof e)if("object"==typeof e){var i=o?p.extend([],o):[];i.push(t),n=n.resolve(e,i)+""}else{D&&D[t]&&"function"==typeof D[t]&&(e=D[t](e)),t=o?o.join(".")+"."+t:t;var s=new RegExp("\\{\\{"+t+"\\}\\}","gm");n=n.replace(s,e.replace?e.replace(/\$/gi,"$"):e)}}),n}}Array.prototype.first||(Array.prototype.first=function(t){for(var e=0;ei?this.length>s?this.slice(i,s):this.slice(i):[]}),Array.prototype.where||(Array.prototype.where=function(t){for(var e=[],i=0;itrue Nice, sleek and intuitive. A grid control especially designed for bootstrap. Nice, sleek and intuitive. A grid control especially designed for bootstrap. - Copyright © 2014-2015, Rafael Staib; Copyright © 2018, Deciso B.V. + Copyright © 2014-2015, Rafael Staib; Copyright © 2022, Deciso B.V. jQuery, Grid, Table, Bootstrap, Accessibility, HTML5, Sorting, Filtering, UI diff --git a/package-lock.json b/package-lock.json index e85682e..6449dfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jquery-bootgrid", - "version": "1.3.5", + "version": "1.4.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -82,12 +82,12 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.14" } } } @@ -166,12 +166,6 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -190,13 +184,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true - }, "asn1": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", @@ -218,9 +205,9 @@ "dev": true }, "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "async-limiter": { @@ -242,13 +229,6 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true - }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", @@ -317,8 +297,7 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "resolved": "", "dev": true } } @@ -340,9 +319,9 @@ } }, "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", "dev": true, "requires": { "readable-stream": "^2.3.5", @@ -399,9 +378,9 @@ } }, "bootstrap": { - "version": "3.3.7", - "resolved": "http://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", - "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==" }, "brace-expansion": { "version": "1.1.11", @@ -486,12 +465,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -515,22 +488,6 @@ "unset-value": "^1.0.0" } }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -645,12 +602,6 @@ "dev": true, "optional": true }, - "coffeescript": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", - "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", - "dev": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -679,7 +630,7 @@ "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", "dev": true }, "combined-stream": { @@ -806,6 +757,15 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -864,22 +824,6 @@ "dev": true, "optional": true }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", - "dev": true, - "optional": true - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -906,14 +850,10 @@ "dev": true }, "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true }, "debug": { "version": "2.6.9", @@ -924,12 +864,6 @@ "ms": "2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -993,9 +927,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } @@ -1142,15 +1076,6 @@ "prr": "~1.0.1" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, "es6-promise": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", @@ -1179,9 +1104,9 @@ "dev": true }, "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "etag": { @@ -1193,7 +1118,7 @@ "eventemitter2": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", "dev": true }, "exit": { @@ -1392,8 +1317,7 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "resolved": "", "dev": true } } @@ -1418,6 +1342,15 @@ "requires": { "ms": "2.0.0" } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "dev": true, + "requires": { + "minimist": "0.0.8" + } } } }, @@ -1428,13 +1361,6 @@ "dev": true, "optional": true }, - "eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", - "dev": true, - "optional": true - }, "fast-deep-equal": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", @@ -1506,14 +1432,28 @@ "unpipe": "~1.0.0" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha512-z8Nrwhi6wzxNMIbxlrTzuUW6KWuKkogZ/7OdDVq+0+kxn77KUH1nipx8iU6suqkHqc4y6n7a9A8IpmxY/pTjWg==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "fined": { @@ -1556,37 +1496,6 @@ "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=", "dev": true }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "optional": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "optional": true - } - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -1614,27 +1523,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - } - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1642,9 +1530,9 @@ "dev": true }, "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, "optional": true, "requires": { @@ -1652,17 +1540,14 @@ "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -1699,12 +1584,6 @@ } } }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -1712,9 +1591,9 @@ "dev": true }, "getobject": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", "dev": true }, "getpass": { @@ -1792,107 +1671,103 @@ "which": "^1.2.14" } }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "optional": true + }, "grunt": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.3.tgz", - "integrity": "sha512-/JzmZNPfKorlCrrmxWqQO4JVodO+DVd5XX4DkocL/1WlLlKVLE9+SdEIempOAxDhWPysLle6afvn/hg7Ck2k9g==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", + "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", "dev": true, "requires": { - "coffeescript": "~1.10.0", - "dateformat": "~1.0.12", + "dateformat": "~3.0.3", "eventemitter2": "~0.4.13", - "exit": "~0.1.1", + "exit": "~0.1.2", "findup-sync": "~0.3.0", - "glob": "~7.0.0", - "grunt-cli": "~1.2.0", - "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~2.0.0", - "grunt-legacy-util": "~1.1.1", + "glob": "~7.1.6", + "grunt-cli": "~1.4.3", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", "iconv-lite": "~0.4.13", - "js-yaml": "~3.5.2", - "minimatch": "~3.0.2", - "mkdirp": "~0.5.1", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", "nopt": "~3.0.6", - "path-is-absolute": "~1.0.0", - "rimraf": "~2.6.2" + "rimraf": "~3.0.2" }, "dependencies": { - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "grunt-cli": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", "dev": true, "requires": { - "glob": "~5.0.0" + "grunt-known-options": "~2.0.0", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" }, "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "abbrev": "1", + "osenv": "^0.1.4" } } } }, - "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", - "dev": true, - "requires": { - "findup-sync": "~0.3.0", - "grunt-known-options": "~1.1.0", - "nopt": "~3.0.6", - "resolve": "~1.1.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "grunt-known-options": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", + "dev": true }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "abbrev": "1" + "glob": "^7.1.3" } }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", "dev": true, "requires": { - "glob": "^7.0.5" + "homedir-polyfill": "^1.0.1" } } } @@ -1933,12 +1808,12 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.14" } }, "rimraf": { @@ -2217,12 +2092,12 @@ "dev": true }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.14" } }, "chalk": { @@ -2293,71 +2168,102 @@ "dev": true }, "grunt-legacy-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", - "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", + "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", "dev": true, "requires": { "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.0.0", + "grunt-legacy-log-utils": "~2.1.0", "hooker": "~0.2.3", - "lodash": "~4.17.5" + "lodash": "~4.17.19" } }, "grunt-legacy-log-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", - "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", + "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", "dev": true, "requires": { - "chalk": "~2.4.1", - "lodash": "~4.17.10" + "chalk": "~4.1.0", + "lodash": "~4.17.19" }, "dependencies": { "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "grunt-legacy-util": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", - "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", + "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", "dev": true, "requires": { - "async": "~1.5.2", - "exit": "~0.1.1", - "getobject": "~0.1.0", + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", "hooker": "~0.2.3", - "lodash": "~4.17.10", - "underscore.string": "~3.3.4", - "which": "~1.3.0" + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "grunt-nuget": { @@ -2399,6 +2305,15 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2453,17 +2368,6 @@ } } }, - "hasha": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", - "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", - "dev": true, - "optional": true, - "requires": { - "is-stream": "^1.0.1", - "pinkie-promise": "^2.0.0" - } - }, "hawk": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", @@ -2499,12 +2403,6 @@ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", "dev": true }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, "htmlparser2": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", @@ -2544,18 +2442,6 @@ "statuses": ">= 1.4.0 < 2" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", @@ -2583,6 +2469,15 @@ } } }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "ieee754": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", @@ -2609,15 +2504,6 @@ "dev": true, "optional": true }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2635,9 +2521,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "interpret": { @@ -2671,25 +2557,19 @@ "kind-of": "^3.0.2" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { - "builtin-modules": "^1.0.0" + "has": "^1.0.3" } }, "is-data-descriptor": { @@ -2732,15 +2612,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -2787,13 +2658,6 @@ "is-unc-path": "^1.0.0" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "optional": true - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2810,10 +2674,10 @@ "unc-path-regex": "^0.1.2" } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, "is-windows": { @@ -2848,18 +2712,18 @@ "optional": true }, "jquery": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", - "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" }, "js-yaml": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", - "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { - "argparse": "^1.0.2", - "esprima": "^2.6.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -2870,9 +2734,9 @@ "optional": true }, "jshint": { - "version": "2.9.6", - "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.6.tgz", - "integrity": "sha512-KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA==", + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.7.tgz", + "integrity": "sha512-Q8XN38hGsVQhdlM+4gd1Xl7OB1VieSuCJf+fEJjpo59JH99bVJhXRXAh26qQ15wfdd1VPMuDWNeSWoNl53T4YA==", "dev": true, "requires": { "cli": "~1.0.0", @@ -2881,31 +2745,10 @@ "htmlparser2": "3.8.x", "lodash": "~4.17.10", "minimatch": "~3.0.2", - "phantom": "~4.0.1", - "phantomjs-prebuilt": "~2.1.7", "shelljs": "0.3.x", - "strip-json-comments": "1.0.x", - "unicode-5.2.0": "^0.7.5" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } + "strip-json-comments": "1.0.x" } }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true - }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", @@ -2919,54 +2762,28 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "jsonfile": { - "version": "2.4.0", - "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.6" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - } - } - }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true, "optional": true } } }, - "kew": { - "version": "0.7.0", - "resolved": "http://registry.npmjs.org/kew/-/kew-0.7.0.tgz", - "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", - "dev": true, - "optional": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -2976,25 +2793,6 @@ "is-buffer": "^1.1.5" } }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.9" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - } - } - }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -3005,36 +2803,20 @@ } }, "less": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/less/-/less-3.8.1.tgz", - "integrity": "sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", + "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", "dev": true, "requires": { - "clone": "^2.1.2", + "copy-anything": "^2.0.1", "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", + "make-dir": "^2.1.0", "mime": "^1.4.1", - "mkdirp": "^0.5.0", - "promise": "^7.1.1", - "request": "^2.83.0", - "source-map": "~0.6.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - } + "native-request": "^1.0.5", + "source-map": "~0.6.0", + "tslib": "^1.10.0" } }, "liftoff": { @@ -3067,6 +2849,127 @@ } } }, + "liftup": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", + "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", + "dev": true, + "requires": { + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "linkify-it": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz", @@ -3076,41 +2979,30 @@ "uc.micro": "^1.0.1" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - } - } - }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "optional": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + } } }, "make-iterator": { @@ -3123,9 +3015,9 @@ }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } @@ -3136,12 +3028,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -3253,32 +3139,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -3313,9 +3173,9 @@ }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } @@ -3348,6 +3208,15 @@ "dev": true, "optional": true }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "minimist": { "version": "0.0.8", "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", @@ -3355,9 +3224,9 @@ "dev": true }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -3376,18 +3245,28 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "optional": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.6" + }, + "dependencies": { + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true, + "optional": true + } } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "ms": { "version": "2.0.0", @@ -3422,13 +3301,20 @@ }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } }, + "native-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", + "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", + "dev": true, + "optional": true + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -3639,24 +3525,13 @@ "dev": true, "optional": true }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - } + "abbrev": "1" } }, "normalize-path": { @@ -3820,313 +3695,97 @@ "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parserlib": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-1.1.1.tgz", - "integrity": "sha1-pkz6ckBiQ0/fw1HJpOwtkrlMBvQ=", - "dev": true - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - } - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true - }, - "phantom": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/phantom/-/phantom-4.0.12.tgz", - "integrity": "sha512-Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA==", - "dev": true, - "optional": true, - "requires": { - "phantomjs-prebuilt": "^2.1.16", - "split": "^1.0.1", - "winston": "^2.4.0" - } - }, - "phantomjs-prebuilt": { - "version": "2.1.16", - "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", - "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", - "dev": true, - "optional": true, - "requires": { - "es6-promise": "^4.0.3", - "extract-zip": "^1.6.5", - "fs-extra": "^1.0.0", - "hasha": "^2.2.0", - "kew": "^0.7.0", - "progress": "^1.1.8", - "request": "^2.81.0", - "request-progress": "^2.0.1", - "which": "^1.2.10" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "optional": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "optional": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "optional": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true - }, - "progress": { - "version": "1.1.8", - "resolved": "http://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "optional": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true, - "optional": true - } + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "parserlib": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-1.1.1.tgz", + "integrity": "sha1-pkz6ckBiQ0/fw1HJpOwtkrlMBvQ=", "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", "dev": true, "requires": { - "pinkie": "^2.0.0" + "path-root-regex": "^0.1.0" } }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -4165,9 +3824,9 @@ "optional": true }, "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true, "optional": true }, @@ -4195,16 +3854,6 @@ "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "optional": true, - "requires": { - "asap": "~2.0.3" - } - }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", @@ -4373,9 +4022,9 @@ }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true, "optional": true }, @@ -4388,27 +4037,6 @@ } } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -4450,16 +4078,6 @@ "resolve": "^1.1.6" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -4488,94 +4106,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "optional": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "optional": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "optional": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true, - "optional": true - } - } - }, - "request-progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", - "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true, - "optional": true, - "requires": { - "throttleit": "^1.0.0" - } - }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -4683,9 +4213,9 @@ "optional": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -4697,7 +4227,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -4721,7 +4251,8 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "dev": true, + "optional": true }, "simple-concat": { "version": "1.0.0", @@ -4731,9 +4262,9 @@ "optional": true }, "simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", "dev": true, "optional": true, "requires": { @@ -4844,8 +4375,7 @@ }, "kind-of": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "resolved": "", "dev": true } } @@ -4894,48 +4424,6 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", - "dev": true - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "optional": true, - "requires": { - "through": "2" - } - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -4946,9 +4434,9 @@ } }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true }, "sshpk": { @@ -4988,13 +4476,6 @@ } } }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "optional": true - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -5089,24 +4570,6 @@ } } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, "strip-json-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", @@ -5119,6 +4582,12 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "tar": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", @@ -5172,20 +4641,6 @@ "xtend": "^4.0.0" } }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", - "dev": true, - "optional": true - }, - "through": { - "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true, - "optional": true - }, "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", @@ -5234,22 +4689,12 @@ "punycode": "^1.4.1" } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -5296,54 +4741,25 @@ "dev": true }, "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", + "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", "dev": true, "requires": { - "sprintf-js": "^1.0.3", + "sprintf-js": "^1.1.1", "util-deprecate": "^1.0.2" } }, - "unicode-5.2.0": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz", - "integrity": "sha512-KVGLW1Bri30x00yv4HNM8kBxoqFXr0Sbo55735nvrlsx4PYBZol3UtoWgO492fSwmsetzPEZzy73rbU8OGXJcA==", - "dev": true - }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unpipe": { @@ -5437,16 +4853,6 @@ "homedir-polyfill": "^1.0.1" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -5506,37 +4912,6 @@ "string-width": "^1.0.2 || 2" } }, - "winston": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz", - "integrity": "sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==", - "dev": true, - "optional": true, - "requires": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "dependencies": { - "async": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", - "dev": true, - "optional": true - }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true, - "optional": true - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index c2b94ef..39dc99a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "jquery-bootgrid", "namespace": "jquery.bootgrid", "title": "jQuery Bootgrid", - "version": "1.4.0", + "version": "1.4.1", "description": "Nice, sleek and intuitive. A grid control especially designed for bootstrap.", "homepage": "http://www.jquery-bootgrid.com", "author": { @@ -42,12 +42,12 @@ ], "license": "MIT", "dependencies": { - "bootstrap": "^3.3.7", - "jquery": "^3.2.1", - "moment": "^2.24.0" + "bootstrap": "^3.4.1", + "jquery": "^3.6.0", + "moment": "^2.29.4" }, "devDependencies": { - "grunt": "^1.0.3", + "grunt": "^1.5.3", "grunt-cli": "~1.3.2", "grunt-contrib-clean": "~2.0.0", "grunt-contrib-compress": "~1.4.3", diff --git a/src/extensions.js b/src/extensions.js index cb37139..f8888ff 100644 --- a/src/extensions.js +++ b/src/extensions.js @@ -9,8 +9,8 @@ $.fn.extend({ _bgBusyAria: function(busy) { - return (busy == null || busy) ? - this._bgAria("busy", "true") : + return (busy == null || busy) ? + this._bgAria("busy", "true") : this._bgAria("busy", "false"); }, @@ -21,29 +21,29 @@ $.fn.extend({ _bgEnableAria: function (enable) { - return (enable == null || enable) ? - this.removeClass("disabled")._bgAria("disabled", "false") : + return (enable == null || enable) ? + this.removeClass("disabled")._bgAria("disabled", "false") : this.addClass("disabled")._bgAria("disabled", "true"); }, _bgEnableField: function (enable) { - return (enable == null || enable) ? - this.removeAttr("disabled") : + return (enable == null || enable) ? + this.removeAttr("disabled") : this.attr("disabled", "disable"); }, _bgShowAria: function (show) { - return (show == null || show) ? + return (show == null || show) ? this.show()._bgAria("hidden", "false") : this.hide()._bgAria("hidden", "true"); }, _bgSelectAria: function (select) { - return (select == null || select) ? - this.addClass("active")._bgAria("selected", "true") : + return (select == null || select) ? + this.addClass("active")._bgAria("selected", "true") : this.removeClass("active")._bgAria("selected", "false"); }, @@ -133,8 +133,8 @@ if (!Array.prototype.page) { var skip = (page - 1) * size, end = skip + size; - return (this.length > skip) ? - (this.length > end) ? this.slice(skip, end) : + return (this.length > skip) ? + (this.length > end) ? this.slice(skip, end) : this.slice(skip) : []; }; } diff --git a/src/internal.js b/src/internal.js index 0cebaf7..5031be6 100644 --- a/src/internal.js +++ b/src/internal.js @@ -353,6 +353,26 @@ function renderActions() actions.append(refresh); } + // Reset Button + if (this.options.resetButton) + { + var resetIcon = tpl.icon.resolve(getParams.call(this, { iconCss: css.iconReset })), + reset = $(tpl.actionButton.resolve(getParams.call(this, + { content: resetIcon, text: this.options.labels.reset }))) + .on("click" + namespace, function (e) + { + e.stopPropagation(); + for (var i = 0; i < that.columns.length; i++) + { + localStorage.removeItem('sortColumns[' + that.uid + '][' + that.columns[i].id + ']'); + localStorage.removeItem('visibleColumns[' + that.uid + '][' + that.columns[i].id + ']'); + } + localStorage.removeItem('rowCount[' + that.uid + ']'); + location.reload(); + }); + actions.append(reset); + } + // Row count selection renderRowCountSelection.call(this, actions); diff --git a/src/public.js b/src/public.js index b5b3e88..edbe514 100644 --- a/src/public.js +++ b/src/public.js @@ -110,6 +110,7 @@ Grid.defaults = { highlightRows: false, // highlights new rows (find the page of the first new row) sorting: true, multiSort: false, + resetButton: false, /** * General search settings to configure the search field behaviour. @@ -330,6 +331,7 @@ Grid.defaults = { iconRefresh: "glyphicon-refresh", iconSearch: "glyphicon-search", iconUp: "glyphicon-chevron-up", + iconReset: "glyphicon-flash", infos: "infos", // must be a unique class name or constellation of class names within the header and footer, left: "text-left", pagination: "pagination", // must be a unique class name or constellation of class names within the header and footer @@ -390,6 +392,7 @@ Grid.defaults = { loading: "Loading...", noResults: "No results found!", refresh: "Refresh", + reset: "Reset stored settings and reload the page", search: "Search" }, From 9adf6ad4a875c379cc49c953acd8b833d109a689 Mon Sep 17 00:00:00 2001 From: kulikov-a <36099472+kulikov-a@users.noreply.github.com> Date: Thu, 25 Aug 2022 10:49:41 +0300 Subject: [PATCH 2/3] change button icon less confusing --- dist/jquery.bootgrid-1.4.1.zip | Bin 30298 -> 30300 bytes dist/jquery.bootgrid.css | 2 +- dist/jquery.bootgrid.fa.js | 2 +- dist/jquery.bootgrid.js | 4 ++-- dist/jquery.bootgrid.min.css | 2 +- dist/jquery.bootgrid.min.js | 2 +- src/public.js | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/jquery.bootgrid-1.4.1.zip b/dist/jquery.bootgrid-1.4.1.zip index 493183ba57c5d4ed0334b801f579981ee580886d..72a61a9ebfc3c725cfc21e1d9b01849cc32ce791 100644 GIT binary patch delta 22558 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 E2Qicjz5oCK delta 22573 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 Ulj-~?8CjyN2QgX|^zX|50SloTM*si- diff --git a/dist/jquery.bootgrid.css b/dist/jquery.bootgrid.css index 1e16be7..9a112fa 100644 --- a/dist/jquery.bootgrid.css +++ b/dist/jquery.bootgrid.css @@ -1,5 +1,5 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/24/2022 + * jQuery Bootgrid v1.4.1 - 08/25/2022 * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ diff --git a/dist/jquery.bootgrid.fa.js b/dist/jquery.bootgrid.fa.js index 45141f4..cac67ab 100644 --- a/dist/jquery.bootgrid.fa.js +++ b/dist/jquery.bootgrid.fa.js @@ -1,5 +1,5 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/24/2022 + * jQuery Bootgrid v1.4.1 - 08/25/2022 * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ diff --git a/dist/jquery.bootgrid.js b/dist/jquery.bootgrid.js index 5af5ab6..b9ac718 100644 --- a/dist/jquery.bootgrid.js +++ b/dist/jquery.bootgrid.js @@ -1,5 +1,5 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/24/2022 + * jQuery Bootgrid v1.4.1 - 08/25/2022 * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ @@ -1326,7 +1326,7 @@ iconRefresh: "glyphicon-refresh", iconSearch: "glyphicon-search", iconUp: "glyphicon-chevron-up", - iconReset: "glyphicon-flash", + iconReset: "glyphicon-random", infos: "infos", // must be a unique class name or constellation of class names within the header and footer, left: "text-left", pagination: "pagination", // must be a unique class name or constellation of class names within the header and footer diff --git a/dist/jquery.bootgrid.min.css b/dist/jquery.bootgrid.min.css index 4ca1fc7..e1a3139 100644 --- a/dist/jquery.bootgrid.min.css +++ b/dist/jquery.bootgrid.min.css @@ -1,5 +1,5 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/24/2022 + * jQuery Bootgrid v1.4.1 - 08/25/2022 * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */.bootgrid-footer,.bootgrid-header{margin:15px 0}.bootgrid-footer a,.bootgrid-header a{outline:0}.bootgrid-footer .search,.bootgrid-header .search{display:inline-block;margin:0 20px 0 0;vertical-align:middle;width:180px}.bootgrid-footer .search .glyphicon,.bootgrid-header .search .glyphicon{top:0}.bootgrid-footer .search .fa,.bootgrid-header .search .fa{display:table-cell}.bootgrid-footer .search .search-field::-ms-clear,.bootgrid-footer .search.search-field::-ms-clear,.bootgrid-header .search .search-field::-ms-clear,.bootgrid-header .search.search-field::-ms-clear{display:none}.bootgrid-footer .pagination,.bootgrid-header .pagination{margin:0!important}.bootgrid-footer .infoBar,.bootgrid-header .actionBar{text-align:right}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu{text-align:left}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item{cursor:pointer;display:block;margin:0;padding:3px 20px;white-space:nowrap}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item:focus,.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item:hover,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item:focus,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item .dropdown-item-checkbox,.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item.dropdown-item-checkbox,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item .dropdown-item-checkbox,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item.dropdown-item-checkbox{margin:0 2px 4px 0;vertical-align:middle}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item.disabled,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item.disabled{cursor:not-allowed}.bootgrid-table{table-layout:fixed}.bootgrid-table a{outline:0}.bootgrid-table th>.column-header-anchor{color:#333;cursor:not-allowed;display:block;position:relative;text-decoration:none}.bootgrid-table th>.column-header-anchor.sortable{cursor:pointer}.bootgrid-table th>.column-header-anchor>.text{display:block;margin:0 16px 0 0;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.bootgrid-table th>.column-header-anchor>.icon{display:block;position:absolute;right:0;top:2px}.bootgrid-table th:active,.bootgrid-table th:hover{background:#fafafa}.bootgrid-table td{overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.bootgrid-table td.loading,.bootgrid-table td.no-results{background:#fff;text-align:center}.bootgrid-table td.select-cell,.bootgrid-table th.select-cell{text-align:center;width:30px}.bootgrid-table td.select-cell .select-box,.bootgrid-table th.select-cell .select-box{margin:0;outline:0}.table-responsive .bootgrid-table{table-layout:inherit!important}.table-responsive .bootgrid-table th>.column-header-anchor>.text{overflow:inherit!important;-ms-text-overflow:inherit!important;-o-text-overflow:inherit!important;text-overflow:inherit!important;white-space:inherit!important}.table-responsive .bootgrid-table td{overflow:inherit!important;-ms-text-overflow:inherit!important;-o-text-overflow:inherit!important;text-overflow:inherit!important;white-space:inherit!important} \ No newline at end of file diff --git a/dist/jquery.bootgrid.min.js b/dist/jquery.bootgrid.min.js index 01e940e..3b8900f 100644 --- a/dist/jquery.bootgrid.min.js +++ b/dist/jquery.bootgrid.min.js @@ -1 +1 @@ -!function(p,h,t){"use strict";var f=".rs.jquery.bootgrid";function r(e){var i=this;return!this.rows.contains(function(t){return i.identifier&&t[i.identifier]===e[i.identifier]})&&(this.rows.push(e),!0)}function g(t){var e=this.footer?this.footer.find(t):p(),i=this.header?this.header.find(t):p();return p.merge(e,i)}function m(t){return t?p.extend({},this.cachedParams,{ctx:t}):this.cachedParams}function v(t){return"."+p.trim(t).replace(/\s+/gm,".")}function l(){this.element.trigger("initialize"+f),function(){var n=this,t=this.element.find("thead > tr").first(),r=!1;t.children().each(function(){var t=p(this),e=t.data(),i=localStorage.getItem("visibleColumns["+n.uid+"]["+e.columnId+"]"),s=localStorage.getItem("sortColumns["+n.uid+"]["+e.columnId+"]"),o={id:e.columnId,identifier:null==n.identifier&&e.identifier||!1,converter:n.options.converters[e.converter||e.type]||n.options.converters.string,text:t.html(),align:e.align||"left",headerAlign:e.headerAlign||"left",cssClass:e.cssClass||"",headerCssClass:e.headerCssClass||"",formatter:n.options.formatters[e.formatter]||null,order:r?null:null===s?"asc"===e.order||"desc"===e.order?e.order:null:"asc"===s||"desc"===s?s:null,searchable:!(!1===e.searchable),sortable:!(!1===e.sortable),visible:null===i?!(!1===e.visible):"true"===i,visibleInSelection:!(!1===e.visibleInSelection),width:p.isNumeric(e.width)?e.width+"px":"string"==typeof e.width?e.width:null};n.columns.push(o),null!=o.order&&(n.sortDictionary[o.id]=o.order),o.identifier&&(n.identifier=o.id,n.converter=o.converter),n.options.multiSort||null===o.order||(r=!0)})}.call(this),this.selection=this.options.selection&&null!=this.identifier,this.rowCount=parseInt(localStorage.getItem("rowCount["+this.uid+"]"))||this.rowCount,function(){if(!this.options.ajax){var e=this,t=this.element.find("tbody > tr");t.each(function(){var t=p(this),i=t.children("td"),s={};p.each(e.columns,function(t,e){s[e.id]=e.converter.from(i.eq(t).text())}),r.call(e,s)}),a.call(this,this.rows.length),S.call(this)}}.call(this),function(){var t=this.options.templates,e=this.element.parent().hasClass(this.options.css.responsiveTable)?this.element.parent():this.element;this.element.addClass(this.options.css.table),0===this.element.children("tbody").length&&this.element.append(t.body);1&this.options.navigation&&(this.header=p(t.header.resolve(m.call(this,{id:this.element._bgId()+"-header"}))),e.before(this.header));2&this.options.navigation&&(this.footer=p(t.footer.resolve(m.call(this,{id:this.element._bgId()+"-footer"}))),e.after(this.footer))}.call(this),x.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=v(t.search),i=g.call(this,e);if(0=s.options.searchSettings.characters)&&(h.clearTimeout(n),n=h.setTimeout(function(){y.call(s,e)},s.options.searchSettings.delay)))}),C.call(this,i,a)}}}.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=v(t.actions),i=g.call(this,e);if(0 tr").on("click"+f,"> tr",function(t){t.stopPropagation();var e=p(this),i=null==o.identifier?e.data("row-id"):o.converter.from(e.data("row-id")+""),s=null==o.identifier?o.currentRows[i]:o.currentRows.first(function(t){return t[o.identifier]===i});o.selection&&o.options.rowSelect&&(e.hasClass(o.options.css.selected)?o.deselect([i]):o.select([i])),o.element.trigger("click"+f,[o.columns,s])})}.call(this,e)}else b.call(this)}.call(o,t),function(){if(0!==this.options.navigation){var t=v(this.options.css.infos),e=g.call(this,t);if(0this.total?this.total:i,start:0===this.total?0:i-this.rowCount+1,total:this.total})));C.call(this,e,s)}}}.call(o),function(){if(0!==this.options.navigation){var t=v(this.options.css.pagination),e=g.call(this,t)._bgShowAria(-1!==this.rowCount);if(-1!==this.rowCount&&0=this.options.padding?Math.max(l,1):Math.max(l-this.options.padding+r,1),c=2*this.options.padding+1,h=c<=o?c:o;w.call(this,n,"first","«","first")._bgEnableAria(1 td").first(),o=r.element.height()-e.height()-(s.height()+20),n=r.columns.where(u).length;r.selection&&(n+=1),i.html(t.loading.resolve(m.call(r,{columns:n}))),-1!==r.rowCount&&0 td").css("padding","20px 0 "+o+"px")}},250)}.call(this),this.options.ajax){var t=function(){var t={current:this.current,rowCount:this.rowCount,sort:this.sortDictionary,searchPhrase:this.searchPhrase},e=this.options.post;return e=p.isFunction(e)?e():e,this.options.requestHandler(p.extend(!0,t,e))}.call(this),i=function(){var t=this.options.url;return p.isFunction(t)?t():t}.call(this);if(null==i||"string"!=typeof i||0===i.length)throw new Error("Url setting must be a none empty string or a function that returns one.");this.xqr&&this.xqr.abort();var s={url:i,data:t,success:function(t){o.xqr=null,"string"==typeof t&&(t=p.parseJSON(t)),t=o.options.responseHandler(t),o.current=t.current,e(t.rows,t.total)},error:function(t,e,i){o.xqr=null,"abort"!==e&&(b.call(o),o.element._bgBusyAria(!1).trigger("loaded"+f))}};s=p.extend(this.options.ajaxSettings,s),this.xqr=p.ajax(s)}else{var n=0 tr"),a=this.options.css,c=this.options.templates,h="",u=this.options.sorting;if(this.selection){var e=this.options.multiSelect?c.select.resolve(m.call(l,{type:"checkbox",value:"all"})):"";h+=c.rawHeaderCell.resolve(m.call(l,{content:e,css:a.selectCell}))}if(p.each(this.columns,function(t,e){if(e.visible){var i=l.sortDictionary[e.id],s=u&&i&&"asc"===i?a.iconUp:u&&i&&"desc"===i?a.iconDown:"",o=c.icon.resolve(m.call(l,{iconCss:s})),n=e.headerAlign,r=0i[n.id]?r(1):e[n.id]o?t(e,i,o):0})}}var c=function(t,e){this.element=p(t),this.origin=this.element.clone(),this.options=p.extend(!0,{},c.defaults,this.element.data(),e);var i=this.options.rowCount=this.element.data().rowCount||e.rowCount||this.options.rowCount;this.columns=[],this.current=1,this.currentRows=[],this.identifier=null,this.selection=!1,this.converter=null,this.rowCount=p.isArray(i)?i[0]:i,this.rows=[],this.searchPhrase="",this.selectedRows=[],this.sortDictionary={},this.total=0,this.totalPages=0,this.cachedParams={lbl:this.options.labels,css:this.options.css,ctx:{}},this.header=null,this.footer=null,this.xqr=null,this.uid=h.location.pathname+"#"+this.element.attr("id")};if(c.defaults={navigation:3,padding:2,columnSelection:!0,rowCount:[10,25,50,-1],selection:!1,multiSelect:!1,rowSelect:!1,keepSelection:!1,highlightRows:!1,sorting:!0,multiSort:!1,resetButton:!1,searchSettings:{delay:250,characters:1},ajax:!1,ajaxSettings:{method:"POST"},post:{},url:"",caseSensitive:!0,requestHandler:function(t){return t},responseHandler:function(t){return t},converters:{numeric:{from:function(t){return+t},to:function(t){return void 0===t?"":t+""}},string:{from:function(t){return t},to:function(t){return t}},datetime:{from:function(t){return t?moment(1e3*parseInt(t)):""},to:function(t){return t?t.format("lll"):""}},memsize:{from:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=parseInt(t),s=t.slice(-1).toUpperCase(),o=e.length-1;0<=o;o--)if(s===e[o]){i*=Math.pow(1024,o);break}return i},to:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=e.length-1;0<=i;i--)if(t>=5*Math.pow(1024,i))return parseInt(t/Math.pow(1024,i))+e[i];return parseInt(t)+""}},notprefixable:{to:function(t){return t.not?' '+t.val:t.val}}},css:{actions:"actions btn-group",center:"text-center",columnHeaderAnchor:"column-header-anchor",columnHeaderText:"text",dropDownItem:"dropdown-item",dropDownItemButton:"dropdown-item-button",dropDownItemCheckbox:"dropdown-item-checkbox",dropDownMenu:"dropdown btn-group",dropDownMenuItems:"dropdown-menu pull-right",dropDownMenuText:"dropdown-text",footer:"bootgrid-footer container-fluid",header:"bootgrid-header container-fluid",icon:"icon glyphicon",iconColumns:"glyphicon-th-list",iconDown:"glyphicon-chevron-down",iconRefresh:"glyphicon-refresh",iconSearch:"glyphicon-search",iconUp:"glyphicon-chevron-up",iconReset:"glyphicon-flash",infos:"infos",left:"text-left",pagination:"pagination",paginationButton:"button",responsiveTable:"table-responsive",right:"text-right",search:"search form-group",searchField:"search-field form-control",selectBox:"select-box",selectCell:"select-cell",selected:"active",sortable:"sortable",table:"bootgrid-table table"},formatters:{},labels:{all:"All",infos:"Showing {{ctx.start}} to {{ctx.end}} of {{ctx.total}} entries",loading:"Loading...",noResults:"No results found!",refresh:"Refresh",reset:"Reset stored settings and reload the page",search:"Search"},statusMapping:{0:"success",1:"info",2:"warning",3:"danger"},templates:{actionButton:'',actionDropDown:'
              ',actionDropDownItem:'
            • {{ctx.text}}
            • ',actionDropDownCheckboxItem:'
            • ',actions:'
              ',body:"",cell:'{{ctx.content}}',footer:'

              ',header:'

              ',headerCell:'{{ctx.column.text}}{{ctx.icon}}',icon:'',infos:'
              {{lbl.infos}}
              ',loading:'{{lbl.loading}}',noResults:'{{lbl.noResults}}',pagination:'
                ',paginationItem:'
              • {{ctx.text}}
              • ',rawHeaderCell:'{{ctx.content}}',row:"{{ctx.cells}}",search:'
                ',select:''}},c.prototype.append=function(t){if(this.options.ajax);else{for(var e=[],i=0;i=this.currentRows.length;for(i=0;!this.options.keepSelection&&n&&i tr "+o+":checked").trigger("click"+f),i=0;i tr[data-row-id="'+this.selectedRows[i]+'"]').addClass(this.options.css.selected)._bgAria("selected","true").find(o).prop("checked",!0);this.element.trigger("selected"+f,[s])}}return this},c.prototype.deselect=function(t){if(this.selection){t=t||this.currentRows.propValues(this.identifier);for(var e,i,s,o=[];0 tr[data-row-id="'+o[i][this.identifier]+'"]').removeClass(this.options.css.selected)._bgAria("selected","false").find(n).prop("checked",!1);this.element.trigger("deselected"+f,[o])}}return this},c.prototype.sort=function(t){var e=t?p.extend({},t):{};return e===this.sortDictionary||(this.sortDictionary=e,x.call(this),S.call(this),d.call(this)),this},c.prototype.getColumnSettings=function(){return p.merge([],this.columns)},c.prototype.getCurrentPage=function(){return this.current},c.prototype.getCurrentRows=function(){return p.merge([],this.currentRows)},c.prototype.getRowCount=function(){return this.rowCount},c.prototype.getSearchPhrase=function(){return this.searchPhrase},c.prototype.getSelectedRows=function(){return p.merge([],this.selectedRows)},c.prototype.getSortDictionary=function(){return p.extend({},this.sortDictionary)},c.prototype.getTotalPageCount=function(){return this.totalPages},c.prototype.getTotalRowCount=function(){return this.total},p.fn.extend({_bgAria:function(t,e){return e?this.attr("aria-"+t,e):this.attr("aria-"+t)},_bgBusyAria:function(t){return null==t||t?this._bgAria("busy","true"):this._bgAria("busy","false")},_bgRemoveAria:function(t){return this.removeAttr("aria-"+t)},_bgEnableAria:function(t){return null==t||t?this.removeClass("disabled")._bgAria("disabled","false"):this.addClass("disabled")._bgAria("disabled","true")},_bgEnableField:function(t){return null==t||t?this.removeAttr("disabled"):this.attr("disabled","disable")},_bgShowAria:function(t){return null==t||t?this.show()._bgAria("hidden","false"):this.hide()._bgAria("hidden","true")},_bgSelectAria:function(t){return null==t||t?this.addClass("active")._bgAria("selected","true"):this.removeClass("active")._bgAria("selected","false")},_bgId:function(t){return t?this.attr("id",t):this.attr("id")}}),!String.prototype.resolve){var D={checked:function(t){return"boolean"==typeof t?t?'checked="checked"':"":t}};String.prototype.resolve=function(t,o){var n=this;return p.each(t,function(t,e){if(null!=e&&"function"!=typeof e)if("object"==typeof e){var i=o?p.extend([],o):[];i.push(t),n=n.resolve(e,i)+""}else{D&&D[t]&&"function"==typeof D[t]&&(e=D[t](e)),t=o?o.join(".")+"."+t:t;var s=new RegExp("\\{\\{"+t+"\\}\\}","gm");n=n.replace(s,e.replace?e.replace(/\$/gi,"$"):e)}}),n}}Array.prototype.first||(Array.prototype.first=function(t){for(var e=0;ei?this.length>s?this.slice(i,s):this.slice(i):[]}),Array.prototype.where||(Array.prototype.where=function(t){for(var e=[],i=0;i tr").first(),r=!1;t.children().each(function(){var t=p(this),e=t.data(),i=localStorage.getItem("visibleColumns["+n.uid+"]["+e.columnId+"]"),s=localStorage.getItem("sortColumns["+n.uid+"]["+e.columnId+"]"),o={id:e.columnId,identifier:null==n.identifier&&e.identifier||!1,converter:n.options.converters[e.converter||e.type]||n.options.converters.string,text:t.html(),align:e.align||"left",headerAlign:e.headerAlign||"left",cssClass:e.cssClass||"",headerCssClass:e.headerCssClass||"",formatter:n.options.formatters[e.formatter]||null,order:r?null:null===s?"asc"===e.order||"desc"===e.order?e.order:null:"asc"===s||"desc"===s?s:null,searchable:!(!1===e.searchable),sortable:!(!1===e.sortable),visible:null===i?!(!1===e.visible):"true"===i,visibleInSelection:!(!1===e.visibleInSelection),width:p.isNumeric(e.width)?e.width+"px":"string"==typeof e.width?e.width:null};n.columns.push(o),null!=o.order&&(n.sortDictionary[o.id]=o.order),o.identifier&&(n.identifier=o.id,n.converter=o.converter),n.options.multiSort||null===o.order||(r=!0)})}.call(this),this.selection=this.options.selection&&null!=this.identifier,this.rowCount=parseInt(localStorage.getItem("rowCount["+this.uid+"]"))||this.rowCount,function(){if(!this.options.ajax){var e=this,t=this.element.find("tbody > tr");t.each(function(){var t=p(this),i=t.children("td"),s={};p.each(e.columns,function(t,e){s[e.id]=e.converter.from(i.eq(t).text())}),r.call(e,s)}),a.call(this,this.rows.length),S.call(this)}}.call(this),function(){var t=this.options.templates,e=this.element.parent().hasClass(this.options.css.responsiveTable)?this.element.parent():this.element;this.element.addClass(this.options.css.table),0===this.element.children("tbody").length&&this.element.append(t.body);1&this.options.navigation&&(this.header=p(t.header.resolve(m.call(this,{id:this.element._bgId()+"-header"}))),e.before(this.header));2&this.options.navigation&&(this.footer=p(t.footer.resolve(m.call(this,{id:this.element._bgId()+"-footer"}))),e.after(this.footer))}.call(this),x.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=v(t.search),i=g.call(this,e);if(0=s.options.searchSettings.characters)&&(h.clearTimeout(n),n=h.setTimeout(function(){y.call(s,e)},s.options.searchSettings.delay)))}),C.call(this,i,a)}}}.call(this),function(){if(0!==this.options.navigation){var t=this.options.css,e=v(t.actions),i=g.call(this,e);if(0 tr").on("click"+f,"> tr",function(t){t.stopPropagation();var e=p(this),i=null==o.identifier?e.data("row-id"):o.converter.from(e.data("row-id")+""),s=null==o.identifier?o.currentRows[i]:o.currentRows.first(function(t){return t[o.identifier]===i});o.selection&&o.options.rowSelect&&(e.hasClass(o.options.css.selected)?o.deselect([i]):o.select([i])),o.element.trigger("click"+f,[o.columns,s])})}.call(this,e)}else b.call(this)}.call(o,t),function(){if(0!==this.options.navigation){var t=v(this.options.css.infos),e=g.call(this,t);if(0this.total?this.total:i,start:0===this.total?0:i-this.rowCount+1,total:this.total})));C.call(this,e,s)}}}.call(o),function(){if(0!==this.options.navigation){var t=v(this.options.css.pagination),e=g.call(this,t)._bgShowAria(-1!==this.rowCount);if(-1!==this.rowCount&&0=this.options.padding?Math.max(l,1):Math.max(l-this.options.padding+r,1),c=2*this.options.padding+1,h=c<=o?c:o;w.call(this,n,"first","«","first")._bgEnableAria(1 td").first(),o=r.element.height()-e.height()-(s.height()+20),n=r.columns.where(u).length;r.selection&&(n+=1),i.html(t.loading.resolve(m.call(r,{columns:n}))),-1!==r.rowCount&&0 td").css("padding","20px 0 "+o+"px")}},250)}.call(this),this.options.ajax){var t=function(){var t={current:this.current,rowCount:this.rowCount,sort:this.sortDictionary,searchPhrase:this.searchPhrase},e=this.options.post;return e=p.isFunction(e)?e():e,this.options.requestHandler(p.extend(!0,t,e))}.call(this),i=function(){var t=this.options.url;return p.isFunction(t)?t():t}.call(this);if(null==i||"string"!=typeof i||0===i.length)throw new Error("Url setting must be a none empty string or a function that returns one.");this.xqr&&this.xqr.abort();var s={url:i,data:t,success:function(t){o.xqr=null,"string"==typeof t&&(t=p.parseJSON(t)),t=o.options.responseHandler(t),o.current=t.current,e(t.rows,t.total)},error:function(t,e,i){o.xqr=null,"abort"!==e&&(b.call(o),o.element._bgBusyAria(!1).trigger("loaded"+f))}};s=p.extend(this.options.ajaxSettings,s),this.xqr=p.ajax(s)}else{var n=0 tr"),a=this.options.css,c=this.options.templates,h="",u=this.options.sorting;if(this.selection){var e=this.options.multiSelect?c.select.resolve(m.call(l,{type:"checkbox",value:"all"})):"";h+=c.rawHeaderCell.resolve(m.call(l,{content:e,css:a.selectCell}))}if(p.each(this.columns,function(t,e){if(e.visible){var i=l.sortDictionary[e.id],s=u&&i&&"asc"===i?a.iconUp:u&&i&&"desc"===i?a.iconDown:"",o=c.icon.resolve(m.call(l,{iconCss:s})),n=e.headerAlign,r=0i[n.id]?r(1):e[n.id]o?t(e,i,o):0})}}var c=function(t,e){this.element=p(t),this.origin=this.element.clone(),this.options=p.extend(!0,{},c.defaults,this.element.data(),e);var i=this.options.rowCount=this.element.data().rowCount||e.rowCount||this.options.rowCount;this.columns=[],this.current=1,this.currentRows=[],this.identifier=null,this.selection=!1,this.converter=null,this.rowCount=p.isArray(i)?i[0]:i,this.rows=[],this.searchPhrase="",this.selectedRows=[],this.sortDictionary={},this.total=0,this.totalPages=0,this.cachedParams={lbl:this.options.labels,css:this.options.css,ctx:{}},this.header=null,this.footer=null,this.xqr=null,this.uid=h.location.pathname+"#"+this.element.attr("id")};if(c.defaults={navigation:3,padding:2,columnSelection:!0,rowCount:[10,25,50,-1],selection:!1,multiSelect:!1,rowSelect:!1,keepSelection:!1,highlightRows:!1,sorting:!0,multiSort:!1,resetButton:!1,searchSettings:{delay:250,characters:1},ajax:!1,ajaxSettings:{method:"POST"},post:{},url:"",caseSensitive:!0,requestHandler:function(t){return t},responseHandler:function(t){return t},converters:{numeric:{from:function(t){return+t},to:function(t){return void 0===t?"":t+""}},string:{from:function(t){return t},to:function(t){return t}},datetime:{from:function(t){return t?moment(1e3*parseInt(t)):""},to:function(t){return t?t.format("lll"):""}},memsize:{from:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=parseInt(t),s=t.slice(-1).toUpperCase(),o=e.length-1;0<=o;o--)if(s===e[o]){i*=Math.pow(1024,o);break}return i},to:function(t){for(var e=["","K","M","G","T","P","E","Z","Y"],i=e.length-1;0<=i;i--)if(t>=5*Math.pow(1024,i))return parseInt(t/Math.pow(1024,i))+e[i];return parseInt(t)+""}},notprefixable:{to:function(t){return t.not?' '+t.val:t.val}}},css:{actions:"actions btn-group",center:"text-center",columnHeaderAnchor:"column-header-anchor",columnHeaderText:"text",dropDownItem:"dropdown-item",dropDownItemButton:"dropdown-item-button",dropDownItemCheckbox:"dropdown-item-checkbox",dropDownMenu:"dropdown btn-group",dropDownMenuItems:"dropdown-menu pull-right",dropDownMenuText:"dropdown-text",footer:"bootgrid-footer container-fluid",header:"bootgrid-header container-fluid",icon:"icon glyphicon",iconColumns:"glyphicon-th-list",iconDown:"glyphicon-chevron-down",iconRefresh:"glyphicon-refresh",iconSearch:"glyphicon-search",iconUp:"glyphicon-chevron-up",iconReset:"glyphicon-random",infos:"infos",left:"text-left",pagination:"pagination",paginationButton:"button",responsiveTable:"table-responsive",right:"text-right",search:"search form-group",searchField:"search-field form-control",selectBox:"select-box",selectCell:"select-cell",selected:"active",sortable:"sortable",table:"bootgrid-table table"},formatters:{},labels:{all:"All",infos:"Showing {{ctx.start}} to {{ctx.end}} of {{ctx.total}} entries",loading:"Loading...",noResults:"No results found!",refresh:"Refresh",reset:"Reset stored settings and reload the page",search:"Search"},statusMapping:{0:"success",1:"info",2:"warning",3:"danger"},templates:{actionButton:'',actionDropDown:'
                ',actionDropDownItem:'
              • {{ctx.text}}
              • ',actionDropDownCheckboxItem:'
              • ',actions:'
                ',body:"",cell:'{{ctx.content}}',footer:'

                ',header:'

                ',headerCell:'{{ctx.column.text}}{{ctx.icon}}',icon:'',infos:'
                {{lbl.infos}}
                ',loading:'{{lbl.loading}}',noResults:'{{lbl.noResults}}',pagination:'
                  ',paginationItem:'
                • {{ctx.text}}
                • ',rawHeaderCell:'{{ctx.content}}',row:"{{ctx.cells}}",search:'
                  ',select:''}},c.prototype.append=function(t){if(this.options.ajax);else{for(var e=[],i=0;i=this.currentRows.length;for(i=0;!this.options.keepSelection&&n&&i tr "+o+":checked").trigger("click"+f),i=0;i tr[data-row-id="'+this.selectedRows[i]+'"]').addClass(this.options.css.selected)._bgAria("selected","true").find(o).prop("checked",!0);this.element.trigger("selected"+f,[s])}}return this},c.prototype.deselect=function(t){if(this.selection){t=t||this.currentRows.propValues(this.identifier);for(var e,i,s,o=[];0 tr[data-row-id="'+o[i][this.identifier]+'"]').removeClass(this.options.css.selected)._bgAria("selected","false").find(n).prop("checked",!1);this.element.trigger("deselected"+f,[o])}}return this},c.prototype.sort=function(t){var e=t?p.extend({},t):{};return e===this.sortDictionary||(this.sortDictionary=e,x.call(this),S.call(this),d.call(this)),this},c.prototype.getColumnSettings=function(){return p.merge([],this.columns)},c.prototype.getCurrentPage=function(){return this.current},c.prototype.getCurrentRows=function(){return p.merge([],this.currentRows)},c.prototype.getRowCount=function(){return this.rowCount},c.prototype.getSearchPhrase=function(){return this.searchPhrase},c.prototype.getSelectedRows=function(){return p.merge([],this.selectedRows)},c.prototype.getSortDictionary=function(){return p.extend({},this.sortDictionary)},c.prototype.getTotalPageCount=function(){return this.totalPages},c.prototype.getTotalRowCount=function(){return this.total},p.fn.extend({_bgAria:function(t,e){return e?this.attr("aria-"+t,e):this.attr("aria-"+t)},_bgBusyAria:function(t){return null==t||t?this._bgAria("busy","true"):this._bgAria("busy","false")},_bgRemoveAria:function(t){return this.removeAttr("aria-"+t)},_bgEnableAria:function(t){return null==t||t?this.removeClass("disabled")._bgAria("disabled","false"):this.addClass("disabled")._bgAria("disabled","true")},_bgEnableField:function(t){return null==t||t?this.removeAttr("disabled"):this.attr("disabled","disable")},_bgShowAria:function(t){return null==t||t?this.show()._bgAria("hidden","false"):this.hide()._bgAria("hidden","true")},_bgSelectAria:function(t){return null==t||t?this.addClass("active")._bgAria("selected","true"):this.removeClass("active")._bgAria("selected","false")},_bgId:function(t){return t?this.attr("id",t):this.attr("id")}}),!String.prototype.resolve){var D={checked:function(t){return"boolean"==typeof t?t?'checked="checked"':"":t}};String.prototype.resolve=function(t,o){var n=this;return p.each(t,function(t,e){if(null!=e&&"function"!=typeof e)if("object"==typeof e){var i=o?p.extend([],o):[];i.push(t),n=n.resolve(e,i)+""}else{D&&D[t]&&"function"==typeof D[t]&&(e=D[t](e)),t=o?o.join(".")+"."+t:t;var s=new RegExp("\\{\\{"+t+"\\}\\}","gm");n=n.replace(s,e.replace?e.replace(/\$/gi,"$"):e)}}),n}}Array.prototype.first||(Array.prototype.first=function(t){for(var e=0;ei?this.length>s?this.slice(i,s):this.slice(i):[]}),Array.prototype.where||(Array.prototype.where=function(t){for(var e=[],i=0;i Date: Sun, 5 Mar 2023 16:16:10 +0300 Subject: [PATCH 3/3] copyrights update copyrights update --- LICENSE.txt | 2 +- dist/jquery.bootgrid-1.4.1.zip | Bin 30300 -> 30301 bytes dist/jquery.bootgrid.css | 4 ++-- dist/jquery.bootgrid.fa.js | 4 ++-- dist/jquery.bootgrid.js | 4 ++-- dist/jquery.bootgrid.min.css | 4 ++-- jQuery.Bootgrid.nuspec | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 5053a70..0784736 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,7 +1,7 @@ The MIT License (MIT) Copyright © 2014-2015 Rafael J. Staib -Copyright © 2022 Deciso +Copyright © 2018-2023 Deciso Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/dist/jquery.bootgrid-1.4.1.zip b/dist/jquery.bootgrid-1.4.1.zip index 72a61a9ebfc3c725cfc21e1d9b01849cc32ce791..7420e8ae4725ee4e55db5da0d2951e7d5227a3d2 100644 GIT binary patch delta 17476 zcmV)$K#srM>;c{E0S-`00|XQR2mlBGk7#99kq$S1vXcOXy^E7YinKuEwtI#gMl@v7 zB}Y+$q6f+~da^>2Qxw|pXZYrQAi;9+Ax*Hr;cH9b71!SLQ?MG(D{(1SC{SIL)m6E! z))xb}^QYHfpK8XRH>|7GWwEYSS9p*{QiD$ddzSWbiz)Z9=oPpjWuwQn_#u$j%%@FR zc3mfb4nO<&;_)0Wlt0dgynCz2Mbc=UrU0%9pYOh*8Os8DBHZ8YZolkr1-~$i4>4B_`gvh}v&bDbXcFhF6FgcyigmL2EJ$BxIMGmcEAA}|&+lHf1F)ndV>xEW%w?WoV zFfvs)kqYBx%Irx7bw=W_ zo)X_r|Ha6tvNZWU-}Xa3{-F1#?Tdc_P)i301w%H3bO8VWTmk?9P)h>@6aWYS2mp`+ zXk}KD!~x(0k7#99lc)kVGj`_A*(1B1IJT4YY~pxqXLe@WJ~wO;EzxF^3Q6^!ar%Mw zHTKE&{HjnO0D_X*cCvf7lMw?Pf3~XHMV)8r{2=+~K5yWpmS&@OWPC$h`adF!ycuG#CegoS7t1$ zLlqy|h8adbnE{@*i41Uhf_4(--jR&^2yUQTUM{vZiDI9nJ;o?*Ab<*aHY0jj)FU`^ zIWdkgnR`~TI%M4mtC^^O;HcH#e`f(1fI6?rb6vN(Hb7-4+UL!&p{pqeMM_WFtCfDs zYBg=Gig)UbunZ~}qqhT1!`_=28CkYxMN~%6^R&npr6Cf1N2{YkpSGg`&}_6mcIr7# zw$`3E&66T+8sUriN%c0j_{6WtjmpD~^-rt%EN%OIu+I%2>~A7}JtoWn5>#~trhZ}6 z#Mhk;07>1yaX2DGn!Z+J;xvJxh1V!;<|FhYe4c5%_}YCwqv^b7d%G>;d#rWaOa!x$ zG!?uv&24Ot$c5?S=v0-Js@kQlja`FT+>k0QYMo|RY7B3|x@hxPRo&vfE-|5Jlc}07 z_53{y0E2|ONE_9Ev{kLMIGx$>M)jHcf~nd)BGQrxF_{9pOrNIf0(O4A)&uaWy7i%% z2Oj~;DA!p`A9tc)ur`IAX4FiLBbxm1P<;vfzudV`2J}(M27F$XmR9{&4g$N<>;ev( znIfb6`T9)P`J6dHFUa&Jv8JEut{SZ_N8!rRmEJKlV0G$$!XT_f?_mw(0AvB}v-8@q zL;;?3J5L%-Laqn?A!`vq0oD`0NqB%71KOFpQ8cifYzvUwZuxj@Am!Oxb!dhJgAK5= zhLxbPzpq}@`dpW7!=q(YXw}U>jo)Dh>8{L<7=&-TwwL|tL~D5w+blP;Te zts8c7Rb_F1Mczd+pA?h(A}cgVEAu{|+Nw>tXF(z2)Y8G0ehq! z<70xvM0#OFRtnouCJ#()*Jq4ZUO6j0>s6M2wwe~$Q$>TrK{G&)XBPHCVuh{9lMd&- zG>y+jx34kCtRo?91+q6#P!3OPmnl4*GGx=%cad3yWv%Y22e#jQ{h)_6gx4p3 zkkNC5z^~*GFCd)ncV6h$xTpp1ya`?Wz?_|u3*G)w7f#72PpPa~Q^IjZh7Li%JR}AV z76R+KNO-uD?Q_q;8jS{+GX?AFf|S#H&|y)o&ely!ld3AKQY(G7YOiQJ ztz4+8R%y4n1j#X*M~$jV-8pN~2>v{O663-CzDiH3y2Y%n)vDI#d9`lXi6?&i94muX z$r|7^FY{)pGcdIW({pBB=l&Q6j?H>L*I49=E*Z=89`F!_BTeHm4d2V(YRoq5yY07wazrM77NV{d z-&l@U9B3CX1zY%;5^@dy>#Luici;m}fGYUw5!pO<;Ze85CX;q#Z$f_eb%Q{n>c%R9 zjx|Jpk>|q<~(f3(Z|IBhc&`3s9FzhHpNy?uJ8MooikT zRz*==K-lKh88+N{bzn*5XS!OqD%107y((xysg>Q3BXdJF6-lH@Gm>3eOsgetg*IwQ zp%{%i(Wh1Iunm}Uq)O6%HRSs6)dwXyg;a^rAnJOm4(_>qHj-gAqf7`inqXx`mQdgf zhgG=J>J09HCy*)(JG0#pnXe4Ty!Dsa452MI-VEuPD|UWuXe}n?v;h|_!D^g;Pt5|)AtkEeFVYV@ z_E#_wcSnLP+c9+{(Z7xJNrHJ`Y&X&wI{zoPKp$%x4%De$GPqqa0)R;M-g+W$y7AYT zaUa5gJHWN?^TsVPD6qDzvAYy<=tfKwy+fal#_3+ZNEaGRXRRT6f((|u11P?O&@uQ^ z+Afp1&UxRQXKS^8Z`B`#cSsld1I^tqjtn*$JgZ(zL95SJMcV2n7)=*7*af4E@t2tn zd(ve)o+QhZH#qpU4B&awB*xsx&w2A2PSL(Fctccximo?}d9v?SNVAM~SNe^UM;k=y zn%v)KUwfl2mYUr4_^08GPfOL3VvrWupMQ}zTFq+>x?o*@(802kiO|Ct%m6f+$n1s~ zGj}E92oQwa?+)#AkK0v|0EqCI27}uZ+q#guOwaQLPXM=->s*Mn#yd&8=ejBq{t0eX z#kn5aFe(|H7-Ao2XVJs;?UC5iA_-aisB0qJ1`J>=n9fF<&R7tfzCScWca{1?1mi* z2297J?FIo#wYzIQ6vvHFp!WBF)k}R^>t?CGUAJvj_KWoR9k^~7 zrzi#R3RI}MiK96OOs$F}pI7B3d}(mctMUn!?@-&QAedfHVr&;YOk)9cxOW?y>~~#2 ze&9$;gfBW>;l-v|0EjFX>4`2d%P>))dxqfxeo~d=(Y(m#?>%3;Ycc69AR@9Sn9HZN z@8J`F(q-FiWSyo>tEl}(jk_NRAlEd;wlt0wbkeld>P20xQr7o9$B*FQeg;m21IJEr zi@D!r$3q4$`!C%R;dgHn$bBh;hV8zwVVJ8SrL;9>kli+NP==zOR)x{9pEPbjC~xe4n2u~7IR?=Pkz5A+IpgNzB>NM#kK8WG z_W{|E*YfEFmeu;KI@cUFilxTpKreT#cAURWY*gtEV-n2|Hf{E+{`!ZpJgNmrSP;*4r8=EPQP2+Y)i56;h14}f2 zDeP&Z68lyV5ZT{X%*E}EaJic|VdB$YAV~d(s>pQR$BxW84^@{+jx-FepqUT>j>gE7 zkX&cP^~@jMVzs?PL?T(U{9Km%>d~eZ&vw&rXEXVR_9N^l*xw&(gPD;$Fq33;wR&1z zpaov&ut+^Mk2jiM?o2^g!gdPQ{ou8K80+zMfnWeRiPfgKwv+0T`B%Y(5LsQgP@W(X z?xebmLBjzqdm3XisGoGXCgJT5FY7SNae9jmD7fa|ki*OoQW*mfRucly4=9UFs1XnV z1@T1J2G}SRL3f5(nzj+<38Ek9kOodLp}R?*O%++r_6huVCJIq!_NjzFe1chjE#l)+ z_%j&TaYJFV=`W<-%}pz$lTVRkFo_fpxsv6n$oH-jnLTU*6O9g=>@;;-{_!ak!?Ba< zGFjEtYCIxzbT;aFV5ArBC#3fa>3{(sab=@z>nH#k5NEdyeD_Dlr-kGP1elNqmBT`J zw4E^6IPNxx5HdSX_E?8?-aS%(yR4PaQx*(%VDd3ltF3V8!Z|nzkJ)UQHe;+pg$E); z^wO|$GPJ)LQW?LKzn?6gQA{xfm~l5v%V8svt}q=08k^Fdw=~v>JR>7kJfF_K%4m{M zl*O30QoqYDHThPVb%+UGb zPX6U-MKk(m@iL+rf_7scqb_kqiv7G2lW`~5ml>Ffsc$^XyW8@1+l4znJjat4et448 zWi~U2nH?$khY?goI3FH=s=WjG^@uU%T`f7{&9!DIKF|Y*e$%E1tz`;04PhJW9)kDL z+MZ7lbypq4m?}ewz!={ieUJCj>@D+;E*>PM1c1`17te6FO9*eY1ql zTw$qGN@&d%Q8uOle9p9!5Xp_*z*SNr8^y>e}+a=(PU3?w|J9q|ebT3^XQvASKdT9Uwzo|Odc$&>t zaq5U754&{NCD;UzV*>%moTZm6yYWt_JL*1WhXLw}0^<083zm{chZZR29NWOmVOwv6 z02MYOI~9V_>H54n8JemQDd^Eujcym|Z|mv-zVfrk${x@=gPI1ei~)G2g8AmgxL_NJ zQE4nL^z5Th=}(_A4?0mkcH{!s2h#)|;SclQs=|(QuI_dM9qB$w--I2js-bKhQ#C^L z-5%CWt4bVyh}^pWKVS!~cX)+G>>)G{4`p!2SY+oQ7cexf5z1iqT}lnm<|e&8n5qM} zr*1TdG$WruKh3cLOd*uEggU!(?{0$RsMMD&NoCzhB|Y0sDmyK&9&KX7jc_W`#^7WJ z3O)KXl=>rPv%%RZ5;6d$&Kw-F!m*;Z*q*-L8W(wg(-L6K`+HM$me%ie{Uny8h78le zXvrJQ@H;um&(mT};cf$QM0120SZwX~B>5mQx@Vx5R@dQ_;yFou8rw;q+m5-f2DdOH zi}Mb+*+SmtzZ@9!aX+ODUH4NbCRX4nAJ(S*t-jo$3YfXO6O-Lh)@>=_bptvX>g@|I z(?#`vjo?@~*P{u{$^P4|PQwA>NM8`{oR-;-Ic132P#6_x3Z4zx3qn#5(`2BKiFj{o zB`B|;(y(PBEkV7QN}WcFGY(b4pnU;@PcYUH!}1HKZpJj{+2m1f75N@ScQ_U?F4dd`ozVYKwx5|SlcGNDJ=>$ zLxxE2_@|`-sE%=qtZ9$yI=#Z_O|rRxy{ifX97x`F4G_G+BmsoP`DhntAGtRv5ZRgQDV_VC@D9V9dPb$tVp^ zJ}w}XgoL}yi2rp^|!h=T;Aa7FknG8Ja#N4w526rq!(6O=^c8Z;mBvA-v zAdm!f>I2xgf8;~y3}6~NNn5?53_@dn-Z!G5CWLTa2L1NH4uuawY|vd{kW14|`<)S@ zy6xS-Dv)a6$?n#H)GGCb=+0p3VU|W!xKzfc7xrU!HHEs7n4c+*>`I%VRqR5>cc?d~ zIC-}`_HE!9>Te-4irARVrdloYrp@Om(xEj~v8F`6rPi6wDCO@wE#~VYr31!)7t4IU zWP24Ee@NuQL%m^d@H?2W59r*X*CjJ4sJ*?tN9u7=3=6x!530Ka-Z0}!ZGZPt1lrlb zv`*|z>D>fc__+fIP=%zoQz^^%(en_v{5GbZNEIX*uy_wndL%=1lCW*Hqku~r4AEa- z_u55rmEENqpnIEn(w_U-XHnOG8QOvkXD@RyOEjsA)3zapc6T=h16f?nR zkt1{)wnTdXnUjr}kpkQ8>6SG%9ZtjvK%-9_sf7xnvwLAPbcoQ zkOrt5+Fg8v$@p4ty8VRq(xLzrSg#I1x_I2S2r3&8{k%wm)4~3r6|X-$FxnP z0@yZ@Eusj+q-`$$ZFOmXA`|)dM;K}X@B=0Em?@4wI;k#4#)6E~*9kNe)M3pHOi?Ta zcR7d>KQ6DR5x5Ag2I$n$h+B$KC)y7i0ovtWrVF6)wqVSW9-gklKjf@rmp3iglAHTrh@NnH#VQbaZZX9PS+`)@v{y(nD(G@DOGzGoh|W`9H_nCWFwG{td_ae0 zBSRC&#WWA}X}?<-VLaYlQR$Z(7+_*5kanCS8LzPtM2DzRTt7xIB*Vu{NKk5n=ZZ1X zKB%;9Ynlk5o~LZp%#3l^~Epi8I%KG_Zml4=O7@M~EKJ9N$)#uJaI3@fXAzPeY5b&p#(T2(;@LsP!UmT3x@a zE}l{5PtjGB+97fb-k_p3CZ6GqLpNlr1M5!O8`cB?T4U--e{BHO4I;+PeM?PQtnCm6 zY3umJ!YCk5D8I**2-uPd-P7EVGX({sf*Desp2p9A!rI0KVF!{>esDLfSGk*7$1zV> zfSSOM@0|6=JIaInySuz{#BY+wcT*W9G~w0td0KELlXzR;fLVqIA@}j}1Kk7Kgaean ze4J-*U6~Xz;4`9v@Yt7qx5BnIGyQR`dJAsPvf3h0BhIzsQ)p0vxbz0GiS%z*aoJr| zNK7_=Eg@M7*oVXm&(X&4s$r1}VBCdSF)%B0DxghhaWh>~PDs`!6E7@pZile@S$y4= z`XCo;!J*b$iIT4}&mP3`^*}ONZ`rk~(OcBC%sX{;(NkL@)DeaYROW({fW}#WbW@qm zVlx?F41mTfLhob83IKfk2>rs6P6!dKJWmc4uI-?0l#ZodHy#eJqTMPfem?HwMOxK4};#(05t8J69D zLgt^t_IBP3$M-sDVfkr5<+u~iq9OQF>VAH{Npl()=3rMJN^~9LG)EI4(H`q2dyQ5% z@u^QYn1p-oC#0*?7s5$%>rO(3&%inj`rB-Ba5YLFFED=pU5$0ZJ7HMJ9()C>)HXpW zeg{t!M#Nu`^;)DI6>59{N7MqI0Vcl!|8BD(AXNbY8IyM*C<0$rlc6Dm0zYJvCnB5y zZnMN9Gywt2lldc@0>7-2mn5SCe?OBvCG!DhlQ1SM1Mk19lV2wF9s8F@Pt}WGzWwp& ziF)$m<5#cL(`VluJwJMV^z)N(Cn8C1NYyB zvyvzz0X`cXJId$XZ=PdB;dRd;{{GCPFH<-MY!N!-^nFpCqy?M@b(PMS&dXcLiJ9Q6 zIyGT3h$KH$INmA@yQ98|lk_Pnf4-VRC*|#zjY`#NkuGNH9;B)&^;8|8FV$+Q?yEy} zQnhV$HdSBo_oW)Q)k>vhX5Kg!n^_>u)O~_Z+4E%4H12ZQIW<@l@di>}l`|rtGjK$y z%+&G0JuIQ7>Tma^YVY7JwLsbgSHeEM&D4y6Vf1}4m0S|{^ zDo(XoqXuK*j^c|88ibuY^d7gBT-QKGtn;eTTBSu(sbAT=rQOe8Cy6o{^vp5MyivcB z-u_i=3u>=JMBP!}VDD1b?NtZfe~)M@7+Hl*-8&oasBdJLP!oP7hF`SS_qpmGz^>9WmhP0~kaBRU4CKaGm^2+W^C!-HYrvxw|M!KeB(FSU1}axjRI z7%4s185D!A%d{x2R8^|eyl8cumkX00bwSDv)(H*cVg)7)$Cq&Gz_)+_qx<|TF6O`Mz>%ttxx7v zd73ZQwKiNuG_yL*e|3>{OO{=@$p)+h>366=uao-WC9MBqyKcTeJUsjsXQ5r{(|}bz z)&q#($JXjuUKDww=T*rIwTm=|Vm_^E2se>of%D!b$UJk25YAm@Lb3A~#n(GsHSdWI z&(~)s+F1qS9f%}T*!{n`vypiTLizm-p}VsdDiI1ZcwN0Ye+#dMDAOIRz|2I*8hY@6 z|1_F(&_mRXfNUeoLBHP3$(?*T`0=~+a-wSe+gdlRD@x)VGK{t&1P7+mVHriA%ldJ}1x@Xu zMbHQ7f^`+~f2ze2V%?bRe2uQpb-mZ*85Z1UXX_HF{PN0r#kj+d3uq-$M@nDL^{S;D zQd6btx~iwDSJvrGrzzN0`ytxnfPp^(fLhOkw4iwc6h zY}?gre?ML2$-Cd+w@c>L**?4Q63}9QSN{B&+75_Ge|tOWx>qYb&rfsRkYXn(Jk#y6 z$`l_F^I3MW)TL^4Nj^oAZKwd6=fOvpBFwn&ccdi+R-HkqX1Y!DBHUY6chu`8&z4-an>rwwb zRFBJ(f3So*z<>}VF;gMD&6?*~S?BYm;i1tU;x4$rB_-IY!>CFNWmHG5n?ya!+oi5m zs(yV@q_+_k?tIOFcDv^ASTSQPse&9GagO@k1E{@U)t^-c@BRn@d! ztFCSEyCCM55Kf4fS&a=LCf#v(^W=fI0dYrte=}@gWLOn*a?xK97FISb_UC^!kbX$Z ztkAVbBA2D;2z*tv4zFqjM{tLrgV~4c2kIIqlS0fKE|JkZGJA#CYn9bLzQZOQk=7gW zywAthHZR^^!Ct|jr2+iQ%O9ccQvQYJ^SQ>s%tfM7_43)P*UCJcxB|li;%2fUb+(Gh ze`vImn5=6z&#KIQ+{zXy8M$M1g9NzDT-OE8>1^fYXhZ_miRUhcg0Us@M$OX(re)dW z$m5T}n3wjatI&pQ0swd=^*b!AiM`P{fTO{$GdwuNGqPcE>fvISE?oor`&ba_89V-~ zqNpwqY}6?!)hw%Zk;H80f#l$$=+HKL(R4&e%00ANUGs93jc-%{y%=6R}ob>SDH`Q^{lX*;mZ$9LxF zEc3=uUFOLHwRw&TIKX?8jh1ODFO4OkFIVg_Fg$8jRcVXuBK`u|=;lu%HaG5df0iHJ zU<%oZ+zi#A?9+P_4jb1akF9BIb0>Lb)u8^U%vM+vq20%=&o}r^JKTEqYPmksbw2Ms zhoOWdP%fP)vc+N4U3vhag!jcX(oi*QwnE9Yl`<_j{RC|6CRQ=v{c=>e*MI?w7Pzf= zMT9wUL=K`l)@4Qu$ZQh&C>SOFe{bS(dWVIj%(bHU^_V6AO<6gm#abK&m3Zc5=e^pvH`lysU zOzs@qyLWFgaJn|^@QnoBlbf%3!zSTwjYkD`jD}kEI};*trq7!EzoJAR9OXVl5nRNY zoK+c?vo-CXfBEH9efi(Y+NMN zp&?UKfk|F;1Ra# z?a#fvjXDH+N8nL1F!|9OON(ze0sxYr$(=(*_fW2?i}As|`~N((7`U-FZr9}dNv+fO z0~AD=K+{OIfyYKPYaKfU63QE3#kIwsC{=$3i&?`zI#lDosXK#=f12#V>2+NO;;;6H zA*#EbxONitxw#z-N1W98GSWsMGNCk-RlBP7X?_VU9aH=_k`+6nCuP-cB&-qHFCXTL zGu)0&Q+1l|>C1VMp3%Z$^yuM!{z!eP?iwv}o)(b~(r{5Xne~x9Y6wt&41@%9msy}@ zS0h~KKB>w!&C3Q!e`o2SEcI0HW`s7MYJIv(cM2;CY$9_3#Z1wSd58-p>gLzt+U?jMvIrOL_7+A;2 z9cF6O>dSV|q=X0z6Al33EC7$o`Le2!O@`vr_89zLN{>G)f8r(p&ft%P-2vu=0Aq!_ zpG+UZ3>k8>2l6=0)CfPb>Z063Jo#tEml^uBu2wjL7m(1!g0I^OaoIarw{2DafhhUp zb1`~?(^x0fWe=yhdGV)Xg)7$_Z2q9J;j=7GA7DZ`z#Me;aCeSct&3uh)2z@c?=ub9 zU6C>}Zv`3yfA~-16RVP$8c7h`o{4Kj@~1Q}b-j05tn(}!jXav&dNRH@*TZqgnHu3k zEsCqv65m4LcxKLW&(z2k+iRD5*ky|q$58dk&X@YUuF5^=h**V}`n1-~(yLSRvsiIX zj^~wTS8J^BFDtL0pn?g(mrZo^C4wuw@^xBf)mg7>e|cIpARRtGt9%&Fbu&wVWuZ?+ zDevKXh*=kGIHQ}o^OEh3&pDWSIQoR_P_Rn*4^YEhE3UbM+1EE&@Z^qq^6HhD%i+JF z048z)a~cYj<>zK^6pG?JZFQrJ&k_FmvntcBo04Gqoeo^X)$trYX!@Z}t96-u5f(PK(@c$wWz{dhb`IG)s%fhlH?2x+D2$I< z11mE}E_$+UwL9BlJBza)nsmlDlc^Kke_m)rA@Ox)XrJ<(UbgGB;CUN?Fcr>kRW$|L z?jrpR&Rl=?i9)07nSo7lsf532uqRah7~pxjqem(MZ>Q@5u837-f(3Z#;`W!SI{jf# z-5H8V6zN8T1CGlfS`ln_#Nfd_OiUb}2g&kL+1AZcuUkYUV<^?|ik)jUU(!iQe*{*M zvb#xdomfubwsi`*ac>Wdp?~wPUZgeUS)l-{GrCR;5eSHH!2Ih+L=x^kDLtd|e*fL) zg(%=`&{8sIKy!J;<%fs(L=1U*ey;#n*VnL19OUqj zMa3ZjTwh>t`sm?)k#E6FoSiO)WLpi8oY6qv^K!Lr$pLRW0e3rf0s8ImjlI?O&4@Qm z4&RIp-i$Ut7HkNJkytoge>JSK{YSECA`a*Z= zE|yI zSEZ<;cG(kgcy2L%eR#X7b>U5#Dl7Q+u%NW9Sx}qW>qa&x z-ka{a*JcQ;iyq2dnQpdl^+zYKc9z3gN=rHX0CcyGr*m#Pf0fnlMI5Avmo97vpPuzY z(uiopU*z-?0*mSRrns3;D)%%O{H@gmHBvJ)B$T+m7Q;#xMML!Ov)Zn?Bf{yb9al-y z?8Trv;K!XE$P@)u5dq=C-&U9Ojv{HSOwliTZdmM?3+~#0ZTEq69+Y&G z5-3>boGb?JsBg>>EKbd7)&R(SK(&ba2epSJO|3&g`76W98fmFUjS`{Dy}77>a*%xbNm#9P+SLn zO+i=G-F(DTH8(ZeA2-;4e)W-~ofCIUMk~pke>OgTJLRE9Iw}~O#5BAJvuJ_(^ipzl z4&2uk%YlWuA1g0JXq|=P;`HtFNeiqBvsY;k?xZ*kOJ`#X-Rk0s&I}^woO38jNCNk+ zh6f#ha?Zr0et7-Uj|lKz&)aovH@N$PnCYgitE-!fqN%u980}O79-70lYMGM1ALqSS ze{Fu2|Ci1%Khc5m6}oFX!99~Op<451hNIJNjXA;BB*Fbb_LfgqC-f%2E@70qtqvSu zfnp@F<3(gN4R$xXY;NNImL_;vzNHC5M$(jV`UW$lQ$j^AQFn*f?s}_{Gp0=PZkK4A z$-{d|Hy0nX2j$o=rFtMC{t9c9g1HE0^52|AMk)Vlh+nupx3J3#B|;wal> zAa;ow)fa~f3HOGD7iJJ`esGSz)wz9BjQpJ|{D!ONqpLDF85GvP5Tfnat5B=k1Vf*oVLz@IZM$OPsiibB@*^sU^Z ztg%*Se)q0JZ-yNu5?)b$L+%6{yZt7;WBC?H2%Z29t;Su9FCR5_E$sOgKOQE|Jius^O$1b90Zb z8lS9NRh0!@hGUY8DR{~on_>+4Lu|$-PG+Vqa!$)bQ-IEeobT^qAo z!pOQ^qaX7Pzi-tCj!xp7%={2Km}{XsUCmwfu&L`zb>0od&JZx|$$i7nO?2F|8<}>< zG0+>_dJF}|IxcoeBT12y!qs?h1}~83=IJ$Tb|gmouBuvHKQ1$N9>f3Fbjvhc2#sjB zs&^N+3ySVZH`H;IuqTh+fA!FA16@5gY+-lt1$u1mC@}yyksUASL{3Srx7Yyc2x)h^ z34NJWT3Q6{uHV8BuUNUl-PW*0aMuhcu7he$OMrH&z<=@TWh&i;)&@^mx zBe@WeRe~<1Z`juDW)^7iZcqT8nV(f2nW7mT-~Z&-zF6jkR%1p=e@<*ZQulBT#}~mJ z1Wpc2ymo<0O&kwDm;}>aKmZ`^OyS9@T15|-V#MD{@{;_A<2*B~Xt!Cu=w{Dd%K$q5 zB8}oP*&>b|;!aCM`eDx-!ySZ-*H%e6%skHj0Q0~lf@2@}&2F3VsqcMAdA6v-;d3lBAqKT0)}Oic2R;kB+K16}xIRgsQpX&0p|g=pf66|Y`pT8q(YuVrQG~mb zE`~7Oe)UMTbsTHtYM;@;I-P|Vc?lixnON(Wk_>yc?*KXdSpYzynlUo=Vw)1EKOiw1 zyM0WNO?7p#M_c|toXWe+9_MdChc~0Q8%ba0D3Mu{`fN>p^&DaCrK2SNrd&X7GUp*geLY#xvYL zvkfShC2zI@rPRmUfqe+OT7pvZAIBC%q;<#KYRQnko&Spk9! z6t46}e=H*|0X z^a^oDK{>5M)cRH#o_bPAqXxa|?k$x3T9gm$$(A6*iM4k;BAmhG` zyV|?SwU2H`itbF*9rZo7QB#}8kvFyJS~59+=L%@ICC>1TcMwVtHThx*x_Jod!Ffb1Kd8t7e1uMxn7l8`PC_1ZHs%q;NrZh)}2q-B4$BLRNF$goFqaL zf0cJ73|(Xg^QCUrHS!1TMuEt&JO9R~F4V1ugKLBK1>E3uD>>8kLU*wzCQwUQzk!Lw zI&)hd-S$D(bz35Fc5@T<_y0WixF5I)uFpEYpW#{w@3wXPhD__4-ic$b5oxU79hrnV z;{QYTn6S|pcl;iI6knhbcj8NbBr#(Fe_)5vlp=HMiLTvS%OGfo*W}x{<-W6jOcuU0 zw|DP0yf*dvW^9ypcj6(9Ey+f|+u%y)bV}RoVDbjrKPHEGcbfN0`&^PuUw4>o?)%O7 zjL5C|$ww50jfiFMlJk z^L5px1uRawFuBjpnAthp^PBP0Z+j-ym2_$7M-;NX!)j|#v zFGI`UPZr;jPn>*diylq*ec(Y9JZ=U?84&`vgTHfim%sTvuo4U*aJ{%(cD+r4JQfU|z4vcI1!m=GqrUUvu9A5977m+kaq zxUa-mTX3qR&zq$R$-P4EHp}W_J8x0SGh8yFL&r6=gxGr09&q;!GB(M0*BlO=h_uqv3hq<58fcy3~2|&ag=r1PmS|zd&l!E z(8AGVk5MRqW5JgD?5gZY&PI+dcKzyVg#vSXiouvp2z%qW+Zr&1{B!6>@&fbhh1NVry zAsK?00Z7{hj`qQ8H-N)Z6fcGd>X-*=+^kQUHg9pS*i`Wi0a{MF07%e5ke+iSm@~Wq zGPe?)&X+#aP6@u(S29uW#0u)JoTx!`n#UV#<&OmT4VV*WGT)9C0}~+w9?2g_@?Kxj zmXIZ&yCH-VoZX9=I)5HI?F@*3#M|@l^_4s0N^|mQxxil%Gg?^WrUYk#$fp}zdj!z^ zvp~{dAPMpqpP*QWuj?dUJ{;@RbD zJbLry!<#oB1P*q|-(0_WbB!5bapvjH5X-(4P)dohX=iG78k1VnbEs>gl{^^lzqz%) z$fs&_`=7r0my-`i_kVHJ50YZBRYIC8;5>M-lM?#KDWE&gw4F^|S&vtE{5(AqJ_F-G z*Zvu-;{JEhmk5#*%)Go95sL0Si|!lm-HRW8`Tpp+diw0UqvuDjkA8m6^FrXb>v`}% zhpNC(Ctsccvv=|~$ar*%;T z1xt+mm zhy#_@>x|&|^zrM*dyiinMP~kGGrPJn&n?SNyq*|p}6|>e|M^_RP zhEkp~w!WTZ0wqt=WK$$eB8|~mi$3N?&1`F1Mbs0Nz%eaDN|ja^_s-C@P}GSy2i!@;ZSjs%)Z9G0gW%`y@dGB!VniLA+ZZ2T!5HOg|N?T}~g3&@bw7xLgls_zO ze{3k{LakF+ntdqsP|Ue-m=uOGOhM_LrRFjWje?NodK+zyRZ{h|DJ`aVT2Qw zBfDSe{l#PP2t5}fbCiqE=h87nqwcyed$_9hfa8NUvLTTFnbd@f!cRl~3|!X8gWjaH z@BLEmkPkC8%;X?iO=n3Tbm>ya#6B*1dJn4LT<(7-2Gg?KsCpSosA9RUCQ(y4%jMG7 zRMS5PHpY6W(S`8CE(ME{I0*2M*5zACkphV`v-W}D|I}gfY!0lUOdGOR|=;`b6 z%W_aUnpUlUeVskopugRHy_cg0R{-##F~J{h`4Uxn>oc$HAo$%M+$3O8P)&mx^@ zV*MKLax11NTE|BO4=Oq?H>&Np(4fj=B3~!ud<4eT69f8=J^U9?O9u!YLdLTE0{{T| z5C8yBO9KQH00;mG0FY>9R+Fr7GJo74n>HwE*`5gk3Yf*DS)@n{v=d}clUEiqG|5tw zA29Mk{f&NEL0OU|OZH3?11+?$q5C}dt;wqw-+u?M;PdY#`W@U`8!ICDR)+OQyH*2hTWa_=Unl;A)Y=Dc>6sRe!+GC{$tL zo_?b6Lmq--lgVbYp`ZVZ=E4HWr6TYRPHghZEU;pFcmPMU)!1mrsp4s8ix{Jz=*0 z(8%&(uWoY~+f5F8-3iqb`IlzZABtObD05%(DHqX{g=;H(vekuVs9xmtxMcck0n7E4 z?5!p_OP5@kkvE0Ma`ryYJ7q7jav5I)y^mSfVw%49#fLY|rQ!_?XWg7G%sN%Ut?{AN zO)20t_d3}{&PJ_KMs8uOf>M>{x}|rrxxb!QZFH7fSo$(kxVE!cEh^!dluYB3AN4_! za#u2D^dDJvV3K&&(>45eS_D&1rF`2b-hRweZ&7FUyYGzK7wWaI5n`ABXv7 zwKwt)Tq)F?8o6ob?Xa^m@`^+!i1cx%9LuvQufH$xU3h;)nrmdq1vB1&=|`>~>3dpc zYxKI|-)Znl$FsNnR8 zZ=SsIGRQu9w%)+d%r7O^T*F#mmG2JwH_m6vxAEu%-&Q<5(|eIn%Y^%ZiKRP@o;mDOc!{Bl8x|sTbT~abCauU*ECC zua5jSJ5m!E5zFSY`stZTCURk$?=8HxBE67r{l?&Vx=Ux>`TclBvc9q0{KSr@`+ASn zi>P^SeOegJ*XWU@^D$zIl}N2gWZ8;?z*$5Cy~lzDTO4|oLcTu0N7YRY|;%d$~Yx-sLcmKZ}`<}$Gai;3iHqZ>>c&Ms-2x< zt8iiUd0=k0;0NV)MkZZm#K9ZLhe3!kK)~c{CED^6fQ3PM*cGX{K(S{)ED4olU{GM# z*0_DLLa7Ej=%ff>J7ThbsW{{8$?2tvEFfKzdrGC4guN!~c}Yw@P|70@QiWXL2&0&k gH2HO@k^)E{vNOd|)XXmc8YVW`xlEXCa|uWW0CJz!eE9i>;c^D0S-`00|XQR2mlBGvOO79kq$S1wvYgUy^E7YinKuErhA4QMl@v7 zB}Y+$q6g|Vda^>2Qv}-ZXZYrQAi;9+DNV4z;af}L4cFfDbFdmOYjGjgD6qOJtIM)l zRn@@l{OK*&=bG{N531GrqNrBuOFT#;sljJ~Jxlwv#gw}$dIfGs+30aCehB0>^J!C- zUDt_!!_Pjxcsj=m<&X0r@7^kMku+MTDS&Ijm%Hz1#wuo~+~&(q{rngBq#IK3iQ}=I*_mzo+^|KoM4L@2B-MY$=?B`^ z*eBcbt3rVQ2uf<($!@kkv?LNJ6sih^LZMLDzw^ak|Dx`wcmKB5^_BXjs@g@JXX^YQ z`RC+7?WueJvVZ^Y`}gnNzfa|!RI95xUo2bozyFuIfA8R*_wL_TJNUbLnVzP)Q2&~! zS8bY~JWye|f7t^F^;FOErc&P||DLGvvTawh{r!uJi{#y}Xnya+G@s0?vkA5LLq6AK zqcgQGGhM58snw51uT{a16ZJ}K^~00217;KV^605Ldj9&^%jb`OP~RRs`{9!<1Rn?I z=TBZA{q&Pl1eqnas#;w?F0=1-n(6we)o0DP(S@G3RUN1QDOFL2YD}o|&x!hqlMw|) z0o0RM1u6k`lY#|a0j-na1r`B5llTQc0zcQ2IR;b^RB6_zIlok=b#|lbiQP>TkcXfDAyLSLL~` zTU{HVG8FCe=Gf5Hl!GFrC+*crzh$+WwpPVE^+s3*m5b5afu>>a&5VpJ+p{7nBj|Zr zRehGW zeLmRdh7a~Pk$)Z&<^Tz*Is;R`FlyqfP6vRb?%y~Z5h6`rsWEYyK+(c$ls5Ab`Vl_Q zG+un=KA+Ka-m|^kmhnB-x@{(c*+`lS-kIh$wnyZ`^l@~m%1Tx3QrE_=!7Oe_l@_&5 zvnw@*w_shg`KzjK@m`mh(6h-@&6j%q9tMCxLS3YdYJb|Q)>)j+Y*T9 z7#grTb$?+HR-*T?266zhfcDvW?O37!Pr98ajV2-21OJe?5#R9LxRBu*jd9$(AeKsFKT_R%eLXsvMRLd=AXvzu!D40W=D*> z3LT1h7T{<5XD6bruzeKNiSmC<5{q&@mQ6~0}&@?;Ih zyRN}#>9T)^5wCT#s>%j#NJp%!m*c>hie#BJQwR6_$IVO~!*TQB+BFP-HD0I@OX5*B zntv&t2fT7^)usi29xzJA-iM9L53E;BRy^CSbI*467DE3xS$wl@t{&HUI)*Zvbcey*XoMt_TunyJwuCm)C}w{WA6fl96p)x8HQR}X!y zRp@fjE+44;?%nP3%Kf2bP}&+JxH-<>2BM2zI@-gTJ-eYIlhf_nKEgsFqvWg}NZJbY zc9h>FVZdXLm=pC#?HvSN0nmUw(vI;lL1H4kFd{33?I@E6rnc)d#w)L!m7et~OMhEU z3+$<)!Qr48pvN-{dm*vHR^&;C^In?9XQSKK7-ZIwkhTKZ8z?9XhWHxnz1Ax`e>^*T^Ho%db3_)kO+`%?H|)d{KYostL91j9aGIBSv(y8g6``>v@x0 z{#qx5#yFJ29>QR>p$rCVgqZ8PAV+azI)Ldpv#xW0j04AJJ)dhVaz&SnWqJ>Ih{BPk z@tB71<*zkn8}{Ay+d(-Z6MqX)*NSf}$14uB3z&i}{7ebChX3`|PtQB>fhIr|{Pl=z zp1bgg`P9AyZtU~ zREy+c7I?*qv6)&$(3d-!I(QV`N>FJmpj{2)AgGJR@hb$Rr`d(A1D=#zyHRxgBX!U2 z5JOOti>0pNTIbz$wtr=@iAA`PDEHYxB5jNi12~Xxt6pU}L6X!n#eyDy_GnT-uhNC) zu9y*Mc8vw7OC`fMA6a+9p{~v~uLY~3s4gIE^Xd#6ZoN9Nr1CRety`7pd9_{@w4l_= zZpe|jp_+;$Ql%NmE-j|jlD9$|wWLstMxE%>s&?20OgT~|>3efa8w5}iV-#Apz8 zJyi$y+&&x0u$oaO1R71SvLZ_;aE8MwTxoR%cfb=!6^5PJ?ug7+hGX9P%WQ_wmK$$| z^vo5KzTxc)P$@tKkATkhZ48v0>!P5|4noXsnT*+V^?mmKYRR+t%1!3ORHmCW_vnPe#7Wy%{I{8|R^ylE0+Zsg~@c@3v%Ul_b0 zDnLcoo5noZ_bQ}WM!PHh#>t}%B6Usf@3XJHQ5Q>1?t1*w@W!X5YDqCji|o(8$Q!NZ zwFX_VE`R7?*~vuc;S6Q~8ck$&LyVcbl5qqGLhg5m_PNLHsz?Atcua%A?TKw&$X%xA z`GO~a+sbt=#9HH>B;Ipf6$$?Yx2ob?k8K#0j7|)(545xB;rfr0#Zfk%z_-1}AV%tX z($fP*eiEK>m`_~%BYSt>QD(8;*+{lqL`M_4_J1k8V-OpAm!7t|=FV~HpmQDv?Ucw4 z1rur!8LFGujJ5LyvBD^yH&8poG?9~e6OM0SCZU1qP%U&DL_H-bhl0c=D1Jrpg@_#( z2t9NKNt*IUCXhg99e6T)U>tVC4g~|I*1j~1* zZB!6UuO~6K3m&GifI8f}jZOBuE+9W}q$R=^ov!d=(<}f)mW%X67no(3sL(ybZ~;H5 z%JFDk};M+-V> z+G_Qpu2w1Q`<~-R@Nho^C&Gbar?|!3@3P||gO~l6Zi(=_w+ZCFltIIG-`FtB)sRx! z8Z+_$pEPh9-R?eYYTf9T#V|tB0Uq+`X>|MPV+Y7?8#yRLQBSMFXxL90Hz1TZc7IGq zHjf;GXoN^E1OAwC^Kp{>3EM|*7v=kaY{+Z*^a9IjeO8@o4jaW%V{@RFyH-2S-zGMy zbcZpC<_DWL`&GYR>yFPy=n#GmA}6b!eze_}F+C82OPeXRhF;pL^LAH7ji!B>u)#q^ zR9&b!qU(*#l*guVyQ4%4HM@Z&ntv4bv{8wDD+q|}?o|?xS%`bPRAS_`!1?ztBT7Qi7__{za zfSkl?Q(W6gb;Jw| z*NMy?Hi3yohfQ{xx-I|s6pG>4Np+d5>S{F}5jr{>^*k`r3-=S!`-ODC0Fbz{(YAFI z01b$<+XlY-BjnRU@&f`)$b-sZp*z}67;GGO8$<}19VdIN!#eLCsefJ8O6VyI20JkM zn5xxQICSA0oP@`0woIEbR-wWJ5h8kNSUDNm-wdgY-^o8t7SAZAm;%hWo2KQkkx5sW z4g!r$Y0q04Yeb%r5i6cgXJ2JBNhr!<%v-77=9ij$tIRsY1g~*)j2)FHYv-(&K#qN~ z84)?(w0%t~;BLN}MSo4l#t}g7=b)7-a~kt~!=%^ERFlN4j_H7NM4kg&dTj@bY(c?Q zN?YtS3T*oPUPze*`g3;ZnM`toRz)ZO^0cBE{j+!((F{Smv5!%gI3vY=UWv)L6YR?j zOvThUp5@(bdAsexogbd#$qPR`$>}ni8N|$v6#T;osv?{Z4}aC(f&6;J81t@{9P#E_ zGZY`_0YtxPQ-szs1)PSkjdc&f`)F;?r--_%4q{A|p+sPeZ;!smdujF-`Y$)HWh}F& zip47!Th6%JGCtg(k;pKig$C^*8K1l8$NtVx{0!a=mKVGPHSMr+m8gl{9Ofx?yTsyA znOAPOPB5oSBY*sP*P96)s?ok#LT9e9)F~yjW{W5r(*QnaT2CAHLMZIwJJ=}cf+{2A zw>=a0u(Kt$!(Pb^wA9MRcE+T-d;3ue3p4YpWp%+(;wIAs`4J>q#p5T)WqU487E=<- zH@@dtehUoI;}5xWY$)iIH6myPkVCJx`H$s348!wvD4u3>$-Txo3gVsB|!Xow%numunxMM7` zbC3%dn$`$qu=_5h2557W-X2WVf!k9znnRkA&!C^?*Z`&wN?Ssm-MM!+L2^{;%a)|F z?xd2Q?Ix9-mRFB9vEfEI6=`E|vIB)4eHu#r5wqFg>=X$Z08?iU4q4$?QCn0q?v4QBYA9OdU}v8HghfjFW$!VE07c6*Y1kQm)F z&`Yc9a7yuL%oecH%1()ff`hP}nES&4n1m5Qx3v`UQDG*x{hK_-hZo( zPEcn<{x5TY5yRhLZl~s8dHB*KKI6GBugc+_#?2~G)=@?%JvWuS^K49u$U?WT5e-d> z$eDHmxi)>`Voo41F;c8;6W){-g_q2Y;kr6N)m8EE&#pxwdZfjeCu7yN2@%@CF3%Z+9pt zJp_rS|J^}R@lCLH0|hW<-tuIWh9@5v5K2Nq+_^0;GkrN_S#yLJH3Q+nBM6W;Df>(Y z9(H2x*#d(*mLKR?*$g|y&Pb9d1Tzpw0y^~pY}`Ncp>zf?jh&>eUQq_2F@NtH(NGgY zI4^^Kdtisc2O&1-t}w`@>8Ab82vObkZeSHiHSlD2>p*Ii`a*PPF!eA?qbgh~%vLn^T;;TORv1@C^00kQqg6%w|)qmU+|W^AzdOnyOe+ zBHvQ$OlOqxcb*pWb&=8m<9~}~K3}rEii|%ba^a!gus8S}OxOo>?$GO!nH1FC-rghi zxG08&UEl}RT>@{I@ujxEdnp3#>|k0a_NMf10xkU9fdi;Q(%Y$&W&G%Q2wZ*}Q%|G{ zk_=e92PZv}Av#Iew%Sp^r45GYudjRUBDu=$(hbnP%{*z({p_=->wgSw!G^P!IhiGz z)WvDrkVCt>8-s%7fKiCo(H@GK;IqgPx(!>RJ%G%~M$AZo?e=ub8k-I$;sl`4CyvxY z1<~0+lbygnl;9LZUm?aAjl-uCcUnjT)D7(}KEh;ttvB6%LVIaZfC?;Fln)YVMi9DeR)3(DI}aM$qPF?JP4Sp^1_9-y=jagxg+Rvk*EVz+ zuh4CoL$D2SE6Gc1()Uu7nhEN#<_4xHmV&z+M2R085p}~FZ9k_t)4~T^_}LR(6dRiC4}o#` z==N>Pry;~42hzU*^CZw3LQj0ca%viN_mIxx2%G^LnF=%*?qW2gb)N1?rNcKP4BlhIt}aZ4Fdq-#6SW9j zgjNG|>S)9*MW_?)hm8R3@fOzcOapsA&MndlbaS95cm?XxI>ik9E(5xOY*Tf{ zPtgjOW7~O-lk+%8)dM6rqgUI>FjHfp z04Jcu3E>f4bwUv7=rrv`&n&5&f^%KAx<<*(eK15%xV&N&h&;EL;)JYQux;8aBpDTS zIhmy-4}V1GDX$yn!gQEslU_ccL$i^g3FKm$2l}+%EsQW8@2;ry%MA=LF%?KV&XJ7Q zSP7y-)F`eWBN&q5VFT?sZLMh zXMbUBiRq_ zIFm`dEpWgr!-J6fc=>_u0d2y8$u&OCv$w8H3K{SjQ9*d@%f4G-Tbr5wxK_Odw`W;x z5vUR8+VLqgC_!9$gV;p+x2w49E-EA@n}3#&ECuXC;)UmEV|dlD$OSO&!mJpWl{ppA zCbYPjE-5D@Ym#an|SD9xIV)=R?nXI?$TGi++YFg%< zy1MA8EfMMn!v!jH!AU^ltUtP`OlPr~3@`>j;}xOzv10`QK7NFLjvI3Rx!4HfH?#})Sxy-^ z@P@6{hy-r7Cm>q*yP;>0s^n*s$H`t?Kq)BR>#OyuOF`kQX>QBjJ@)U|g(kP(fQI5e z)0rYMANuwVk4#)AMg?QMK)VdfZhs;3&tZEzZ-(Q09kj6gG@x?aiD%Ied?|H5Ki{M| z4GeRzs}Ci*j&Yi!36N-yb(6hDtDE@LryESdJ@*sRRq6}jq`7q`A;V{2od*4FHaWN& zrH>aFzx}4hI^mr#EMyP<2CLLIK`DL*PZUPPUy$`$q#YG%d;mw(0-gaTzXJVcvmzi> z0Rah9`ea(~IC$j^$--NT1C?o+KYaBbu=iP6fV?^O~&msQ)%%d+;I0kGH zI^^_SlhY|70gjXPDJp;dHib^g+bI;zYTQ;Um6n-#<5+BFfizS12|8uZlSR|G%Vp=(U`@muNO@Jxh=k6-5v4Ly#|QVY zgqo_q-;7EPsoVe^)DKYy7d%4E~~`!C>I7e%<8dT&siRUUJW^ zBBF#+)^{-DS!aK`3++M@jeoIVeo<%Zrd1~zrWVYDUodEX!PIx5i{cZ>=5WC6kox+M zC!B-IO-QH9Hm@~FADxZp7@+eIZ`-i6A+AVy-O^jv39 z47x7UqPS93sZR5v)pcGjOn%e_DK}UXdFfsYaz~AEiza`Twe1q}3xiB&XrxhTtyNjI zxK|`UDfDEQLH=Irl~sNJw`uJm6QlPsUn~pwH(`KD0ZbzHMT4y}CdU|VH6jyf=88$i z=C3K_%mRkiJ?+n9sKPZ5q}SYup}SYJd)d)2)au{qQrBrACpjA3g1NLlnOEg$zF61V za23(a>NJ1XMb<4@cHt%)uo9%-p#r^5>W7!G{)_Fp`Tp?m@LQaPcBxMTR{2;DAc7xT zt7myp_2z#pyc(iRcd!C86CrEp!2|x&XwpFs zQ8xmzjW7rOdN(Iahs8`e0IxkF`2@NHQ>Ld|;W<#v5=lW%G^Oa$nL5u?TwtFzSLJ+J zS7o(s)c3Dnzfj}H@6yYOs`amH-L$SKiF3#>+KLbym`;af6n!r1#}yYewTl)(AEXP` zRm6X*7E6eAW3ux#x<1$SUXy27aG#y6OQiD4E9({G4nHoSl}H^aeL2^wmU2ipIUe9f13m0ui-3T^EHyGFuqJR^2Ts2==mVSF`>7 zbd@LXeudvInOA4~?7~Yxi~U{s^G9ksASQq9?WF5ot@J!U&2>YHouu$gx63M1d_>G= z*~LUi|xr&q5>{r6BkE>C~L z67B#4LX5;rh440Oo@Zs9&zFXWMtg|6-~yMFV5bhFDlL>z9l352^(=3fx>l+B{m3yZk09-LJ0b6yARhpE$miR(|WDCw!v?L zm|sFTAzo%RHiVdT$KlPB2i^w69rb_puz`_bRm{mne@0kX*|gZ7|HVN1J}t9C*B*&n zmZBr@Rna=Usudi;9fA&KAFdy$YoJUDF>|;?M)Sz*6=JVdR{Qu4n{Y&0Z^ZLHA6whJ zcz*?Z1%s9b@Xs%QfVxZh7n;xK8V55MiAvSWXRlr>^Kjw{3=fE#$%@q3DkguU(N1Er zuH8JVGWT&STcl*nWMAJ8%K4S zClA!-IV#`)?@cyZrm4I%mV~}svB$vhs99B|Ew+pJ3uL34KZ)4fxYvJKesqH=WG8Yn zRD-fl?@c&tT#r1qrmfAL)EU2`b^jPy!RZ25|Ti< zbfU->hf#Ow0fZ9X7t=^X)v(zLCDT^QwBYm;u(6w1#enzAQQ=+#1}s|Ow&E2L=D-m- zi0W9E87&~QN$8_sl=y$YiO1<37M3#CisILU-8XrQPXmD)M*1SzjByL~gEa8g*>j_x zj;jg3xvx=n?eB|sU3k%RZtTER%hNtR;|%jU>yKGW+U`Y2E0fQtmLhb8zq8 zy~)7o+OWen5_C^)zTyp=gu68!71%KvYSr&dh{TybYx4h!5`A!#`w&HN5o>Z*WmwME zw158Pms9oSf5*Qc@$WnQdyRiD@b4M^{ZIV+&oBEycrMUdBfKx5^uVxjkx++*Oihu` z^?2`KlC;&&tCfGQpQMfUqM)TYe8S=y1CG92Ri!S`xb2q&g6*k;2VH?j*sixf_x3jG z5a=C&N6EnCM{_JKzTF4_NP;GJ4i())xvDP42lwv(^VDMC#@@JHlkX?BPTvnu5M=^Q zBh>~T8_}$F>=Z~SZ-5oo7Jr~r{Sho?4gcs+jsLFh3^IRevJ0ozbs31i+8>6f?snqZ zNz~`&b}$@qQs>J^8-d7#(ok0Is@A9ZCA4%*@!v>R?2Mk2RlAX}Mr6Nym@Ce3J339( zX}YH`=S6x(3yaaChx_>>^`*LNw8(i{L^?>rMcri9NA{>8K>aZg63|^{ftp>7aGm?4 zD%&(K8zg_7rGv86Q@xuJ+I*_@=`P(VtSGRF%moxPMK|UlF7Tu+_ZD@vUhx`V_TW>s zF7sd4ni)m8zpyH&fJ|NBYMH8p1DPXgC^eXZ*NqP5X=Q?u;F{*pqmE!;9Vd5~sZpyh z+dY#KA}~xi0EDvuJTB+Uszx>$ici~P@Ovpe{;Yq9n*cb2KN5Bam=gkw74CjAeF!sT z$ju(e<1|wv{LHG0au4z3pA}zb=+nAd;Rs$pLKh3ZZY#uP?_}M!Rrx!jXm;z#_}*L(#~o*Cgb%eSu2xHY z3xVUAImhroP_n;$U6<+GoS~p9tPR-9^#W^{iSDIa| zvBE#Eyn=!XCInwL(b1O(uJFp&X_-}Ly|RDhY1M#q`24K$VK~>#ECH5Zf0FxBW-TShd&T;qHHL zaJOieYwnp<=0)5?NiSU^3Jr8R|ivvUq9a9wH-x&6D+4)(IC`q|z7 zU2C*I?vl(GsXNMBMw(leT@>B#PINez^k0%Ly-8nO{l@@%K7y3S9zy1W>6d>d{FxfP zTJommhY$1i61QsA?e#UB!~8&(+4VKnkNlHP-&|iSUAA?un-HiuEk0ADAI!P&Bniuu z)l1#1ixyVLbNHa?hdQm+W%fl_*w{`pH8Pe}zX01gWbde^t!mt~DzTw3K57lD%pAGs z$+p$*Y>VwI&VFdp8Q)B%PIP~Jp%I0|*O{Sx%6EF%uG50&Z3MzpIKNfZ6llAP^fNef z{n;l9jk0G3HpQh9{-(j6Q2Aqk=jo0fsRX>8t_!##R+R}B;H8V(U#jZ#he35`C?Zj$ z8x0OPE{AAEu-y@Z2lp^Bad;ji%SUBfH%q;45s{3cRKqKFuGM@=CnbLoSVhY2CcSlH zIf2{ODdfhzJurs;&AWP$)|6+30<6yHIx$2bAie?fuOAUfxcj8^jLQ4{cb}K5_h)Kk zFur+LGcd45)GNs@^^eXOlzPEDzBy-8C80*r*H=~obB=?VruzNG2jZeHFhZ%n7ZJ`g}jLZzCFWc+u zH={@V(`2K*zJ9pR6&{5%47V?iyO|n2#2Sm;;sms567iP78$`gjV5vH{Otn}PI)XKY z5ViF7@Qw9Lz8O7w*sRiWL;G<2#5;(JkCb13p4Per)O~tusqlYrZKf+GT+m1Ic%czh zS43NQya>v=c=T{T%g?uv(YRY57Wt!x9Nf3ZbhdorpVUU2)&OyR4ZFla4i8yW91_6w z1qP>&9_|0(H>)d0yE4fH)PSL>D>@U|0hw^J9O-wxl{TW#Nrc+=$Y&FJ9G zXai)yhJYA}h0}jk!z$Zp)O_IdGv6fKf|$t z#T}K(+&;CJ$-E)piV{Ct^3X4bQO;m&vmT$UQ;|AAmoqa(@{GviiwT$J9=QXyt}ehV z_tCs6_L{T3|Ayx)7xAV^I_Hcb&dSJl6atw7-=uX65*dHoArKlWaf(}C=uX|`(l_bu z!F^+*4B*R#affh78DC~BS+@4bxC0)xOA6}UGdo2NKlw@0XX_4v^e|P+TAv=i8NEx- z(`H`ht9Eu?<=Ob&Ai%gv_#-2@uh_Zrz^FMRJBj^bToOBdYVN6jjtN zdm;|cEyjOOq&d8@$dN0Xhm>gUa45?9&XZGCmYpPi_)we_iTNED!){6Uu&p0GY_Xsz zfS(=3Ob8y|G6qd8nr6|2`Hil(8PrGJ>$|%yyh&4K1^*rvl(sbsYEygN$OgrG(_Q!4 z41smgL%A!{%@(fy=;YPTayUzADTg0`?$+^i&P{)(vf90fgB0=7h3(+evwlb#5smn> zoPI)JF&*C&H}gs5p5}tTwYs22YKDe{64%#aSm~l@i2i+6+ckGYI9;{lDruTs+3gDL zIy^$0f_rI}Ri!ZzFlKm-Zx~9$QkiMnOwbszJ$^7sXP13B#o6R`bEzTiyd>pT^q3NK9J6Xl5SE01?!xX z#lRi)wK;;tsX5IW0GSUc-4h+9{y_QAuGQnROXWZ>aF&CBchv@yGf^6hRb90e$dH&! zpiZVHK=pp8()wZuz(R-J2(pMnsI>!7bG=!&|V zk9ex)re^#72K!I1K612k;%>=kCAojo#>a1`Jk&@>1!I$#h8JNLEl{6cO0Ld<``ThT zuu%77<%I~Xvrt@|zI{GvfmLDlD(%6Y6sKY7Y;2)hU0l(bLFAls4n+w`;NI2npaW3O znV8h~uYddj0siZGyRPj9cV7@Q-L!Reb#qZP6*mi`ol3w%b68d_Q}XxYy!U^q&Cl}x z(i!F_I#9kscWo!QXA&kWJe?q-+GP2Ato1TV|CG(pHnnlet`V5W3RsOTl??hxBuZ#8nplu6$05^XbicrWSZ z;$!xp9NVR@%6bDI#yF1LI){Ia;{*I-NWiL_l+ekQ%Cja>qR(Z|n5+_{$|)-pprgL4 zx;oD@Z4-&~hZrl3jznw~9;2nBta+;jO+z$6XHtM#SASRYklS?!XkA?#Wt$AdE>WZU z;!q*s-mvh(45G~s&T-kxw%Z#Ofz=8191J-;vMR%#+N1;d>glr|p1ps5)-e`k1KYzl zLK0$|Qy@=)J(5@An*Zjglu2ME9=68cm%oU~+a?$K4_lXa`A zvY^XwOmZ;=PkCcgj3IxB&Dg}r%+y8BX?bW0(Am^z;#Ax4ERjcdAWya29`2U)2nT89Y5$#s>?&5Yq z(LL#gI*t@L1QkIfw=1^_3r;{~0_DarK~8$cZ)?M|10pqcA3 zt@Em3srNu3$sW@Nfo8)?MlREd-%ZVku>S7i3&PyUjNqpHyEz;&hqf7-hK+6{7Xq?M z(53VZ+q&J%0xjMR3cxe-v&th=G^6ADpZwYv%e>HP%t(L9iOomq9^??73?hK*wLCQ9LGF z#IZx%X^BWb?0I9jgOKssDk+DV$NBGI9=Jqs>;u2qZ8JXgy$>nRwpIMBrh9_RlHoh-5&JV7&D7~2 zrMXbZj8*?)5HHbZH!K6>Zr>)~@_@7l;}z`<44;9XJL5EL;yAy1w?6=)WBCiZ04OGW zj)f+~pmxOiGq?W0XF*r{Fq#h6Cka&Qn1e2KHj;ly*(Xz9xe_~im$5jCaCg$h5T@I& z9;vpDV~t$xGdftOv+yD>p#we>YyDD^VbAs*Ag4bI07z6bM#f%jQv&q|BxYl`k14XL zt}gay%O8kSdAHf){4MD4X7qL=3G4-T1i&}wFr0NZN$f3Y0w0;lkVk4GWD>3&Bnp6b zrnY}a7Rx@1m%2;AL(M9k>!~`H=RIdV2=5FIPk-)e|2@?VKCl40$5_*NhTCVh0p+sf z%~qh4`gl9A4`EkJP-^~pY(Yd?M+`#g$j6w3fvSs)_g$>IRfT2KHoMMQ0zt&_2ippj z%`DMZU=f5+FRIrfGqH;Mpa5b3vS3AH*@1ufyI6ca=RTv&XIw;(mp|A^1p3LJr@8PD z><;=Y)|9%pT@*jv_UkRQfR(4VKf>xb#Z^DCNg|ZeXxD$|sn>5aD#bfY#O#3MtIcmZ z7ZZ6t%Va!A=$@eU*lK6vjvk&xHC4ymo8M(d#x2pD{*hcRCs!&}iyW5~Ajm-BN^gI} zGU6f-dyLMyPuP8ka-Y?CSkg@0ZXF*trB<4Ff>r*{}gJ?%TMly_;P7 z=ys&&&P3f&-(edywRs$QQ=6_OlLL6JfOcEr4BvPMp#)KrFP5O22a(4(#kDr6NiAf} zzt_0unQk}0?K6DgLu#DsRjHLF zMRqV>>ULctf6#6eh#b4~Z+z-P-Fi5m`JQMx8>1o zA9P)}B@$;hH(`JO&vTFaft%p^tmFF`u9fg^TgPw6w65u$IOZCW#`@inNth%4KV**y z8;xoI@{vnb`TdYSRK1 zCtaA_XJ^dp9Pate`02O36F-TC)IQypyj|N4Sv1@SJH!8pnJ2czO?VgS_eZc!TD~FY z`b^tb-@QC~s-FDx zbz!#7+`9%4bUx)(`Bry-2fIrq>MK?mblvnQt@CtGTx$YJnaj5$MMSlb!^F$b@{g0n zH|yr=ah<0fhU1fUbG02alv0Nr^NYAMs-?a%%tu@1k4B2!LPW7{`%ukxEq@9R@MvRK zIQZJ{jG`F-t-WDOmk#4R#+BYajW@Q+HzkLy>JqzhTiYFTIhT%qrsg0eT|etwKhmz}^N_rbY#1y`)z9n^z22sT67L2(>qo%U1XJlo#!JPUL(^6)A= z_0({l`Le~z?i%`pzrrK_1+OI$X=9G**1D;RbI~5oYyvmD&8z3%YL6jl!*sgtm$kSF|N$3FvMJ z;RI**Vy2FNhfX^KA|Ubh{Cj=n&bZQ?d|EE>m&A+~7P%?GnIQ7%2G?z+BL&35K#e%PiO47kMaGz zzQQJ7$GER76O(sUUXDk}hzOj(21V%^{%>dug0ezOn!CDGhjcsoOTBn@xf+k&y!r6v z%?E*lUGg{AZ{A#E23VYVx--PGF9noRVr<%(nw`d^*7O|enrI~t#`|w>?Jx4F8r}Y< zzx}t95J&faJn9EYvDhjh%@uGSyx2(zedH9-ooCw4rmn2VD?EOlo(Z3UaiDAe2v%|b zyXZ><$q8m&UW^Ducb-M}jrZ=w4?ll*^jtlC_U+O0qt{12J?D8LaNPAgc%Va7V5pNX zPZG7;m4)}zqcKO#_gMspX}y4f9M0M_(mC)*PNPzP9BH6_xbJkN4VKfoD1rj!BnO%x zr9g`iSsJJ@#h^HfFv5O30;0E2ADt)tG<1Z=#uXiMg#;%NoIDxFXoCsoOLg6Ld0 zqPE8jTmvU*aLr$z3aA6DbOZuL-7htS;4U^c{oO6zq- zaD4js_2a$AFOH(K1F*X_9`Qjdn?hRV1Ugie$S*pDdp#My`?s~Oucpdm7<%y6zx*E_ zP)i30gYo0wI7a{gVlM#zP)h>@6aWYS2mrG^8CA0(N=qUHvOO79lW=S{3oyn&7f!QC zkrrrOld)_ifBX8?1m42u-%7NPaHq9fTft#FCs$++3CwP$i|grPwpawY_u4#KvCbX* z^A#4e`Bk!*&9C8ino*SSGl6?Y#p)KuayN;GfS-_wLc<;TlfZYmb0(cmce@?={Fhgs ztZMay>CN{+-zULP7097f94)vU;g^qpfUN!|aE}O|e?Gqd@az2t;`RyrS&MPVd;OhG6QmaL>^54SzjX0Vuf%^5d=WU)xKO0z0vt-Fq{Bqj`{JY{Ts zJ;?-0o~FsBNSH(#qq7!$%8i=Y*0zeMXDESVT85M=tuXGLp=+V26LAi@(}33`=?q?r zjnURo<>IiEdC0qXe1yvM9j)@-;odbV6w3Pye;$yPQ_0%u(!h`XAB0qo5ef-c`ib&aAewsg7tj(vIbaD_TWoG@r2d4vTOgn2vx%fCoD(yu+saB z$KnZkE=1-i7hle$V~R%Ibz$~!RqX-C2W@0SApbL|2^WQ*hWrJ%tdR%3Non8vrQRVQ zW@?zpLA09Al0NFvrI3kzT=euFRKdC2e@_giWw}xHGL}%qa$QZLrgE0crLU=`e-3Pn z^-!Y=;fGxc7A19J8%pv>t@cSfXB8>@gk4D-#H{V-&w=uedy4|ni7^24cio2P8*(P~ zE`?lhj><>H?>)h_?hvIErVvFq)~8NST-==-Gv|WkJ@lL85f3|(=&I1Nbb+L>e{h6# z5+E#=i}A+Vs6Ct`?TN3sZN*X7hf{cyQUAsA+VNmz7s78RzMM!+{T9&g0JW=}D4kd= zO6iK=z|h?+^BE90uAc-9tIZ>psiZ)O%!R!>s;hS%l*NGCx5o0|snO8W*W;Jvpma2? zTL1bwd$K`)yZd@CM-Q$5;6r1yUMhStbdSCY+rRKCp{A1wm7^7Iyhxu#I?=@XHQwb` zOi{Fsj|d)AbX;y!+i{^mmB&QBOvw2NjH@RG^bLFXFHlPd2o+ZW===i!0QnFA08mQ< z1QY-W00;oHJsDM#t#C4bFvzA2Dq5Cjf&m50V$v*9qy^e3x~Iu2iy4}ir6@lj%qU6zYwM@w=-(3`cRFEG*r~=6Y{ezP4 za_=ph&9>Vu{q$!rA1xd6RN(si+TKScz!V@!X(Tw}b09x|_?_s(Yf2sg$j1-w-v9FZ zG4I!0bxEsDZtN~i&%MM=GG<;3E1aTORbVd@|Kxz`j;ynHy(G={Z?zVxx0}TOr=?$o zWBrCNQIZM5f3`5ZbFr(Rmc=nOr1fge`6--Qi!Rbqm0QFc1ZMfREHIw>k#E9tZ{CRv zYxQ@Ob@)xuyfA5FMy!hy^ZVsXJFAly{@kfja6N4v%c-ZQuB+a5;NcT z*KyJ0q|7siKyS_yL~0dfDyqlHY~*N3<={smi#`mf`itJL!1Q9iKB+ zPXA+@=6@~;Srq>+TQy*D^7_f!A9}tHnyzr+D(^8T?q%M3^PGI8B~9<#%&k~AyI=Ui z#1oD-x`pL;d1Rvvul$-aaW%_#)`WFQ&w1wLeVcgX-3i}_+{?h#H=0X=L=z=X#+_To zvN^E+4xeyyqEhyqrZV}SaR0mb!DN^H61anHT=&Uir1SN+>BhlZvIx^?hOZ~Nk#oRYf!tfsancv_w6-@ zZ+bt=pZ!?fXT8tkX-~bp3^I2JznXYK&>=gOJ9LTQyv6l%1b0}R*KhwfuWj+GBfs^I z)I=`Ovt9DFD6LS6Z*@w+imk6AXB?J(F*V(NrFwa(OzE4_V~36THm=!~@y9)JQiwAD z?IIqRpyr9qi>~aGSafoeGq2pcD8@ud|Axh^83OzEsULs!*=}cjyUZ8U@=r+>YUYO1 zYHt>pT`Ox7-skJ?UC$eyJAbQmPUidI1!7zabZ0r`HptkkWnC&z(wN*Fysuu=Zux_p zc(dHAR}Xu9cVYMaFlXDP8L2mdldJacbh~o?OJ&2}MRF(q+dKSW2IcmQ`%5d%19Q6t zKPa~|GU+lSj@&>#2SStq0w!NC(U#u~JOH9R?26P}px84YmV`<&Feor=Yuq+ju~dT{ zbVvlS9WgneRGe|vgy(F~JtwSz&gi%aPocyL#NdcrE*}38< UYUULH4HcX0QYOr{sRSeg0Qr?5O#lD@ diff --git a/dist/jquery.bootgrid.css b/dist/jquery.bootgrid.css index 9a112fa..57e1bf5 100644 --- a/dist/jquery.bootgrid.css +++ b/dist/jquery.bootgrid.css @@ -1,6 +1,6 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/25/2022 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) + * jQuery Bootgrid v1.4.1 - 03/05/2023 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2023 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ .bootgrid-header, diff --git a/dist/jquery.bootgrid.fa.js b/dist/jquery.bootgrid.fa.js index cac67ab..f26e5da 100644 --- a/dist/jquery.bootgrid.fa.js +++ b/dist/jquery.bootgrid.fa.js @@ -1,6 +1,6 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/25/2022 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) + * jQuery Bootgrid v1.4.1 - 03/05/2023 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2023 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ ;(function ($, window, undefined) diff --git a/dist/jquery.bootgrid.js b/dist/jquery.bootgrid.js index b9ac718..9c7eebe 100644 --- a/dist/jquery.bootgrid.js +++ b/dist/jquery.bootgrid.js @@ -1,6 +1,6 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/25/2022 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) + * jQuery Bootgrid v1.4.1 - 03/05/2023 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2023 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */ ;(function ($, window, undefined) diff --git a/dist/jquery.bootgrid.min.css b/dist/jquery.bootgrid.min.css index e1a3139..2ba53f0 100644 --- a/dist/jquery.bootgrid.min.css +++ b/dist/jquery.bootgrid.min.css @@ -1,5 +1,5 @@ /*! - * jQuery Bootgrid v1.4.1 - 08/25/2022 - * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2022 Deciso B.V. (http://www.jquery-bootgrid.com) + * jQuery Bootgrid v1.4.1 - 03/05/2023 + * Copyright © 2014-2015 Rafael J. Staib; Copyright © 2018-2023 Deciso B.V. (http://www.jquery-bootgrid.com) * Licensed under the MIT license. See LICENSE.txt for more details. */.bootgrid-footer,.bootgrid-header{margin:15px 0}.bootgrid-footer a,.bootgrid-header a{outline:0}.bootgrid-footer .search,.bootgrid-header .search{display:inline-block;margin:0 20px 0 0;vertical-align:middle;width:180px}.bootgrid-footer .search .glyphicon,.bootgrid-header .search .glyphicon{top:0}.bootgrid-footer .search .fa,.bootgrid-header .search .fa{display:table-cell}.bootgrid-footer .search .search-field::-ms-clear,.bootgrid-footer .search.search-field::-ms-clear,.bootgrid-header .search .search-field::-ms-clear,.bootgrid-header .search.search-field::-ms-clear{display:none}.bootgrid-footer .pagination,.bootgrid-header .pagination{margin:0!important}.bootgrid-footer .infoBar,.bootgrid-header .actionBar{text-align:right}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu{text-align:left}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item{cursor:pointer;display:block;margin:0;padding:3px 20px;white-space:nowrap}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item:focus,.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item:hover,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item:focus,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item .dropdown-item-checkbox,.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item.dropdown-item-checkbox,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item .dropdown-item-checkbox,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item.dropdown-item-checkbox{margin:0 2px 4px 0;vertical-align:middle}.bootgrid-footer .infoBar .btn-group>.btn-group .dropdown-menu .dropdown-item.disabled,.bootgrid-header .actionBar .btn-group>.btn-group .dropdown-menu .dropdown-item.disabled{cursor:not-allowed}.bootgrid-table{table-layout:fixed}.bootgrid-table a{outline:0}.bootgrid-table th>.column-header-anchor{color:#333;cursor:not-allowed;display:block;position:relative;text-decoration:none}.bootgrid-table th>.column-header-anchor.sortable{cursor:pointer}.bootgrid-table th>.column-header-anchor>.text{display:block;margin:0 16px 0 0;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.bootgrid-table th>.column-header-anchor>.icon{display:block;position:absolute;right:0;top:2px}.bootgrid-table th:active,.bootgrid-table th:hover{background:#fafafa}.bootgrid-table td{overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.bootgrid-table td.loading,.bootgrid-table td.no-results{background:#fff;text-align:center}.bootgrid-table td.select-cell,.bootgrid-table th.select-cell{text-align:center;width:30px}.bootgrid-table td.select-cell .select-box,.bootgrid-table th.select-cell .select-box{margin:0;outline:0}.table-responsive .bootgrid-table{table-layout:inherit!important}.table-responsive .bootgrid-table th>.column-header-anchor>.text{overflow:inherit!important;-ms-text-overflow:inherit!important;-o-text-overflow:inherit!important;text-overflow:inherit!important;white-space:inherit!important}.table-responsive .bootgrid-table td{overflow:inherit!important;-ms-text-overflow:inherit!important;-o-text-overflow:inherit!important;text-overflow:inherit!important;white-space:inherit!important} \ No newline at end of file diff --git a/jQuery.Bootgrid.nuspec b/jQuery.Bootgrid.nuspec index 607f853..0caf51d 100644 --- a/jQuery.Bootgrid.nuspec +++ b/jQuery.Bootgrid.nuspec @@ -12,7 +12,7 @@ true Nice, sleek and intuitive. A grid control especially designed for bootstrap. Nice, sleek and intuitive. A grid control especially designed for bootstrap. - Copyright © 2014-2015, Rafael Staib; Copyright © 2022, Deciso B.V. + Copyright © 2014-2015, Rafael Staib; Copyright © 2018-2023, Deciso B.V. jQuery, Grid, Table, Bootstrap, Accessibility, HTML5, Sorting, Filtering, UI