* Toggle the inert attribute when adding or removing the first/last editor * Add focus lock directive for the editor * Increase timeout period so infinite editors transclusions will also have time to finish * Make sure elements containing .ng-hide are not part of the possible focusable elements * Update comments * Conditionally add umb-focus-lock and inert attributes * Hook into the evenservice to reinitialize the onInit method if the last editor has not been closed when the lock is used in infinite mode * Don't try to add focus to something that does not exist * Minor code refactor placing some variables outside the init method * Refactoring code to make things a bit more clean * Remove the event listener when the directive is destroyed * Add mutationObserver to watch for attribute changes and then trigger the getFocusableElements method * Fetch focusable elements on domChange * Ensure that args exists before trying to read the properties * Refactor to use mutationobserver when overlays are closed passing the correct target and re-initialising the directive to activate the focus lock * Change ng-hide to ng-if so the focusable elements inside the hidden div are not being selected * Narrow attributes to look for down to the bare minimum of the umb-focus-lock * Refactor to using good ol' for loop (Fastest) * Disconnect the observer once the init function has been called - Massive performance improvement * Event handler cleanup * Refactor the code to re-initialize the init method on destroy in case infinite editors still exists in the DOM * Align codestyle * Add logic to deal with "lastKnowFocused" elements in infinite editing mode * Re-add attributes after merge with contrib branch * Correct spelling mistake * Move onInit into the $includeContentLoaded event and set the timeout to 0 * Make sure to add focus to elements with role="button" as well * Add comments and remove timeout / delay settings * Debouce domObserver * Wrap init function in safeApply * Add comments to help remember / understand what things are intended to be doing and add missing event param as well as getting rid of some unused code * Adding more comments * Move setting of first and last focusable elements into the setElement function * Remove todo * Move the setup of first and last focusable elements back to where they were... Co-authored-by: Joe Glombek <gh@joe.gl>
Umbraco CMS ·

Umbraco is the friendliest, most flexible and fastest growing ASP.NET CMS, and used by more than 500,000 websites worldwide. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social.
Learn more at umbraco.com
See the official Umbraco website for an introduction, core mission and values of the product and team behind it.
Please also see our Code of Conduct.
Getting Started
Umbraco Cloud is the easiest and fastest way to use Umbraco yet, with full support for all your custom .NET code and integrations. You're up and running in less than a minute, and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14-day trial, no credit card needed.
If you want to DIY, then you can download Umbraco either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host it yourself, and handling deployments and upgrades will be all up to you.
Documentation
The documentation for Umbraco CMS can be found on Our Umbraco. The source for the Umbraco docs is open source as well and we're happy to look at your documentation contributions.
Join the Umbraco community
Our friendly community is available 24/7 at the community hub, we call "Our Umbraco". Our Umbraco features forums for questions and answers, documentation, downloadable plugins for Umbraco, and a rich collection of community resources.
Besides "Our", we all support each other also via Twitter: Umbraco HQ, Release Updates, #umbraco
Contributing
Umbraco is contribution-focused and community-driven. If you want to contribute back to the Umbraco source code, please check out our guide to contributing.
