mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-09 14:56:04 +01:00
local initial checkin
This commit is contained in:
153
theme-old/js/addons/jquery.mmenu.counters.js
Executable file
153
theme-old/js/addons/jquery.mmenu.counters.js
Executable file
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
* jQuery mmenu counters addon
|
||||
* @requires mmenu 4.0.0 or later
|
||||
*
|
||||
* mmenu.frebsite.nl
|
||||
*
|
||||
* Copyright (c) Fred Heusschen
|
||||
* www.frebsite.nl
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://en.wikipedia.org/wiki/MIT_License
|
||||
* http://en.wikipedia.org/wiki/GNU_General_Public_License
|
||||
*/
|
||||
|
||||
|
||||
(function( $ ) {
|
||||
|
||||
var _PLUGIN_ = 'mmenu',
|
||||
_ADDON_ = 'counters';
|
||||
|
||||
|
||||
$[ _PLUGIN_ ].prototype[ '_addon_' + _ADDON_ ] = function()
|
||||
{
|
||||
var that = this,
|
||||
opts = this.opts[ _ADDON_ ];
|
||||
|
||||
var _c = $[ _PLUGIN_ ]._c,
|
||||
_d = $[ _PLUGIN_ ]._d,
|
||||
_e = $[ _PLUGIN_ ]._e;
|
||||
|
||||
_c.add( 'counter noresults' );
|
||||
_e.add( 'updatecounters' );
|
||||
|
||||
|
||||
// Extend options
|
||||
if ( typeof opts == 'boolean' )
|
||||
{
|
||||
opts = {
|
||||
add : opts,
|
||||
update : opts
|
||||
};
|
||||
}
|
||||
if ( typeof opts != 'object' )
|
||||
{
|
||||
opts = {};
|
||||
}
|
||||
opts = $.extend( true, {}, $[ _PLUGIN_ ].defaults[ _ADDON_ ], opts );
|
||||
|
||||
|
||||
// DEPRECATED
|
||||
if ( opts.count )
|
||||
{
|
||||
$[ _PLUGIN_ ].deprecated( 'the option "count" for counters, the option "update"' );
|
||||
opts.update = opts.count;
|
||||
}
|
||||
// /DEPRECATED
|
||||
|
||||
|
||||
// Refactor counter class
|
||||
this.__refactorClass( $('em.' + this.conf.counterClass, this.$menu), 'counter' );
|
||||
|
||||
var $panels = $('.' + _c.panel, this.$menu);
|
||||
|
||||
// Add the counters
|
||||
if ( opts.add )
|
||||
{
|
||||
$panels.each(
|
||||
function()
|
||||
{
|
||||
var $t = $(this),
|
||||
$p = $t.data( _d.parent );
|
||||
|
||||
if ( $p )
|
||||
{
|
||||
var $c = $( '<em class="' + _c.counter + '" />' ),
|
||||
$a = $p.find( '> a.' + _c.subopen );
|
||||
|
||||
if ( !$a.parent().find( 'em.' + _c.counter ).length )
|
||||
{
|
||||
$a.before( $c );
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// Bind custom events
|
||||
if ( opts.update )
|
||||
{
|
||||
var $counters = $('em.' + _c.counter, this.$menu);
|
||||
|
||||
$counters
|
||||
.off( _e.updatecounters )
|
||||
.on( _e.updatecounters,
|
||||
function( e )
|
||||
{
|
||||
e.stopPropagation();
|
||||
}
|
||||
)
|
||||
.each(
|
||||
function()
|
||||
{
|
||||
var $counter = $(this),
|
||||
$sublist = $($counter.next().attr( 'href' ), that.$menu);
|
||||
|
||||
if ( !$sublist.is( '.' + _c.list ) )
|
||||
{
|
||||
$sublist = $sublist.find( '> .' + _c.list );
|
||||
}
|
||||
|
||||
if ( $sublist.length )
|
||||
{
|
||||
$counter
|
||||
.on( _e.updatecounters,
|
||||
function( e )
|
||||
{
|
||||
var $lis = $sublist.children()
|
||||
.not( '.' + _c.label )
|
||||
.not( '.' + _c.subtitle )
|
||||
.not( '.' + _c.hidden )
|
||||
.not( '.' + _c.noresults );
|
||||
|
||||
$counter.html( $lis.length );
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
)
|
||||
.trigger( _e.updatecounters );
|
||||
|
||||
// Update with menu-update
|
||||
this.$menu
|
||||
.on( _e.update,
|
||||
function( e )
|
||||
{
|
||||
$counters.trigger( _e.updatecounters );
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
$[ _PLUGIN_ ].defaults[ _ADDON_ ] = {
|
||||
add : false,
|
||||
update : false
|
||||
};
|
||||
$[ _PLUGIN_ ].configuration.counterClass = 'Counter';
|
||||
|
||||
|
||||
// Add to plugin
|
||||
$[ _PLUGIN_ ].addons = $[ _PLUGIN_ ].addons || [];
|
||||
$[ _PLUGIN_ ].addons.push( _ADDON_ );
|
||||
|
||||
})( jQuery );
|
||||
Reference in New Issue
Block a user