mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
81 lines
2.9 KiB
JavaScript
81 lines
2.9 KiB
JavaScript
/**
|
|
* @ngdoc service
|
|
* @name $ionicBody
|
|
* @module ionic
|
|
* @description An angular utility service to easily and efficiently
|
|
* add and remove CSS classes from the document's body element.
|
|
*/
|
|
IonicModule
|
|
.factory('$ionicBody', ['$document', function($document) {
|
|
return {
|
|
/**
|
|
* @ngdoc method
|
|
* @name $ionicBody#add
|
|
* @description Add a class to the document's body element.
|
|
* @param {string} class Each argument will be added to the body element.
|
|
* @returns {$ionicBody} The $ionicBody service so methods can be chained.
|
|
*/
|
|
addClass: function() {
|
|
for (var x = 0; x < arguments.length; x++) {
|
|
$document[0].body.classList.add(arguments[x]);
|
|
}
|
|
return this;
|
|
},
|
|
/**
|
|
* @ngdoc method
|
|
* @name $ionicBody#removeClass
|
|
* @description Remove a class from the document's body element.
|
|
* @param {string} class Each argument will be removed from the body element.
|
|
* @returns {$ionicBody} The $ionicBody service so methods can be chained.
|
|
*/
|
|
removeClass: function() {
|
|
for (var x = 0; x < arguments.length; x++) {
|
|
$document[0].body.classList.remove(arguments[x]);
|
|
}
|
|
return this;
|
|
},
|
|
/**
|
|
* @ngdoc method
|
|
* @name $ionicBody#enableClass
|
|
* @description Similar to the `add` method, except the first parameter accepts a boolean
|
|
* value determining if the class should be added or removed. Rather than writing user code,
|
|
* such as "if true then add the class, else then remove the class", this method can be
|
|
* given a true or false value which reduces redundant code.
|
|
* @param {boolean} shouldEnableClass A true/false value if the class should be added or removed.
|
|
* @param {string} class Each remaining argument would be added or removed depending on
|
|
* the first argument.
|
|
* @returns {$ionicBody} The $ionicBody service so methods can be chained.
|
|
*/
|
|
enableClass: function(shouldEnableClass) {
|
|
var args = Array.prototype.slice.call(arguments).slice(1);
|
|
if (shouldEnableClass) {
|
|
this.addClass.apply(this, args);
|
|
} else {
|
|
this.removeClass.apply(this, args);
|
|
}
|
|
return this;
|
|
},
|
|
/**
|
|
* @ngdoc method
|
|
* @name $ionicBody#append
|
|
* @description Append a child to the document's body.
|
|
* @param {element} element The element to be appended to the body. The passed in element
|
|
* can be either a jqLite element, or a DOM element.
|
|
* @returns {$ionicBody} The $ionicBody service so methods can be chained.
|
|
*/
|
|
append: function(ele) {
|
|
$document[0].body.appendChild(ele.length ? ele[0] : ele);
|
|
return this;
|
|
},
|
|
/**
|
|
* @ngdoc method
|
|
* @name $ionicBody#get
|
|
* @description Get the document's body element.
|
|
* @returns {element} Returns the document's body element.
|
|
*/
|
|
get: function() {
|
|
return $document[0].body;
|
|
}
|
|
};
|
|
}]);
|