Skip to content

Commit 4c01f40

Browse files
committed
[client-core] Enhance Modal component to support dynamic tooltip positioning and menu collapse behavior
1 parent a311856 commit 4c01f40

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

src/client/components/core/Modal.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2488,6 +2488,8 @@ class Modal {
24882488
*/
24892489
static buildSubMenuItemsHtml = async (subMenuId, items = [], options = {}) => {
24902490
let result = '';
2491+
const _menuMode = Modal.Data['modal-menu']?.options?.mode;
2492+
const _tooltipSide = options.tooltipSide || (_menuMode === 'slide-menu-right' ? 'right' : 'left');
24912493
for (const item of items) {
24922494
const tabHref = typeof item.url === 'function' ? item.url() : item.url || '';
24932495
const icon =
@@ -2497,7 +2499,7 @@ class Modal {
24972499
label: html`<span class="inl menu-btn-icon">${icon}</span
24982500
><span class="menu-label-text menu-label-text-${subMenuId}"> ${item.text} </span>`,
24992501
tabHref,
2500-
tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption(item.text)),
2502+
tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption(item.text, _tooltipSide)),
25012503
useMenuBtn: true,
25022504
})} `;
25032505
}
@@ -2512,7 +2514,10 @@ class Modal {
25122514
*/
25132515
static subMenuPopulate = (subMenuId, itemsHtml) => {
25142516
htmls(`.menu-btn-container-children-${subMenuId}`, itemsHtml);
2515-
if (s('.btn-icon-menu-mode-right') && !s('.btn-icon-menu-mode-right').classList.contains('hide')) {
2517+
const _menuMode = Modal.Data['modal-menu']?.options?.mode;
2518+
const _collapseIndicatorClass =
2519+
_menuMode === 'slide-menu-right' ? '.btn-icon-menu-mode-left' : '.btn-icon-menu-mode-right';
2520+
if (s(_collapseIndicatorClass) && !s(_collapseIndicatorClass).classList.contains('hide')) {
25162521
sa(`.menu-label-text-${subMenuId}`).forEach((el) => el.classList.add('hide'));
25172522
}
25182523
};
@@ -2823,8 +2828,10 @@ const subMenuRender = async (subMenuId) => {
28232828
Modal.menuTextLabelAnimation('modal-menu', subMenuId);
28242829
});
28252830
// Open animation — match the current menu width (collapsed = 50px, extended = 320px)
2826-
const _isMenuCollapsed =
2827-
s(`.btn-icon-menu-mode-right`) && !s(`.btn-icon-menu-mode-right`).classList.contains('hide');
2831+
const _menuMode = Modal.Data['modal-menu']?.options?.mode;
2832+
const _collapseIndicatorClass =
2833+
_menuMode === 'slide-menu-right' ? '.btn-icon-menu-mode-left' : '.btn-icon-menu-mode-right';
2834+
const _isMenuCollapsed = s(_collapseIndicatorClass) && !s(_collapseIndicatorClass).classList.contains('hide');
28282835
const _menuContainerWidth = _isMenuCollapsed ? 50 : 320;
28292836
setTimeout(top, 360);
28302837
menuContainer.style.width = `${_menuContainerWidth}px`;

0 commit comments

Comments
 (0)