* [bug#54545,1h] fix add divider after divider.

This commit is contained in:
dingyongliang
2024-08-28 11:07:51 +08:00
parent 283e439be3
commit 62261a1fcc
+54 -19
View File
@@ -862,21 +862,24 @@ function restoreMenuNavToServer()
/**
* Generate menu nav items to be added.
*
* @param {Cash} $item
* @param {(item: string) => void} onClick click handler of menu item.
* @returns {Array<{icon: string; text: string; onClick: () => void;}>}
*/
function generateAddMenuNavItems(onClick)
function generateAddMenuNavItems($item, onClick)
{
const items = [
{
icon: 'icon-minus',
text: langData.divider,
onClick: () => {
onClick('divider');
saveMenuNavToServer();
const items = canAddDivider($item)
? [
{
icon: 'icon-minus',
text: langData.divider,
onClick: () => {
onClick('divider');
saveMenuNavToServer();
}
}
}
];
]
: [];
const data = getMenuNavData();
const allAppCodeSet = new Set(allAppsItemsMap.keys());
@@ -953,17 +956,24 @@ $(document).on('contextmenu', '#menuNav .divider', function(event)
}
}
);
const toAddedItems = generateAddMenuNavItems($divider, addMenuToMainNavCb($divider));
items.push(
{
text: langData.add,
items: generateAddMenuNavItems(addMenuToMainNavCb($divider))
}
toAddedItems.length === 0
? {
text: langData.add,
disabled: true,
}
: {
text: langData.add,
items: toAddedItems,
}
);
items.push(
{
text: langData.restore,
onClick: () => {
initAppsMenu(allAppsItems);
refreshMenu();
restoreMenuNavToServer();
}
}
@@ -1060,17 +1070,24 @@ $(document).on('click', '.open-in-app,.show-in-app', function(e)
disabled: hideDisabled,
}
);
const toAddedItems = generateAddMenuNavItems($btn, addMenuToMainNavCb($btn.closest('li')));
items.push(
{
text: langData.add,
items: generateAddMenuNavItems(addMenuToMainNavCb($btn.closest('li')))
}
toAddedItems.length === 0
? {
text: langData.add,
disabled: true,
}
: {
text: langData.add,
items: toAddedItems,
}
);
items.push(
{
text: langData.restore,
onClick: () => {
initAppsMenu(allAppsItems);
refreshMenu();
restoreMenuNavToServer();
}
}
@@ -1352,7 +1369,12 @@ function getAppItemIconAndTitle(name)
*/
function addMenuToMainNavCb($li) {
return (name) => {
if(name === 'divider') return $li.after('<li class="divider"></li>');
if(name === 'divider')
{
$li.after('<li class="divider"></li>');
refreshMenu();
return
}
let item = allAppsItemsMap.get(name);
const oldItem = apps.map[item.code];
@@ -1381,3 +1403,16 @@ function addMenuToMainNavCb($li) {
if(!apps.defaultCode) apps.defaultCode = item.code;
};
}
/**
* Check whether current element can add a divider.
* @param {Cash} $item
* @returns {boolean}
*/
function canAddDivider($item)
{
$item = $item.closest('li');
if($item.is('.divider')) return false;
if($item.next().is('.divider')) return false;
return true;
}