feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
71
f_scripts/fe/js/fwtabs.js
Normal file
71
f_scripts/fe/js/fwtabs.js
Normal file
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* cbpFWTabs.js v1.0.0
|
||||
* http://www.codrops.com
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Copyright 2014, Codrops
|
||||
* http://www.codrops.com
|
||||
*/
|
||||
;( function( window ) {
|
||||
|
||||
'use strict';
|
||||
|
||||
function extend( a, b ) {
|
||||
for( var key in b ) {
|
||||
if( b.hasOwnProperty( key ) ) {
|
||||
a[key] = b[key];
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
function CBPFWTabs( el, options ) {
|
||||
this.el = el;
|
||||
this.options = extend( {}, this.options );
|
||||
extend( this.options, options );
|
||||
this._init();
|
||||
}
|
||||
|
||||
CBPFWTabs.prototype.options = {
|
||||
start : 0
|
||||
};
|
||||
|
||||
CBPFWTabs.prototype._init = function() {
|
||||
// tabs elems
|
||||
this.tabs = [].slice.call( this.el.querySelectorAll( 'nav > ul > li' ) );
|
||||
// content items
|
||||
this.items = [].slice.call( this.el.querySelectorAll( '.content-wrap > section' ) );
|
||||
// current index
|
||||
this.current = -1;
|
||||
// show current content item
|
||||
this._show();
|
||||
// init events
|
||||
this._initEvents();
|
||||
};
|
||||
|
||||
CBPFWTabs.prototype._initEvents = function() {
|
||||
var self = this;
|
||||
this.tabs.forEach( function( tab, idx ) {
|
||||
tab.addEventListener( 'click', function( ev ) {
|
||||
ev.preventDefault();
|
||||
self._show( idx );
|
||||
} );
|
||||
} );
|
||||
};
|
||||
|
||||
CBPFWTabs.prototype._show = function( idx ) {
|
||||
if( this.current >= 0 ) {
|
||||
this.tabs[ this.current ].className = this.items[ this.current ].className = '';
|
||||
}
|
||||
// change current
|
||||
this.current = idx != undefined ? idx : this.options.start >= 0 && this.options.start < this.items.length ? this.options.start : 0;
|
||||
this.tabs[ this.current ].className = 'tab-current';
|
||||
this.items[ this.current ].className = 'content-current';
|
||||
};
|
||||
|
||||
// add to global namespace
|
||||
window.CBPFWTabs = CBPFWTabs;
|
||||
|
||||
})( window );
|
||||
Reference in New Issue
Block a user