Skip to content

Commit

Permalink
Near complete rewrite of sidebars JS for reliability:
Browse files Browse the repository at this point in the history
- Refactored as JavaScript classes.

- Everything is now scoped to behaviours without references to instances
  outside of said behaviours; this is primarily achieved by
  instantiating classes and assigning them to a property on elements we
  attach to, and then destroyed when the behaviour detaches.

- Did I mention hella object-oriented?

See: neurocracy/omnipedia#46
  • Loading branch information
Ambient-Impact committed Jan 17, 2024
1 parent 2823154 commit cee47ad
Show file tree
Hide file tree
Showing 7 changed files with 812 additions and 536 deletions.
149 changes: 0 additions & 149 deletions javascript/sidebars.elements.js

This file was deleted.

54 changes: 31 additions & 23 deletions javascript/sidebars.focus.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
// - 'omnipediaSidebarsMenuClose': will move focus to the menu open control if
// sidebars are off-canvas.

AmbientImpact.onGlobals([
'ally.query.tabbable',
], function() {
AmbientImpact.on([
'OmnipediaSiteThemeSidebarsElements',
'OmnipediaSiteThemeSidebarsState',
'OmnipediaSiteThemeSidebars',
'pointerFocusHide',
], function(sidebarsElements, sidebarsState, aiPointerFocusHide, $) {
], function(sidebars, aiPointerFocusHide, $) {
AmbientImpact.addComponent('OmnipediaSiteThemeSidebarsFocus', function(
sidebarsFocus, $
sidebarsFocus, $,
) {

'use strict';
Expand All @@ -31,47 +33,53 @@ AmbientImpact.addComponent('OmnipediaSiteThemeSidebarsFocus', function(
this.addBehaviour(
'OmnipediaSiteThemeSidebarsFocus',
'omnipedia-site-theme-sidebars-focus',
sidebarsElements.getSidebarsBehaviourSelector(),
'body',
function(context, settings) {

$(this).on(
'omnipediaSidebarsMenuOpen.' + eventNamespace,
function(event) {
$(this).on(`omnipediaSidebarsMenuOpen.${eventNamespace}`, function(
event, instance,
) {

if (sidebarsState.isOffCanvas() === true) {

aiPointerFocusHide.lock();

sidebarsElements.getSidebarsContainer().focus();
if (instance.isOffCanvas() !== true) {
return;
}

aiPointerFocusHide.unlock();
aiPointerFocusHide.lock();

}
$(ally.query.tabbable({
context: instance.$sidebars,
includeContext: true,
})).first().focus();

}).on('omnipediaSidebarsMenuClose.' + eventNamespace, function(event) {
aiPointerFocusHide.unlock();

if (sidebarsState.isOffCanvas() === true) {
}).on(`omnipediaSidebarsMenuClose.${eventNamespace}`, function(
event, instance,
) {

aiPointerFocusHide.lock();
if (instance.isOffCanvas() !== true) {
return;
}

sidebarsElements.getSidebarsMenuOpen().focus();
aiPointerFocusHide.lock();

aiPointerFocusHide.unlock();
instance.$menuOpen.focus();

}
aiPointerFocusHide.unlock();

});

},
function(context, settings, trigger) {

$(this).off([
'omnipediaSidebarsMenuOpen.' + eventNamespace,
'omnipediaSidebarsMenuClose.' + eventNamespace,
`omnipediaSidebarsMenuOpen.${eventNamespace}`,
`omnipediaSidebarsMenuClose.${eventNamespace}`,
].join(' '));

}
);

});
});
});
Loading

0 comments on commit cee47ad

Please sign in to comment.