diff --git a/npm/packs/core/src/abp.js b/npm/packs/core/src/abp.js
index b72b8b49e5..4c87489e22 100644
--- a/npm/packs/core/src/abp.js
+++ b/npm/packs/core/src/abp.js
@@ -1,5 +1,5 @@
-var abp = abp || {};
-(function ($) {
+var abp = abp || {};
+(function () {
/* Application paths *****************************************/
@@ -187,41 +187,32 @@
abp.message = abp.message || {};
- var showMessage = function (message, title) {
+ abp.message._showMessage = function (message, title) {
alert((title || '') + ' ' + message);
-
- if (!$) {
- abp.log.warn('abp.message can not return promise since jQuery is not defined!');
- return null;
- }
-
- return $.Deferred(function ($dfd) {
- $dfd.resolve();
- });
};
abp.message.info = function (message, title) {
abp.log.warn('abp.message.info is not implemented!');
- return showMessage(message, title);
+ return abp.message._showMessage(message, title);
};
abp.message.success = function (message, title) {
abp.log.warn('abp.message.success is not implemented!');
- return showMessage(message, title);
+ return abp.message._showMessage(message, title);
};
abp.message.warn = function (message, title) {
abp.log.warn('abp.message.warn is not implemented!');
- return showMessage(message, title);
+ return abp.message._showMessage(message, title);
};
abp.message.error = function (message, title) {
abp.log.warn('abp.message.error is not implemented!');
- return showMessage(message, title);
+ return abp.message._showMessage(message, title);
};
abp.message.confirm = function (message, titleOrCallback, callback) {
- abp.log.warn('abp.message.confirm is not implemented!');
+ abp.log.warn('abp.message.confirm is not properly implemented!');
if (titleOrCallback && !(typeof titleOrCallback == 'string')) {
callback = titleOrCallback;
@@ -229,15 +220,6 @@
var result = confirm(message);
callback && callback(result);
-
- if (!$) {
- abp.log.warn('abp.message can not return promise since jQuery is not defined!');
- return null;
- }
-
- return $.Deferred(function ($dfd) {
- $dfd.resolve(result);
- });
};
/* UI *******************************************************/
@@ -422,12 +404,6 @@
};
abp.utils.isFunction = function (obj) {
- if ($) {
- //Prefer to use jQuery if possible
- return $.isFunction(obj);
- }
-
- //alternative for $.isFunction
return !!(obj && obj.constructor && obj.call && obj.apply);
};
diff --git a/npm/packs/jquery/src/abp.dom.js b/npm/packs/jquery/src/abp.dom.js
deleted file mode 100644
index 9cf66a6eb4..0000000000
--- a/npm/packs/jquery/src/abp.dom.js
+++ /dev/null
@@ -1,59 +0,0 @@
-var abp = abp || {};
-(function ($) {
-
- if (!$) {
- return;
- }
-
- abp.dom = abp.dom || {};
-
- abp.dom.onNodeAdded = function (callback) {
- abp.event.on('abp.dom.nodeAdded', callback);
- };
-
- abp.dom.onNodeRemoved = function (callback) {
- abp.event.on('abp.dom.nodeRemoved', callback);
- };
-
- $.fn.findWithSelf = function (selector) {
- return this.filter(selector).add(this.find(selector));
- };
-
- var mutationObserverCallback = function(mutationsList) {
- for (var i = 0; i < mutationsList.length; i++) {
- var mutation = mutationsList[i];
- if (mutation.type === 'childList') {
- if (mutation.addedNodes && mutation.removedNodes.length) {
- for (var k = 0; k < mutation.removedNodes.length; k++) {
- abp.event.trigger(
- 'abp.dom.nodeRemoved',
- {
- $el: $(mutation.removedNodes[k])
- }
- );
- }
- }
-
- if (mutation.addedNodes && mutation.addedNodes.length) {
- for (var j = 0; j < mutation.addedNodes.length; j++) {
- abp.event.trigger(
- 'abp.dom.nodeAdded',
- {
- $el: $(mutation.addedNodes[j])
- }
- );
- }
- }
- }
- }
- };
-
- new MutationObserver(mutationObserverCallback).observe(
- $('body')[0],
- {
- subtree: true,
- childList: true
- }
- );
-
-})(jQuery);
\ No newline at end of file
diff --git a/npm/packs/jquery/src/abp.ajax.js b/npm/packs/jquery/src/abp.jquery.js
similarity index 51%
rename from npm/packs/jquery/src/abp.ajax.js
rename to npm/packs/jquery/src/abp.jquery.js
index 605b254a7b..bf4c920815 100644
--- a/npm/packs/jquery/src/abp.ajax.js
+++ b/npm/packs/jquery/src/abp.jquery.js
@@ -1,13 +1,93 @@
var abp = abp || {};
-(function ($) {
+(function($) {
if (!$) {
- return;
+ throw "abp/jquery library requires the jquery library included to the page!";
}
- /* JQUERY ENHANCEMENTS ***************************************************/
+ // ABP CORE OVERRIDES /////////////////////////////////////////////////////
- // abp.ajax -> uses $.ajax ------------------------------------------------
+ abp.message._showMessage = function (message, title) {
+ alert((title || '') + ' ' + message);
+
+ return $.Deferred(function ($dfd) {
+ $dfd.resolve();
+ });
+ };
+
+ abp.message.confirm = function (message, titleOrCallback, callback) {
+ if (titleOrCallback && !(typeof titleOrCallback == 'string')) {
+ callback = titleOrCallback;
+ }
+
+ var result = confirm(message);
+ callback && callback(result);
+
+ return $.Deferred(function ($dfd) {
+ $dfd.resolve(result);
+ });
+ };
+
+ abp.utils.isFunction = function (obj) {
+ return $.isFunction(obj);
+ };
+
+ // JQUERY EXTENSIONS //////////////////////////////////////////////////////
+
+ $.fn.findWithSelf = function (selector) {
+ return this.filter(selector).add(this.find(selector));
+ };
+
+ // DOM ////////////////////////////////////////////////////////////////////
+
+ abp.dom = abp.dom || {};
+
+ abp.dom.onNodeAdded = function (callback) {
+ abp.event.on('abp.dom.nodeAdded', callback);
+ };
+
+ abp.dom.onNodeRemoved = function (callback) {
+ abp.event.on('abp.dom.nodeRemoved', callback);
+ };
+
+ var mutationObserverCallback = function (mutationsList) {
+ for (var i = 0; i < mutationsList.length; i++) {
+ var mutation = mutationsList[i];
+ if (mutation.type === 'childList') {
+ if (mutation.addedNodes && mutation.removedNodes.length) {
+ for (var k = 0; k < mutation.removedNodes.length; k++) {
+ abp.event.trigger(
+ 'abp.dom.nodeRemoved',
+ {
+ $el: $(mutation.removedNodes[k])
+ }
+ );
+ }
+ }
+
+ if (mutation.addedNodes && mutation.addedNodes.length) {
+ for (var j = 0; j < mutation.addedNodes.length; j++) {
+ abp.event.trigger(
+ 'abp.dom.nodeAdded',
+ {
+ $el: $(mutation.addedNodes[j])
+ }
+ );
+ }
+ }
+ }
+ }
+ };
+
+ new MutationObserver(mutationObserverCallback).observe(
+ $('body')[0],
+ {
+ subtree: true,
+ childList: true
+ }
+ );
+
+ // AJAX ///////////////////////////////////////////////////////////////////
abp.ajax = function (userOptions) {
userOptions = userOptions || {};
@@ -187,4 +267,123 @@
abp.ajax.defaultError404.details = l('DefaultErrorMessage404Detail');
});
+ // RESOURCE LOADER ////////////////////////////////////////////////////////
+
+ /* UrlStates enum */
+ var UrlStates = {
+ LOADING: 'LOADING',
+ LOADED: 'LOADED',
+ FAILED: 'FAILED'
+ };
+
+ /* UrlInfo class */
+ function UrlInfo(url) {
+ this.url = url;
+ this.state = UrlStates.LOADING;
+ this.loadCallbacks = [];
+ this.failCallbacks = [];
+ }
+
+ UrlInfo.prototype.succeed = function () {
+ this.state = UrlStates.LOADED;
+ for (var i = 0; i < this.loadCallbacks.length; i++) {
+ this.loadCallbacks[i]();
+ }
+ };
+
+ UrlInfo.prototype.failed = function () {
+ this.state = UrlStates.FAILED;
+ for (var i = 0; i < this.failCallbacks.length; i++) {
+ this.failCallbacks[i]();
+ }
+ };
+
+ UrlInfo.prototype.handleCallbacks = function (loadCallback, failCallback) {
+ switch (this.state) {
+ case UrlStates.LOADED:
+ loadCallback && loadCallback();
+ break;
+ case UrlStates.FAILED:
+ failCallback && failCallback();
+ break;
+ case UrlStates.LOADING:
+ this.addCallbacks(loadCallback, failCallback);
+ break;
+ }
+ };
+
+ UrlInfo.prototype.addCallbacks = function (loadCallback, failCallback) {
+ loadCallback && this.loadCallbacks.push(loadCallback);
+ failCallback && this.failCallbacks.push(failCallback);
+ };
+
+ /* ResourceLoader API */
+
+ abp.ResourceLoader = (function () {
+
+ var _urlInfos = {};
+
+ function getCacheKey(url) {
+ return url;
+ }
+
+ function appendTimeToUrl(url) {
+
+ if (url.indexOf('?') < 0) {
+ url += '?';
+ } else {
+ url += '&';
+ }
+
+ url += '_=' + new Date().getTime();
+
+ return url;
+ }
+
+ var _loadFromUrl = function (url, loadCallback, failCallback, serverLoader) {
+
+ var cacheKey = getCacheKey(url);
+
+ var urlInfo = _urlInfos[cacheKey];
+
+ if (urlInfo) {
+ urlInfo.handleCallbacks(loadCallback, failCallback);
+ return;
+ }
+
+ _urlInfos[cacheKey] = urlInfo = new UrlInfo(url);
+ urlInfo.addCallbacks(loadCallback, failCallback);
+
+ serverLoader(urlInfo);
+ };
+
+ var _loadScript = function (url, loadCallback, failCallback) {
+ _loadFromUrl(url, loadCallback, failCallback, function (urlInfo) {
+ $.getScript(url)
+ .done(function () {
+ urlInfo.succeed();
+ })
+ .fail(function () {
+ urlInfo.failed();
+ });
+ });
+ };
+
+ var _loadStyle = function (url) {
+ _loadFromUrl(url, undefined, undefined, function (urlInfo) {
+
+ $('', {
+ rel: 'stylesheet',
+ type: 'text/css',
+ href: appendTimeToUrl(url)
+ }).appendTo('head');
+ });
+ };
+
+ return {
+ loadScript: _loadScript,
+ loadStyle: _loadStyle
+ }
+ })();
+
})(jQuery);
\ No newline at end of file
diff --git a/npm/packs/jquery/src/abp.resource-loader.js b/npm/packs/jquery/src/abp.resource-loader.js
deleted file mode 100644
index f2634dd5a5..0000000000
--- a/npm/packs/jquery/src/abp.resource-loader.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * abp.ResourceLoader can be used to load a script/style file from a URL on demand.
- * It ensures that a script/style is only loaded once.
- */
-var abp = abp || {};
-(function ($) {
-
- /* UrlStates enum */
- var UrlStates = {
- LOADING: 'LOADING',
- LOADED: 'LOADED',
- FAILED: 'FAILED'
- };
-
- /* UrlInfo class */
- function UrlInfo(url) {
- this.url = url;
- this.state = UrlStates.LOADING;
- this.loadCallbacks = [];
- this.failCallbacks = [];
- }
-
- UrlInfo.prototype.succeed = function () {
- this.state = UrlStates.LOADED;
- for (var i = 0; i < this.loadCallbacks.length; i++) {
- this.loadCallbacks[i]();
- }
- };
-
- UrlInfo.prototype.failed = function () {
- this.state = UrlStates.FAILED;
- for (var i = 0; i < this.failCallbacks.length; i++) {
- this.failCallbacks[i]();
- }
- };
-
- UrlInfo.prototype.handleCallbacks = function (loadCallback, failCallback) {
- switch (this.state) {
- case UrlStates.LOADED:
- loadCallback && loadCallback();
- break;
- case UrlStates.FAILED:
- failCallback && failCallback();
- break;
- case UrlStates.LOADING:
- this.addCallbacks(loadCallback, failCallback);
- break;
- }
- };
-
- UrlInfo.prototype.addCallbacks = function (loadCallback, failCallback) {
- loadCallback && this.loadCallbacks.push(loadCallback);
- failCallback && this.failCallbacks.push(failCallback);
- };
-
- /* ResourceLoader API */
-
- abp.ResourceLoader = (function () {
-
- var _urlInfos = {};
-
- function getCacheKey(url) {
- return url;
- }
-
- function appendTimeToUrl(url) {
-
- if (url.indexOf('?') < 0) {
- url += '?';
- } else {
- url += '&';
- }
-
- url += '_=' + new Date().getTime();
-
- return url;
- }
-
- var _loadFromUrl = function (url, loadCallback, failCallback, serverLoader) {
-
- var cacheKey = getCacheKey(url);
-
- var urlInfo = _urlInfos[cacheKey];
-
- if (urlInfo) {
- urlInfo.handleCallbacks(loadCallback, failCallback);
- return;
- }
-
- _urlInfos[cacheKey] = urlInfo = new UrlInfo(url);
- urlInfo.addCallbacks(loadCallback, failCallback);
-
- serverLoader(urlInfo);
- };
-
- var _loadScript = function (url, loadCallback, failCallback) {
- _loadFromUrl(url, loadCallback, failCallback, function(urlInfo) {
- $.getScript(url)
- .done(function () {
- urlInfo.succeed();
- })
- .fail(function () {
- urlInfo.failed();
- });
- });
- };
-
- var _loadStyle = function (url) {
- _loadFromUrl(url, undefined, undefined, function (urlInfo) {
-
- $('', {
- rel: 'stylesheet',
- type: 'text/css',
- href: appendTimeToUrl(url)
- }).appendTo('head');
- });
- };
-
- return {
- loadScript: _loadScript,
- loadStyle: _loadStyle
- }
- })();
-
-})(jQuery);
\ No newline at end of file
diff --git a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs
index 733331e28a..026d118771 100644
--- a/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs
+++ b/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs
@@ -31,9 +31,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling
{
//TODO: Move to their own contributors, but first consider to change abp.js a bit
"/libs/abp/core/abp.js",
- "/libs/abp/jquery/abp.dom.js",
- "/libs/abp/jquery/abp.ajax.js",
- "/libs/abp/jquery/abp.resource-loader.js",
+ "/libs/abp/jquery/abp.jquery.js",
"/libs/abp/aspnetcore.mvc.ui.theme.shared/jquery/jquery-extensions.js",
"/libs/abp/aspnetcore.mvc.ui.theme.shared/jquery-form/jquery-form-extensions.js",