feat: Update version to 2.2.2, enhance global navigation exclusion logic, and improve hover behavior in MegaMenu
This commit is contained in:
@@ -122,7 +122,7 @@
|
||||
|
||||
_cacheKey() {
|
||||
const normalize = value => encodeURIComponent(String(value || '').trim().toLowerCase());
|
||||
return 'MegaMenu:TermSet:v3:' + normalize(this._siteCollectionUrl) + ':' + normalize(this.termSetIdentifier) + ':' + this._languageLcid + ':' + normalize(this._cacheVersion);
|
||||
return 'MegaMenu:TermSet:v4:' + normalize(this._siteCollectionUrl) + ':' + normalize(this.termSetIdentifier) + ':' + this._languageLcid + ':' + normalize(this._cacheVersion);
|
||||
}
|
||||
|
||||
_getCache(allowExpired) {
|
||||
@@ -190,7 +190,9 @@
|
||||
while (enumerator.moveNext()) {
|
||||
const term = enumerator.get_current();
|
||||
const properties = this._getCustomProperties(term);
|
||||
if (!term.get_isAvailableForTagging() || term.get_isDeprecated() || this._asBoolean(properties['MegaMenu.Hidden'])) {
|
||||
if (!term.get_isAvailableForTagging() || term.get_isDeprecated() ||
|
||||
this._asBoolean(properties['MegaMenu.Hidden']) ||
|
||||
this._isExcludedFromGlobalNavigation(properties)) {
|
||||
continue;
|
||||
}
|
||||
processedTerms.push({
|
||||
@@ -215,6 +217,7 @@
|
||||
_Sys_Nav_SimpleLinkUrl: props._Sys_Nav_SimpleLinkUrl || null,
|
||||
_Sys_Nav_TargetUrl: props._Sys_Nav_TargetUrl || null,
|
||||
_Sys_Nav_HoverText: props._Sys_Nav_HoverText || null,
|
||||
_Sys_Nav_ExcludedProviders: props._Sys_Nav_ExcludedProviders || null,
|
||||
'MegaMenu.Hidden': props['MegaMenu.Hidden'] || null,
|
||||
'MegaMenu.OpenInNewWindow': props['MegaMenu.OpenInNewWindow'] || null,
|
||||
'MegaMenu.Description': props['MegaMenu.Description'] || null
|
||||
@@ -228,13 +231,24 @@
|
||||
return value === true || ['true', '1', 'yes', 'ja'].indexOf(String(value || '').toLowerCase()) >= 0;
|
||||
}
|
||||
|
||||
_isExcludedFromGlobalNavigation(properties) {
|
||||
const value = String((properties || {})._Sys_Nav_ExcludedProviders || '').replace(/["']/g, '');
|
||||
return value.split(/[;,|]/).some(provider =>
|
||||
provider.trim().toLowerCase() === 'globalnavigationtaxonomyprovider'
|
||||
);
|
||||
}
|
||||
|
||||
_processTerms(termsData) {
|
||||
const itemsDict = new ItemDictionary();
|
||||
const itemsByPath = {};
|
||||
const menuItems = [];
|
||||
const visibleTerms = termsData.filter(termData =>
|
||||
!this._asBoolean((termData.LocalCustomProperties || {})['MegaMenu.Hidden']) &&
|
||||
!this._isExcludedFromGlobalNavigation(termData.LocalCustomProperties)
|
||||
);
|
||||
|
||||
// Create MenuItem objects
|
||||
termsData.forEach(termData => {
|
||||
visibleTerms.forEach(termData => {
|
||||
const menuItem = new MenuItem(termData, 0, this._siteCollectionUrl);
|
||||
itemsDict.Add(termData.Id, menuItem);
|
||||
itemsByPath[termData.PathOfTerm] = menuItem;
|
||||
@@ -245,7 +259,7 @@
|
||||
});
|
||||
|
||||
// Build hierarchy
|
||||
termsData.forEach(termData => {
|
||||
visibleTerms.forEach(termData => {
|
||||
if (termData.PathOfTerm && termData.PathOfTerm.split(';').length > 1) {
|
||||
const menuItem = itemsDict.Get(termData.Id);
|
||||
const pathParts = termData.PathOfTerm.split(';');
|
||||
@@ -484,6 +498,7 @@
|
||||
renderer.closeAll(panel);
|
||||
toggle.setAttribute('aria-expanded', String(open));
|
||||
toggle.setAttribute('aria-label', (open ? renderer.strings.closeSubmenu : renderer.strings.openSubmenu) + ' ' + renderer.getToggleLabel(toggle));
|
||||
parent.classList.toggle('is-open', open);
|
||||
panel.setAttribute('aria-expanded', String(open));
|
||||
panel.classList.toggle('js-open', open);
|
||||
};
|
||||
@@ -499,7 +514,7 @@
|
||||
});
|
||||
let closeTimer;
|
||||
parent.addEventListener('mouseenter', () => { window.clearTimeout(closeTimer); setOpen(true); });
|
||||
parent.addEventListener('mouseleave', () => { closeTimer = window.setTimeout(() => setOpen(false), 180); });
|
||||
parent.addEventListener('mouseleave', () => { closeTimer = window.setTimeout(() => setOpen(false), 0); });
|
||||
});
|
||||
|
||||
const flyoutToggles = document.querySelectorAll('#Mega-Menu .flyout-toggle');
|
||||
|
||||
Reference in New Issue
Block a user