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:
844
f_scripts/shared/multilevelmenu/css/component.css
Normal file
844
f_scripts/shared/multilevelmenu/css/component.css
Normal file
@@ -0,0 +1,844 @@
|
||||
@font-face {
|
||||
font-family: 'icomoonmlm';
|
||||
src:url('../fonts/icomoonmlm.eot');
|
||||
src:url('../fonts/icomoonmlm.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/icomoonmlm.woff') format('woff'),
|
||||
url('../fonts/icomoonmlm.ttf') format('truetype'),
|
||||
url('../fonts/icomoonmlm.svg#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* Common styles of menus */
|
||||
|
||||
.dl-menuwrapper {
|
||||
width: 100%;
|
||||
/*max-width: 300px;*/
|
||||
float: left;
|
||||
position: relative;
|
||||
-webkit-perspective: 1000px;
|
||||
perspective: 1000px;
|
||||
-webkit-perspective-origin: 0% 200%;
|
||||
perspective-origin: 0% 200%;
|
||||
z-index: 1;
|
||||
}
|
||||
#addto-types .dl-menuwrapper, #file-flag-wrap .dl-menuwrapper {
|
||||
float: none;
|
||||
font-size: 12px;
|
||||
}
|
||||
#addto-types .dl-menuwrapper .dl-menu, #file-flag-wrap .dl-menuwrapper .dl-menu {
|
||||
margin-top: 1px;
|
||||
width: 100%;
|
||||
}
|
||||
#addto-types .dl-menuwrapper li a, #file-flag-wrap .dl-menuwrapper li a {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
padding: 7px 10px;
|
||||
}
|
||||
|
||||
.dl-menuwrapper:first-child {
|
||||
/* margin-right: 15px;*/
|
||||
}
|
||||
|
||||
|
||||
.dl-menuwrapper ul {
|
||||
background: #aaa;
|
||||
}
|
||||
.be #lang-menu-be.dl-menuwrapper ul {
|
||||
background: #06a2cb;
|
||||
}
|
||||
|
||||
.dl-menuwrapper ul {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
|
||||
.dl-menuwrapper li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dl-menuwrapper li a {
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: 1px 15px;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
font-weight: 300;
|
||||
color: #fff;
|
||||
outline: none;
|
||||
text-align: left;
|
||||
}
|
||||
.section-top-bar #entry-action-buttons li:not(.dl-back) a {
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
.section-top-bar .dl-submenu li a {
|
||||
padding: 2px 15px;
|
||||
}
|
||||
.dl-submenu li a, .be .dl-menuwrapper li a {
|
||||
padding: 5px 15px;
|
||||
}
|
||||
.no-touch .dl-menuwrapper li a:hover {
|
||||
background: rgba(255,248,213,0.1);
|
||||
}
|
||||
|
||||
.dl-menuwrapper li.dl-back > a {
|
||||
padding-left: 30px;
|
||||
background: rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.dl-menuwrapper li.dl-back:after,
|
||||
.dl-menuwrapper li > a:not(:only-child):after {
|
||||
position: absolute;
|
||||
/* top: -1px;*/
|
||||
line-height: 32px;
|
||||
font-family: 'icomoonmlm';
|
||||
speak: none;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
content: "\e000";
|
||||
}
|
||||
.fe .section-top-bar .dl-menuwrapper li > a:not(:only-child):after {
|
||||
line-height: unset;
|
||||
}
|
||||
.be .dl-menuwrapper li.dl-back:after,
|
||||
.be .dl-menuwrapper li > a:not(:only-child):after {
|
||||
top: 0px;
|
||||
}
|
||||
.be .dl-menuwrapper li.dl-back:after {
|
||||
right: 10px;
|
||||
left: auto;
|
||||
}
|
||||
.dl-menuwrapper li.dl-back:after {
|
||||
left: 10px;
|
||||
color: rgba(212,204,198,0.3);
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.dl-menuwrapper li > a:after {
|
||||
right: 10px;
|
||||
color: rgba(0,0,0,0.15);
|
||||
}
|
||||
.be .dl-menuwrapper .dl-menu {
|
||||
min-width: 180px;
|
||||
}
|
||||
.dl-menuwrapper .dl-menu {
|
||||
margin: 1px 0 0 0;
|
||||
position: absolute;
|
||||
/*width: 100%;*/
|
||||
min-width: 170px;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
-webkit-transform: translateY(10px);
|
||||
transform: translateY(10px);
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
|
||||
.dl-menuwrapper .dl-menu.dl-menu-toggle {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.dl-menuwrapper .dl-menu.dl-menuopen {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
-webkit-transform: translateY(0px);
|
||||
transform: translateY(0px);
|
||||
}
|
||||
|
||||
.dl-trigger {
|
||||
cursor: pointer;
|
||||
}
|
||||
/* Hide the inner submenus */
|
||||
.dl-menuwrapper li .dl-submenu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*
|
||||
When a submenu is openend, we will hide all li siblings.
|
||||
For that we give a class to the parent menu called "dl-subview".
|
||||
We also hide the submenu link.
|
||||
The opened submenu will get the class "dl-subviewopen".
|
||||
All this is done for any sub-level being entered.
|
||||
*/
|
||||
.dl-menu.dl-subview li,
|
||||
.dl-menu.dl-subview li.dl-subviewopen > a,
|
||||
.dl-menu.dl-subview li.dl-subview > a {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dl-menu.dl-subview li.dl-subview,
|
||||
.dl-menu.dl-subview li.dl-subview .dl-submenu,
|
||||
.dl-menu.dl-subview li.dl-subviewopen,
|
||||
.dl-menu.dl-subview li.dl-subviewopen > .dl-submenu,
|
||||
.dl-menu.dl-subview li.dl-subviewopen > .dl-submenu > li {
|
||||
display: block;
|
||||
width: 100%; /* here */
|
||||
}
|
||||
|
||||
/* Dynamically added submenu outside of the menu context */
|
||||
.dl-menuwrapper > .dl-submenu { /* here */
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
top: 25px;
|
||||
left: 0;
|
||||
margin: 0;
|
||||
min-width: 170px;
|
||||
}
|
||||
|
||||
/* Animation classes for moving out and in */
|
||||
|
||||
.dl-menu.dl-animate-out-1 {
|
||||
-webkit-animation: MenuAnimOut1 0.4s;
|
||||
animation: MenuAnimOut1 0.4s;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-out-2 {
|
||||
-webkit-animation: MenuAnimOut2 0.3s ease-in-out;
|
||||
animation: MenuAnimOut2 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-out-3 {
|
||||
-webkit-animation: MenuAnimOut3 0.4s ease;
|
||||
animation: MenuAnimOut3 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-out-4 {
|
||||
-webkit-animation: MenuAnimOut4 0.4s ease;
|
||||
animation: MenuAnimOut4 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-out-5 {
|
||||
-webkit-animation: MenuAnimOut5 0.4s ease;
|
||||
animation: MenuAnimOut5 0.4s ease;
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimOut1 {
|
||||
0% { }
|
||||
50% {
|
||||
-webkit-transform: translateZ(-250px) rotateY(30deg);
|
||||
}
|
||||
75% {
|
||||
-webkit-transform: translateZ(-372.5px) rotateY(15deg);
|
||||
opacity: .5;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(-500px) rotateY(0deg);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimOut2 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateX(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimOut3 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimOut4 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimOut5 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateY(0%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimOut1 {
|
||||
0% { }
|
||||
50% {
|
||||
-webkit-transform: translateZ(-250px) rotateY(30deg);
|
||||
transform: translateZ(-250px) rotateY(30deg);
|
||||
}
|
||||
75% {
|
||||
-webkit-transform: translateZ(-372.5px) rotateY(15deg);
|
||||
transform: translateZ(-372.5px) rotateY(15deg);
|
||||
opacity: .5;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(-500px) rotateY(0deg);
|
||||
transform: translateZ(-500px) rotateY(0deg);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimOut2 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateX(-100%);
|
||||
transform: translateX(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimOut3 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimOut4 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimOut5 {
|
||||
0% { }
|
||||
100% {
|
||||
-webkit-transform: translateY(0%);
|
||||
transform: translateY(0%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-in-1 {
|
||||
-webkit-animation: MenuAnimIn1 0.3s;
|
||||
animation: MenuAnimIn1 0.3s;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-in-2 {
|
||||
-webkit-animation: MenuAnimIn2 0.3s ease-in-out;
|
||||
animation: MenuAnimIn2 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-in-3 {
|
||||
-webkit-animation: MenuAnimIn3 0.4s ease;
|
||||
animation: MenuAnimIn3 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-in-4 {
|
||||
-webkit-animation: MenuAnimIn4 0.4s ease;
|
||||
animation: MenuAnimIn4 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menu.dl-animate-in-5 {
|
||||
-webkit-animation: MenuAnimIn5 0.4s ease;
|
||||
animation: MenuAnimIn5 0.4s ease;
|
||||
min-width: 170px;
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimIn1 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-500px) rotateY(0deg);
|
||||
opacity: 0;
|
||||
}
|
||||
20% {
|
||||
-webkit-transform: translateZ(-250px) rotateY(30deg);
|
||||
opacity: 0.5;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px) rotateY(0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimIn2 {
|
||||
0% {
|
||||
-webkit-transform: translateX(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimIn3 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimIn4 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes MenuAnimIn5 {
|
||||
0% {
|
||||
-webkit-transform: translateY(0%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimIn1 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-500px) rotateY(0deg);
|
||||
transform: translateZ(-500px) rotateY(0deg);
|
||||
opacity: 0;
|
||||
}
|
||||
20% {
|
||||
-webkit-transform: translateZ(-250px) rotateY(30deg);
|
||||
transform: translateZ(-250px) rotateY(30deg);
|
||||
opacity: 0.5;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px) rotateY(0deg);
|
||||
transform: translateZ(0px) rotateY(0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimIn2 {
|
||||
0% {
|
||||
-webkit-transform: translateX(-100%);
|
||||
transform: translateX(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0px);
|
||||
transform: translateX(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimIn3 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimIn4 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes MenuAnimIn5 {
|
||||
0% {
|
||||
-webkit-transform: translateY(0%);
|
||||
transform: translateY(0%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-in-1 {
|
||||
-webkit-animation: SubMenuAnimIn1 0.4s ease;
|
||||
animation: SubMenuAnimIn1 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-in-2 {
|
||||
-webkit-animation: SubMenuAnimIn2 0.3s ease-in-out;
|
||||
animation: SubMenuAnimIn2 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-in-3 {
|
||||
-webkit-animation: SubMenuAnimIn3 0.4s ease;
|
||||
animation: SubMenuAnimIn3 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-in-4 {
|
||||
-webkit-animation: SubMenuAnimIn4 0.4s ease;
|
||||
animation: SubMenuAnimIn4 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-in-5 {
|
||||
-webkit-animation: SubMenuAnimIn5 0.4s ease;
|
||||
animation: SubMenuAnimIn5 0.4s ease;
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimIn1 {
|
||||
0% {
|
||||
-webkit-transform: translateX(50%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimIn2 {
|
||||
0% {
|
||||
-webkit-transform: translateX(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimIn3 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimIn4 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimIn5 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-200px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimIn1 {
|
||||
0% {
|
||||
-webkit-transform: translateX(50%);
|
||||
transform: translateX(50%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0px);
|
||||
transform: translateX(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimIn2 {
|
||||
0% {
|
||||
-webkit-transform: translateX(100%);
|
||||
transform: translateX(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0px);
|
||||
transform: translateX(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimIn3 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimIn4 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimIn5 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(-200px);
|
||||
transform: translateZ(-200px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-out-1 {
|
||||
-webkit-animation: SubMenuAnimOut1 0.4s ease;
|
||||
animation: SubMenuAnimOut1 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-out-2 {
|
||||
-webkit-animation: SubMenuAnimOut2 0.3s ease-in-out;
|
||||
animation: SubMenuAnimOut2 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-out-3 {
|
||||
-webkit-animation: SubMenuAnimOut3 0.4s ease;
|
||||
animation: SubMenuAnimOut3 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-out-4 {
|
||||
-webkit-animation: SubMenuAnimOut4 0.4s ease;
|
||||
animation: SubMenuAnimOut4 0.4s ease;
|
||||
}
|
||||
|
||||
.dl-menuwrapper > .dl-submenu.dl-animate-out-5 {
|
||||
-webkit-animation: SubMenuAnimOut5 0.4s ease;
|
||||
animation: SubMenuAnimOut5 0.4s ease;
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimOut1 {
|
||||
0% {
|
||||
-webkit-transform: translateX(0%);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(50%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimOut2 {
|
||||
0% {
|
||||
-webkit-transform: translateX(0%);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimOut3 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimOut4 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes SubMenuAnimOut5 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(0);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(-200px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimOut1 {
|
||||
0% {
|
||||
-webkit-transform: translateX(0%);
|
||||
transform: translateX(0%);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(50%);
|
||||
transform: translateX(50%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimOut2 {
|
||||
0% {
|
||||
-webkit-transform: translateX(0%);
|
||||
transform: translateX(0%);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(100%);
|
||||
transform: translateX(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimOut3 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(-300px);
|
||||
transform: translateZ(-300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimOut4 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(0px);
|
||||
transform: translateZ(0px);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(300px);
|
||||
transform: translateZ(300px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes SubMenuAnimOut5 {
|
||||
0% {
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateZ(-200px);
|
||||
transform: translateZ(-200px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* No JS Fallback */
|
||||
.no-js .dl-menuwrapper .dl-menu {
|
||||
position: relative;
|
||||
opacity: 1;
|
||||
-webkit-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.no-js .dl-menuwrapper li .dl-submenu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.no-js .dl-menuwrapper li.dl-back {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.no-js .dl-menuwrapper li > a:not(:only-child) {
|
||||
background: rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.no-js .dl-menuwrapper li > a:not(:only-child):after {
|
||||
content: '';
|
||||
}
|
||||
|
||||
/* Colors for demos */
|
||||
|
||||
/* Demo 1 */
|
||||
.demo-1 .dl-menuwrapper button {
|
||||
background: #c62860;
|
||||
}
|
||||
|
||||
.demo-1 .dl-menuwrapper button:hover,
|
||||
.demo-1 .dl-menuwrapper button.dl-active,
|
||||
.demo-1 .dl-menuwrapper ul {
|
||||
background: #9e1847;
|
||||
}
|
||||
|
||||
/* Demo 2 */
|
||||
.demo-2 .dl-menuwrapper button {
|
||||
background: #e86814;
|
||||
}
|
||||
|
||||
.demo-2 .dl-menuwrapper button:hover,
|
||||
.demo-2 .dl-menuwrapper button.dl-active,
|
||||
.demo-2 .dl-menuwrapper ul {
|
||||
background: #D35400;
|
||||
}
|
||||
|
||||
/* Demo 3 */
|
||||
.menu-drop .dl-menuwrapper button {
|
||||
width: 100%;
|
||||
/* background: #08cbc4;*/
|
||||
}
|
||||
|
||||
.menu-drop .dl-menuwrapper button:hover,
|
||||
.menu-drop .dl-menuwrapper button.dl-active,
|
||||
.menu-drop .dl-menuwrapper ul {
|
||||
background: #06a2cb;
|
||||
}
|
||||
|
||||
/* Demo 4 */
|
||||
.demo-4 .dl-menuwrapper button {
|
||||
background: #90b912;
|
||||
}
|
||||
|
||||
.demo-4 .dl-menuwrapper button:hover,
|
||||
.demo-4 .dl-menuwrapper button.dl-active,
|
||||
.demo-4 .dl-menuwrapper ul {
|
||||
background: #79a002;
|
||||
}
|
||||
|
||||
/* Demo 5 */
|
||||
.demo-5 .dl-menuwrapper button {
|
||||
background: #744783;
|
||||
}
|
||||
|
||||
.demo-5 .dl-menuwrapper button:hover,
|
||||
.demo-5 .dl-menuwrapper button.dl-active,
|
||||
.demo-5 .dl-menuwrapper ul {
|
||||
background: #643771;
|
||||
}
|
||||
1
f_scripts/shared/multilevelmenu/css/component.min.css
vendored
Normal file
1
f_scripts/shared/multilevelmenu/css/component.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
15
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.dev.svg
Normal file
15
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.dev.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
This is a custom SVG font generated by IcoMoon.
|
||||
<iconset grid="16"></iconset>
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="512" >
|
||||
<font-face units-per-em="512" ascent="480" descent="-32" />
|
||||
<missing-glyph horiz-adv-x="512" />
|
||||
<glyph unicode="" d="M 96.00,416.00L 416.00,224.00L 96.00,32.00 z" data-tags="play, media control, audio" />
|
||||
<glyph unicode=" " horiz-adv-x="256" />
|
||||
<glyph class="hidden" unicode="" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 692 B |
BIN
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.eot
Normal file
BIN
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.eot
Normal file
Binary file not shown.
15
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.svg
Normal file
15
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
This is a custom SVG font generated by IcoMoon.
|
||||
<iconset grid="16"></iconset>
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="512" >
|
||||
<font-face units-per-em="512" ascent="480" descent="-32" />
|
||||
<missing-glyph horiz-adv-x="512" />
|
||||
<glyph unicode="" d="M 96.00,416.00L 416.00,224.00L 96.00,32.00 z" />
|
||||
<glyph unicode=" " horiz-adv-x="256" />
|
||||
<glyph class="hidden" unicode="" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 654 B |
BIN
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.ttf
Normal file
BIN
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.ttf
Normal file
Binary file not shown.
BIN
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.woff
Normal file
BIN
f_scripts/shared/multilevelmenu/fonts/icomoonmlm.woff
Normal file
Binary file not shown.
2
f_scripts/shared/multilevelmenu/fonts/license.txt
Normal file
2
f_scripts/shared/multilevelmenu/fonts/license.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Icon Set: IcoMoon - Free -- http://keyamoon.com/icomoon/
|
||||
License: CC BY-SA 3.0 -- http://creativecommons.org/licenses/by-sa/3.0/
|
||||
BIN
f_scripts/shared/multilevelmenu/images/clickhere.png
Normal file
BIN
f_scripts/shared/multilevelmenu/images/clickhere.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
252
f_scripts/shared/multilevelmenu/js/jquery.dlmenu.js
Normal file
252
f_scripts/shared/multilevelmenu/js/jquery.dlmenu.js
Normal file
@@ -0,0 +1,252 @@
|
||||
/**
|
||||
* jquery.dlmenu.js v1.0.1
|
||||
* http://www.codrops.com
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Copyright 2013, Codrops
|
||||
* http://www.codrops.com
|
||||
*/
|
||||
;( function( $, window, undefined ) {
|
||||
|
||||
'use strict';
|
||||
|
||||
// global
|
||||
var Modernizr = window.Modernizr, $body = $( 'body' );
|
||||
|
||||
$.DLMenu = function( options, element ) {
|
||||
this.$el = $( element );
|
||||
this._init( options );
|
||||
};
|
||||
|
||||
// the options
|
||||
$.DLMenu.defaults = {
|
||||
// classes for the animation effects
|
||||
animationClasses : { classin : 'dl-animate-in-1', classout : 'dl-animate-out-1' },
|
||||
// callback: click a link that has a sub menu
|
||||
// el is the link element (li); name is the level name
|
||||
onLevelClick : function( el, name ) { return false; },
|
||||
// callback: click a link that does not have a sub menu
|
||||
// el is the link element (li); ev is the event obj
|
||||
onLinkClick : function( el, ev ) { return false; }
|
||||
};
|
||||
|
||||
$.DLMenu.prototype = {
|
||||
_init : function( options ) {
|
||||
|
||||
// options
|
||||
this.options = $.extend( true, {}, $.DLMenu.defaults, options );
|
||||
// cache some elements and initialize some variables
|
||||
this._config();
|
||||
|
||||
var animEndEventNames = {
|
||||
'WebkitAnimation' : 'webkitAnimationEnd',
|
||||
'OAnimation' : 'oAnimationEnd',
|
||||
'msAnimation' : 'MSAnimationEnd',
|
||||
'animation' : 'animationend'
|
||||
},
|
||||
transEndEventNames = {
|
||||
'WebkitTransition' : 'webkitTransitionEnd',
|
||||
'MozTransition' : 'transitionend',
|
||||
'OTransition' : 'oTransitionEnd',
|
||||
'msTransition' : 'MSTransitionEnd',
|
||||
'transition' : 'transitionend'
|
||||
};
|
||||
// animation end event name
|
||||
this.animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ] + '.dlmenu';
|
||||
// transition end event name
|
||||
this.transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ] + '.dlmenu',
|
||||
// support for css animations and css transitions
|
||||
this.supportAnimations = Modernizr.cssanimations,
|
||||
this.supportTransitions = Modernizr.csstransitions;
|
||||
|
||||
this._initEvents();
|
||||
|
||||
},
|
||||
_config : function() {
|
||||
this.open = false;
|
||||
this.$trigger = this.$el.children( '.dl-trigger' );
|
||||
this.$menu = this.$el.children( 'ul.dl-menu' );
|
||||
this.$menuitems = this.$menu.find( 'li:not(.dl-back)' );
|
||||
this.$el.find( 'ul.dl-submenu' ).prepend( '<li class="dl-back"><a href="#">back</a></li>' );
|
||||
this.$back = this.$menu.find( 'li.dl-back' );
|
||||
},
|
||||
_initEvents : function() {
|
||||
|
||||
var self = this;
|
||||
|
||||
this.$trigger.on( 'click.dlmenu', function() {
|
||||
|
||||
if( self.open ) {
|
||||
self._closeMenu();
|
||||
}
|
||||
else {
|
||||
self._openMenu();
|
||||
}
|
||||
return false;
|
||||
|
||||
} );
|
||||
|
||||
this.$menuitems.on( 'click.dlmenu', function( event ) {
|
||||
|
||||
event.stopPropagation();
|
||||
|
||||
var $item = $(this),
|
||||
$submenu = $item.children( 'ul.dl-submenu' );
|
||||
|
||||
if( $submenu.length > 0 ) {
|
||||
|
||||
var $flyin = $submenu.clone().css( 'opacity', 0 ).insertAfter( self.$menu ),
|
||||
onAnimationEndFn = function() {
|
||||
self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classout ).addClass( 'dl-subview' );
|
||||
$item.addClass( 'dl-subviewopen' ).parents( '.dl-subviewopen:first' ).removeClass( 'dl-subviewopen' ).addClass( 'dl-subview' );
|
||||
$flyin.remove();
|
||||
};
|
||||
|
||||
setTimeout( function() {
|
||||
$flyin.addClass( self.options.animationClasses.classin );
|
||||
self.$menu.addClass( self.options.animationClasses.classout );
|
||||
if( self.supportAnimations ) {
|
||||
self.$menu.on( self.animEndEventName, onAnimationEndFn );
|
||||
}
|
||||
else {
|
||||
onAnimationEndFn.call();
|
||||
}
|
||||
|
||||
self.options.onLevelClick( $item, $item.children( 'a:first' ).text() );
|
||||
} );
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
else {
|
||||
self.options.onLinkClick( $item, event );
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
this.$back.on( 'click.dlmenu', function( event ) {
|
||||
|
||||
var $this = $( this ),
|
||||
$submenu = $this.parents( 'ul.dl-submenu:first' ),
|
||||
$item = $submenu.parent(),
|
||||
|
||||
$flyin = $submenu.clone().insertAfter( self.$menu );
|
||||
|
||||
var onAnimationEndFn = function() {
|
||||
self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classin );
|
||||
$flyin.remove();
|
||||
};
|
||||
|
||||
setTimeout( function() {
|
||||
$flyin.addClass( self.options.animationClasses.classout );
|
||||
self.$menu.addClass( self.options.animationClasses.classin );
|
||||
if( self.supportAnimations ) {
|
||||
self.$menu.on( self.animEndEventName, onAnimationEndFn );
|
||||
}
|
||||
else {
|
||||
onAnimationEndFn.call();
|
||||
}
|
||||
|
||||
$item.removeClass( 'dl-subviewopen' );
|
||||
|
||||
var $subview = $this.parents( '.dl-subview:first' );
|
||||
if( $subview.is( 'li' ) ) {
|
||||
$subview.addClass( 'dl-subviewopen' );
|
||||
}
|
||||
$subview.removeClass( 'dl-subview' );
|
||||
} );
|
||||
|
||||
return false;
|
||||
|
||||
} );
|
||||
|
||||
},
|
||||
closeMenu : function() {
|
||||
if( this.open ) {
|
||||
this._closeMenu();
|
||||
}
|
||||
},
|
||||
_closeMenu : function() {
|
||||
var self = this,
|
||||
onTransitionEndFn = function() {
|
||||
self.$menu.off( self.transEndEventName );
|
||||
self._resetMenu();
|
||||
};
|
||||
|
||||
this.$menu.removeClass( 'dl-menuopen' );
|
||||
this.$menu.addClass( 'dl-menu-toggle' );
|
||||
this.$trigger.removeClass( 'dl-active' );
|
||||
|
||||
if( this.supportTransitions ) {
|
||||
this.$menu.on( this.transEndEventName, onTransitionEndFn );
|
||||
}
|
||||
else {
|
||||
onTransitionEndFn.call();
|
||||
}
|
||||
|
||||
this.open = false;
|
||||
},
|
||||
openMenu : function() {
|
||||
if( !this.open ) {
|
||||
this._openMenu();
|
||||
}
|
||||
},
|
||||
_openMenu : function() {
|
||||
var self = this;
|
||||
// clicking somewhere else makes the menu close
|
||||
$body.off( 'click' ).on( 'click.dlmenu', function() {
|
||||
self._closeMenu();
|
||||
} );
|
||||
this.$menu.addClass( 'dl-menuopen dl-menu-toggle' ).on( this.transEndEventName, function() {
|
||||
$( this ).removeClass( 'dl-menu-toggle' );
|
||||
} );
|
||||
this.$trigger.addClass( 'dl-active' );
|
||||
this.open = true;
|
||||
},
|
||||
// resets the menu to its original state (first level of options)
|
||||
_resetMenu : function() {
|
||||
this.$menu.removeClass( 'dl-subview' );
|
||||
this.$menuitems.removeClass( 'dl-subview dl-subviewopen' );
|
||||
}
|
||||
};
|
||||
|
||||
var logError = function( message ) {
|
||||
if ( window.console ) {
|
||||
window.console.error( message );
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.dlmenu = function( options ) {
|
||||
if ( typeof options === 'string' ) {
|
||||
var args = Array.prototype.slice.call( arguments, 1 );
|
||||
this.each(function() {
|
||||
var instance = $.data( this, 'dlmenu' );
|
||||
if ( !instance ) {
|
||||
logError( "cannot call methods on dlmenu prior to initialization; " +
|
||||
"attempted to call method '" + options + "'" );
|
||||
return;
|
||||
}
|
||||
if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
|
||||
logError( "no such method '" + options + "' for dlmenu instance" );
|
||||
return;
|
||||
}
|
||||
instance[ options ].apply( instance, args );
|
||||
});
|
||||
}
|
||||
else {
|
||||
this.each(function() {
|
||||
var instance = $.data( this, 'dlmenu' );
|
||||
if ( instance ) {
|
||||
instance._init();
|
||||
}
|
||||
else {
|
||||
instance = $.data( this, 'dlmenu', new $.DLMenu( options, this ) );
|
||||
}
|
||||
});
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
} )( jQuery, window );
|
||||
4
f_scripts/shared/multilevelmenu/js/modernizr.custom.js
Normal file
4
f_scripts/shared/multilevelmenu/js/modernizr.custom.js
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user