mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 17:38:19 +08:00
ui: Add dropdown when nav is longer than window (#271)
Co-authored-by: undefined <i@undefined.moe>
This commit is contained in:
1 parent
22298540f3
commit
d40f56e676
2 files changed
+71
No files matched your search
@@ -15,6 +15,7 @@ function handleNavLogoutClick(ev) {
|
|||||||
.then(() => window.location.reload());
|
.then(() => window.location.reload());
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
function handlerSwitchAccount(ev) {
|
function handlerSwitchAccount(ev) {
|
||||||
let userSelector;
|
let userSelector;
|
||||||
const promise = new ActionDialog({
|
const promise = new ActionDialog({
|
||||||
@@ -58,6 +59,62 @@ function handlerSwitchAccount(ev) {
|
|||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let trigger;
|
||||||
|
let menu;
|
||||||
|
|
||||||
|
function handleNavbar() {
|
||||||
|
let fromHide = false;
|
||||||
|
if ($(document).width() <= 600) {
|
||||||
|
for (const ele of menu.children()) {
|
||||||
|
ele.insertBefore(trigger);
|
||||||
|
}
|
||||||
|
trigger.hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
trigger.show();
|
||||||
|
|
||||||
|
let navItems = $('.nav__list--main > .nav__list-item');
|
||||||
|
let navItem = navItems.length - 2;
|
||||||
|
while (navItem && $('#menu').children('div').height() > 45) {
|
||||||
|
if (!$(navItems[navItem]).children('a').hasClass('nav--active')) {
|
||||||
|
$(navItems[navItem]).removeClass('nav__list-item').addClass('menu__item');
|
||||||
|
$(navItems[navItem]).children('a').removeClass('nav__item').addClass('menu__link');
|
||||||
|
console.log('hide', navItems[navItem]);
|
||||||
|
$(menu).prepend($(navItems[navItem]));
|
||||||
|
}
|
||||||
|
navItem--;
|
||||||
|
fromHide = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fromHide && menu.children().length) {
|
||||||
|
while ($('#menu').children('div').height() <= 45 && menu.children().length) {
|
||||||
|
const ele = menu.children(0);
|
||||||
|
$(ele).addClass('nav__list-item').removeClass('menu__item');
|
||||||
|
$(ele).children('a').addClass('nav__item').removeClass('menu__link');
|
||||||
|
console.log('show', ele);
|
||||||
|
ele.insertBefore(trigger);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
navItems = $('.nav__list--main > .nav__list-item');
|
||||||
|
navItem = navItems.length - 2;
|
||||||
|
if ($('#menu').children('div').height() > 45) {
|
||||||
|
while (navItem && $('#menu').children('div').height() > 45) {
|
||||||
|
if (!$(navItems[navItem]).children('a').hasClass('nav--active')) {
|
||||||
|
$(navItems[navItem]).removeClass('nav__list-item').addClass('menu__item');
|
||||||
|
$(navItems[navItem]).children('a').removeClass('nav__item').addClass('menu__link');
|
||||||
|
console.log('hide', navItems[navItem]);
|
||||||
|
$(menu).prepend($(navItems[navItem]));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
navItem--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('children', menu.children());
|
||||||
|
if (!menu.children().length) trigger.hide();
|
||||||
|
}
|
||||||
|
|
||||||
const navigationPage = new AutoloadPage('navigationPage', () => {
|
const navigationPage = new AutoloadPage('navigationPage', () => {
|
||||||
if (!document.getElementById('panel') || !document.getElementById('menu')) return;
|
if (!document.getElementById('panel') || !document.getElementById('menu')) return;
|
||||||
|
|
||||||
@@ -81,6 +138,19 @@ const navigationPage = new AutoloadPage('navigationPage', () => {
|
|||||||
slideout.on('beforeclose', () => $slideoutOverlay.hide());
|
slideout.on('beforeclose', () => $slideoutOverlay.hide());
|
||||||
|
|
||||||
$('.header__hamburger').click(() => slideout.toggle());
|
$('.header__hamburger').click(() => slideout.toggle());
|
||||||
|
$(window).on('resize', handleNavbar);
|
||||||
|
}, () => {
|
||||||
|
trigger = $(tpl`
|
||||||
|
<li class="nav__list-item nav_more" data-dropdown-pos="bottom right" data-dropdown-target="#menu-nav-more">
|
||||||
|
<a href="javascript:;" class="nav__item">
|
||||||
|
${i18n('More')} <span class="icon icon-expand_more"></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
`);
|
||||||
|
menu = $('<ol class="dropdown-target menu menu_more" id="menu-nav-more">');
|
||||||
|
trigger.append(menu);
|
||||||
|
$('.nav__list--main').append(trigger);
|
||||||
|
handleNavbar();
|
||||||
});
|
});
|
||||||
|
|
||||||
export default navigationPage;
|
export default navigationPage;
|
||||||
@@ -454,6 +454,7 @@ Method: 方法
|
|||||||
Moderator: 管理员
|
Moderator: 管理员
|
||||||
Month: 月
|
Month: 月
|
||||||
Monthly Popular: 月度最受欢迎
|
Monthly Popular: 月度最受欢迎
|
||||||
|
More: 更多
|
||||||
Most Upvoted Solutions: 最被赞同的题解
|
Most Upvoted Solutions: 最被赞同的题解
|
||||||
My Domains: 我的域
|
My Domains: 我的域
|
||||||
My Files: 我的文件
|
My Files: 我的文件
|
||||||
|
|||||||
Reference in new issue
Block a user