openrat-cms

OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs | README

commit 65a196fb3113e2dbaf4f70176e267916cd292d86
parent c4c1daade9149a4c61261f1f25fc6996dab67d67
Author: Jan Dankert <develop@jandankert.de>
Date:   Thu,  1 Apr 2021 22:20:52 +0200

Using subclasses for the "JQuery"-Plugins.

Diffstat:
Mmodules/cms/ui/themes/default/script/Oquery.js | 46+++++++++++++++++++++++++++-------------------
Mmodules/cms/ui/themes/default/script/jquery-global.js | 91++++++++++++++++++++++++++++++++-----------------------------------------------
2 files changed, 64 insertions(+), 73 deletions(-)

diff --git a/modules/cms/ui/themes/default/script/Oquery.js b/modules/cms/ui/themes/default/script/Oquery.js @@ -1,35 +1,39 @@ +/*! OQuery */ /** * OQuery is a very light ES6-ready replacement for JQuery * */ -let selector = function ( selector ) { +let query = function (selector ) { if ( typeof selector === 'string' ) - return new OQuery( document.querySelectorAll(selector) ); + return query.createQuery( document.querySelectorAll(selector) ); else if ( selector instanceof HTMLElement ) - return new OQuery([selector] ); + return query.createQuery([selector] ); else if ( selector instanceof OQuery ) return selector; else //console.warn( new Error("Illegal argument '"+selector+"' of type "+(typeof selector)) ); - return new OQuery( [] ); + return query.createQuery( [] ); } -selector.create = function(tagName ) { - return new OQuery( [document.createElement( tagName )] ); -}; +query.createQuery = function(nodeList ) { + return new OQuery( nodeList ); +} -selector.id = function( id ) { - return new OQuery( [document.getElementById( id )] ); +query.create = function(tagName ) { + return query.createQuery( [document.createElement( tagName )] ); }; -selector.one = function( selector ) { - return new OQuery( [document.querySelector( selector )] ); +query.id = function(id ) { + return query.createQuery( [document.getElementById( id )] ); }; +query.one = function(selector ) { + return query.createQuery( [document.querySelector( selector )] ); +}; -selector.extend = function() { +query.extend = function() { for(let i=1; i<arguments.length; i++) for(let key in arguments[i]) if(arguments[i].hasOwnProperty(key)) @@ -37,12 +41,16 @@ selector.extend = function() { return arguments[0]; } -export default selector; +export default query; export class OQuery { static fn = OQuery.prototype; + + createNew(nodeList) { + return new OQuery(nodeList) + }; constructor( nodeList ) { @@ -53,30 +61,30 @@ export class OQuery { return this.nodes[idx]; } first() { - return new OQuery( this.nodes.length > 0 ? [this.nodes[0]] : [] ); + return this.createNew( this.nodes.length > 0 ? [this.nodes[0]] : [] ); }; parent() { - return new OQuery( this.nodes.map(node => node.parentNode ).filter( node => node !== null ) ); + return this.createNew( this.nodes.map(node => node.parentNode ).filter( node => node !== null ) ); }; closest( selector ) { - return new OQuery( this.nodes.map(node => node.closest( selector ) ).filter( node => node !== null ) ); + return this.createNew( this.nodes.map(node => node.closest( selector ) ).filter( node => node !== null ) ); }; children( selector ) { let result = []; for( let node of this.nodes ) result = result.concat( Array.from(node.children).filter( node => selector ? node.matches(selector) : true ) ); - return new OQuery( result ); + return this.createNew( result ); }; find(selector) { let result = []; for( let node of this.nodes ) result = result.concat( Array.from(node.querySelectorAll(selector)) ); - return new OQuery( result ); + return this.createNew( result ); }; text( value ) { @@ -186,7 +194,7 @@ export class OQuery { } appendTo( el ) { - let to = selector( el ); + let to = query( el ); to.append( this ) return this; } diff --git a/modules/cms/ui/themes/default/script/jquery-global.js b/modules/cms/ui/themes/default/script/jquery-global.js @@ -1,9 +1,4 @@ -/* -import './jquery.min.js'; - -let jQuery = $; -export default jQuery; -window.$ = $; +import query, {OQuery} from './Oquery.js'; import autoheight from './plugin/jquery-plugin-orAutoheight.js'; import button from './plugin/jquery-plugin-orButton.js'; @@ -12,63 +7,51 @@ import search from './plugin/jquery-plugin-orSearch.js'; import tree from './plugin/jquery-plugin-orTree.js'; import toggleAttr from './plugin/jquery-plugin-toggleAttr.js'; -jQuery.fn.orAutoheight = autoheight; -jQuery.fn.orButton = button; -jQuery.fn.orLinkify = linkify; -jQuery.fn.orSearch = search; -jQuery.fn.orTree = tree; -jQuery.fn.toggleAttr = toggleAttr; +query.createQuery = (nodeList) => new CMSQuery(nodeList); -let originalAddClass = jQuery.fn.addClass; -jQuery.fn.addClass = function (styleClass) { - return originalAddClass.call(this,'or-'+styleClass); -} +export default query; -let originalRemoveClass = jQuery.fn.removeClass; -jQuery.fn.removeClass = function (styleClass) { - return originalRemoveClass.call(this,'or-'+styleClass); -} +class CMSQuery extends OQuery { -let originalHasClass = jQuery.fn.hasClass; -jQuery.fn.hasClass = function (styleClass) { - return originalHasClass.call(this,'or-'+styleClass); -} -*/ + createNew(nodeList) { + return new CMSQuery(nodeList); + } -import $, {OQuery} from './Oquery.js'; + static classPrefix = 'or-'; -export default $; + addClass( styleClass ) { + return super.addClass( CMSQuery.classPrefix + styleClass ) + } + removeClass( styleClass ) { + return super.removeClass( CMSQuery.classPrefix + styleClass ) + } + hasClass( styleClass ) { + return super.hasClass( CMSQuery.classPrefix + styleClass ) + } -import autoheight from './plugin/jquery-plugin-orAutoheight.js'; -import button from './plugin/jquery-plugin-orButton.js'; -import linkify from './plugin/jquery-plugin-orLinkify.js'; -import search from './plugin/jquery-plugin-orSearch.js'; -import tree from './plugin/jquery-plugin-orTree.js'; -import toggleAttr from './plugin/jquery-plugin-toggleAttr.js'; + orAutoheight() { + return autoheight.call(this); + }; -OQuery.fn.orAutoheight = autoheight; -OQuery.fn.orButton = button; -OQuery.fn.orLinkify = linkify; -OQuery.fn.orSearch = search; -OQuery.fn.orTree = tree; -OQuery.fn.toggleAttr = toggleAttr; + orButton() { + return button.call(this); + }; -let originalAddClass = OQuery.fn.addClass; -OQuery.fn.addClass = function (styleClass) { - return originalAddClass.call(this,'or-'+styleClass); -} + orLinkify() { + return linkify.call(this); + }; -let originalRemoveClass = OQuery.fn.removeClass; -OQuery.fn.removeClass = function (styleClass) { - return originalRemoveClass.call(this,'or-'+styleClass); -} + orSearch() { + return search.call(this); + }; + + orTree() { + return tree.call(this); + }; -let originalHasClass = OQuery.fn.hasClass; -OQuery.fn.hasClass = function (styleClass) { - return originalHasClass.call(this,'or-'+styleClass); + toggleAttr() { + return toggleAttr.call(this); + }; } -//let originalToggleClass = OQuery.fn.toggleClass; -//OQuery.fn.toggleClass = function (styleClass) { -// return originalToggleClass.call(this,'or-'+styleClass); -//} +