If you focus the menu items in the dropdown menu, additional informations are shown as a fly-out box. In mobile view the notes are shown indented below the menu items.
The respective content is selected from the page property subtitle, if the field is not empty.
lib.bootstrap3-notes = COA
lib.bootstrap3-notes {
wrap = <nav class="navbar navbar-default"> <div class="container-fluid"> | </div> </nav>
10 = COA
10 {
wrap = <div class="navbar-header"> | </div>
10 = COA
10 {
// hamburger icon:
wrap = <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">|</button>
10 = TEXT
10.value = <span class="sr-only">Toggle navigation</span>
20 = TEXT
20.value = <span class="icon-bar"></span>
21 < .20
22 < .20
}
// company name/logo:
20 = TEXT
20.value = Project name
20.typolink {
parameter = https://www.example.org/
ATagParams = class="navbar-brand"
}
}
20 = HMENU
20 {
wrap = <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> | </ul> </div>
1 = TMENU
1 {
expAll = 1
NO = 1
NO {
ATagTitle.field = title
wrapItemAndSub = <li>|</li>
// Set 'active' class to shortcuts that link to the current page (e.g. useful when 'Home' is root page):
wrapItemAndSub.override.cObject = COA
wrapItemAndSub.override.cObject {
if {
value = 4
equals.field = doktype
isTrue = 1
isTrue.if {
value.data = TSFE:page|uid
equals.field = shortcut
}
}
10 = TEXT
10.value = <li class="active">|</li>
}
}
CUR < .NO
CUR {
wrapItemAndSub = <li class="active">|</li>
}
ACT < .CUR
IFSUB = 1
IFSUB {
ATagTitle.field = title
ATagParams = class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"
linkWrap = |<b class="caret"></b>
ATagBeforeWrap = 1
wrapItemAndSub = <li class="dropdown">|</li>
}
ACTIFSUB < .IFSUB
ACTIFSUB {
wrapItemAndSub = <li class="dropdown active">|</li>
}
CURIFSUB < .ACTIFSUB
}
2 < .1
2 {
wrap = <ul class="dropdown-menu" role="menu">|</ul>
// use additional notes in a field, e.g. subtitle:
NO.stdWrap.cObject = COA
NO.stdWrap.cObject {
10 = TEXT
10.field = nav_title // title
20 = TEXT
20.field = subtitle
20.wrap = <div class="menu-info">|</div>
20.if.isTrue.field = subtitle
}
CUR < .NO
// because default Bootstrap 3 doesn't support more submenu levels:
IFSUB >
ACTIFSUB >
CURIFSUB >
SPC = 1
SPC {
// no divider, if first menu item on this level (using optionSplit):
wrapItemAndSub = <li class="dropdown-header">|</li> |*| <li class="divider"></li><li class="dropdown-header">|</li>
}
}
}
}
/* additional declarations for info-flyout */
.dropdown-menu > li {
position: relative;
}
.dropdown-menu > li > a .menu-info {
white-space: normal;
font-size: 12px;
padding-left: 5%;
}
@media (min-width: 768px) {
.dropdown-menu li {
border-bottom: none;
}
.dropdown-menu > li > a .menu-info {
background-color: #f5f5f5;
background-image: linear-gradient(to bottom, #f5f5f5 0px, #e8e8e8 100%);
border: 1px solid rgba(0, 0, 0, 0.15);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.176);
font-size: 14px;
position: absolute;
left: 100%;
top: 0;
display: none;
width: 250px;
height: auto;
padding: 5px;
color: #444;
white-space: normal;
}
.dropdown-menu > li > a:focus .menu-info,
.dropdown-menu > li > a:hover .menu-info {
display: block;
}
}