Commit initial
This commit is contained in:
6
README.md
Normal file
6
README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
GSDom - Bibliothèque Javascript
|
||||
===============================
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
1
build_gsdom.sh
Executable file
1
build_gsdom.sh
Executable file
@@ -0,0 +1 @@
|
||||
terser --ecma=2015 --comments /^!/ --compress --mangle --output dist/gsdom.min.js -- src/gsdom.js
|
||||
1
dist/gsdom.min.js
vendored
Normal file
1
dist/gsdom.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
window.$_=(()=>{"use strict";let t=function(t,e){if(t)if("document"===t)this.elems=[document];else if("window"===t)this.elems=[window];else{let i=e||document;this.elems=i.querySelectorAll(t)}};t.prototype.each=function(t){if(t&&"function"==typeof t)return this.elems.forEach((e,i)=>{t(e,i)}),this},t.prototype.addClass=function(t){return this.each(e=>{e.classList.add(t)}),this},t.prototype.removeClass=function(t){return this.each(e=>{e.classList.remove(t)}),this},t.prototype.replaceClass=function(t,e){return this.each(i=>{i.classList.replace(t,e)}),this},t.prototype.setAttr=function(t,e){return this.each(i=>{i.setAttribute(t,e)}),this},t.prototype.delAttr=function(t){return this.each(e=>{e.removeAttribute(t)}),this},t.prototype.setHidden=function(){return this.setAttr("hidden",""),this},t.prototype.setReadOnly=function(){return this.setAttr("readonly",""),this},t.prototype.setDisabled=function(){return this.setAttr("disabled",""),this},t.prototype.delHidden=function(){return this.delAttr("hidden"),this},t.prototype.delReadOnly=function(){return this.delAttr("readonly"),this},t.prototype.delDisabled=function(){return this.delAttr("disabled"),this},t.prototype.toggleHidden=function(){return this.each(t=>{t.hasAttribute("hidden")?t.removeAttribute("hidden"):t.setAttribute("hidden","")}),this},t.prototype.toggleReadOnly=function(){return this.each(t=>{t.hasAttribute("readonly")?t.removeAttribute("readonly"):t.setAttribute("readonly","")}),this},t.prototype.toggleDisabled=function(){return this.each(t=>{t.hasAttribute("disabled")?t.removeAttribute("disabled"):t.setAttribute("disabled","")}),this},t.prototype.on=function(t,e,i){return this.each(r=>{r.removeEventListener(t,e,i||!1),r.addEventListener(t,(t,i)=>{e(t,i)},i||!1)}),this},t.prototype.onClick=function(t,e){return this.on("click",t,e||!1),this},t.prototype.found=function(){return this.elems.length>0},t.prototype.first=function(){return!!this.found()&&this.elems[0]},t.prototype.last=function(){return!!this.found()&&this.elems[this.elems.length-1]};let e=(e,i)=>new t(e,i);return e.version="GSD 1.1.0 by Séb",e})();
|
||||
242
src/gsdom.js
Normal file
242
src/gsdom.js
Normal file
@@ -0,0 +1,242 @@
|
||||
window.$_ = (() => {
|
||||
'use strict';
|
||||
/**
|
||||
* Création du constructeur
|
||||
* @param {String} selector Sélecteur utilisé
|
||||
* @param {HTMLElement} scope Racine de la recherche
|
||||
*/
|
||||
let Constructor = function(selector, scope) {
|
||||
if (!selector) {
|
||||
return;
|
||||
}
|
||||
if (selector === 'document') {
|
||||
this.elems = [document, ];
|
||||
} else if (selector === 'window') {
|
||||
this.elems = [window, ];
|
||||
} else {
|
||||
let root = scope ? scope : document;
|
||||
this.elems = root.querySelectorAll(selector);
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Application d'une fonction sur chacun des éléments
|
||||
* @param {Function} callback La fonction de rappel
|
||||
*/
|
||||
Constructor.prototype.each = function(callback) {
|
||||
if (!callback || typeof callback !== 'function') {
|
||||
return;
|
||||
}
|
||||
this.elems.forEach((element, index) => {
|
||||
callback(element, index);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Ajout d'une classe aux éléments sélectionnés
|
||||
* @param {String} className Le nom de la classe à ajouter
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.addClass = function(className) {
|
||||
this.each(item => {
|
||||
item.classList.add(className);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Ajout d'une classe aux éléments sélectionnés
|
||||
* @param {String} className Le nom de la classe à ajouter
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.removeClass = function(className) {
|
||||
this.each(item => {
|
||||
item.classList.remove(className);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Remplace une classe par une autre dans les éléments sélectionnés
|
||||
* @param {String} oldClass Nom de la classe à remplacer
|
||||
* @param {String} newClass Nom de la classe de remplacement
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.replaceClass = function(oldClass, newClass) {
|
||||
this.each(item => {
|
||||
item.classList.replace(oldClass, newClass);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Définit un attribut et sa valeur
|
||||
* @param {String} attr Nom de l'attribut
|
||||
* @param {String} value Valeur de l'attribut
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.setAttr = function(attr, value) {
|
||||
this.each(item => {
|
||||
item.setAttribute(attr, value);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Supprime un attribut dans les éléments sélectionnés
|
||||
* @param {String} attr Nom de l'attribut à supprimer
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.delAttr = function(attr) {
|
||||
this.each(item => {
|
||||
item.removeAttribute(attr);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Ajoute l'attribut hidden aux éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.setHidden = function() {
|
||||
this.setAttr('hidden', '');
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Ajoute l'attribut readonly aux éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.setReadOnly = function() {
|
||||
this.setAttr('readonly', '');
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Ajoute l'attribut disabled aux éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.setDisabled = function() {
|
||||
this.setAttr('disabled', '');
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Supprime l'attribut hidden aux éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.delHidden = function() {
|
||||
this.delAttr('hidden');
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Supprime l'attribut readonly aux éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.delReadOnly = function() {
|
||||
this.delAttr('readonly');
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Supprime l'attribut disabled aux éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.delDisabled = function() {
|
||||
this.delAttr('disabled');
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* switche l'attribut hidden des éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.toggleHidden = function() {
|
||||
this.each(item => {
|
||||
if (item.hasAttribute('hidden')) {
|
||||
item.removeAttribute('hidden');
|
||||
} else {
|
||||
item.setAttribute('hidden', '');
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* switche l'attribut readonly des éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.toggleReadOnly = function() {
|
||||
this.each(item => {
|
||||
if (item.hasAttribute('readonly')) {
|
||||
item.removeAttribute('readonly');
|
||||
} else {
|
||||
item.setAttribute('readonly', '');
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* switche l'attribut disabled des éléments sélectionnés
|
||||
* @returns {this} Chainage
|
||||
*/
|
||||
Constructor.prototype.toggleDisabled = function() {
|
||||
this.each(item => {
|
||||
if (item.hasAttribute('disabled')) {
|
||||
item.removeAttribute('disabled');
|
||||
} else {
|
||||
item.setAttribute('disabled', '');
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Ajout d'un gestionnaire d'événement aux éléments sélectionnés
|
||||
* @param {String} type Nom de l'événement
|
||||
* @param {Function} callback Gestionnaire de l'événement
|
||||
* @param {Boolean} useCapture Propagation de l'événement
|
||||
*/
|
||||
Constructor.prototype.on = function(type, callback, useCapture) {
|
||||
this.each(item => {
|
||||
item.removeEventListener(type, callback, useCapture || false);
|
||||
item.addEventListener(type, (evt, el) => {
|
||||
callback(evt, el);
|
||||
}, useCapture || false);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Ajout d'un gestionnaire d'événement 'click' pour les éléments sélectionnés
|
||||
* @param {Function} callback Gestionnaire de l'événement
|
||||
* @param {Boolean} useCapture Propagation de l'événement
|
||||
*/
|
||||
Constructor.prototype.onClick = function(callback, useCapture) {
|
||||
this.on('click', callback, useCapture || false);
|
||||
return this;
|
||||
};
|
||||
/**
|
||||
* Retourne si un élément a été trouvé
|
||||
* @returns {Boolean} l'élément du DOM trouvé
|
||||
*/
|
||||
Constructor.prototype.found = function() {
|
||||
return this.elems.length > 0;
|
||||
};
|
||||
/**
|
||||
* Retourne le premier élément trouvé
|
||||
* @returns {HTMLElement} l'élément du DOM trouvé
|
||||
*/
|
||||
Constructor.prototype.first = function() {
|
||||
return this.found() ? this.elems[0] : false;
|
||||
};
|
||||
/**
|
||||
* Retourne le dernier élément trouvé
|
||||
* @returns {HTMLElement} L'élément du DOM trouvé
|
||||
*/
|
||||
Constructor.prototype.last = function() {
|
||||
return this.found() ? this.elems[this.elems.length - 1] : false;
|
||||
};
|
||||
/**
|
||||
* Instantiation d'un nouveau constructeur
|
||||
* @param {String} selector Sélecteur utilisé
|
||||
* @param {HTMLElement} scope Racine de la recherche
|
||||
*/
|
||||
let gsd = (selector, root) => {
|
||||
return new Constructor(selector, root);
|
||||
};
|
||||
/**
|
||||
* Version de la librairie
|
||||
*/
|
||||
gsd.version = 'GSD 1.1.0 by Séb';
|
||||
/**
|
||||
* @return Retour de la librairie
|
||||
*/
|
||||
return gsd;
|
||||
})();
|
||||
Reference in New Issue
Block a user