{"action":"created","issue":{"url":"https://api.github.com/repos/medialize/ally.js/issues/107","repository_url":"https://api.github.com/repos/medialize/ally.js","labels_url":"https://api.github.com/repos/medialize/ally.js/issues/107/labels{/name}","comments_url":"https://api.github.com/repos/medialize/ally.js/issues/107/comments","events_url":"https://api.github.com/repos/medialize/ally.js/issues/107/events","html_url":"https://github.com/medialize/ally.js/issues/107","id":131721212,"number":107,"title":"ally.disengage not piercing shadow roots","user":{"login":"ryan-ludwig","id":187937,"avatar_url":"https://avatars.githubusercontent.com/u/187937?v=3","gravatar_id":"","url":"https://api.github.com/users/ryan-ludwig","html_url":"https://github.com/ryan-ludwig","followers_url":"https://api.github.com/users/ryan-ludwig/followers","following_url":"https://api.github.com/users/ryan-ludwig/following{/other_user}","gists_url":"https://api.github.com/users/ryan-ludwig/gists{/gist_id}","starred_url":"https://api.github.com/users/ryan-ludwig/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryan-ludwig/subscriptions","organizations_url":"https://api.github.com/users/ryan-ludwig/orgs","repos_url":"https://api.github.com/users/ryan-ludwig/repos","events_url":"https://api.github.com/users/ryan-ludwig/events{/privacy}","received_events_url":"https://api.github.com/users/ryan-ludwig/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/medialize/ally.js/labels/bug","name":"bug","color":"fc2929"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-02-05T18:38:55Z","updated_at":"2016-02-05T19:45:11Z","closed_at":null,"body":"When using ally.js with web components, ally.disengage does not re-enable elements inside shadow roots. \r\n\r\nWhen using Polymer's \"shady DOM\" (Polymer 1.0 default), disengage works fine. However, using shadow DOM (which will be the [default in the future](https://www.polymer-project.org/1.0/docs/devguide/settings.html)), elements inside shadow roots remain disabled.\r\n\r\nDemo: http://jsfiddle.net/kmdz6Lyq/20/"},"comment":{"url":"https://api.github.com/repos/medialize/ally.js/issues/comments/180521838","html_url":"https://github.com/medialize/ally.js/issues/107#issuecomment-180521838","issue_url":"https://api.github.com/repos/medialize/ally.js/issues/107","id":180521838,"user":{"login":"rodneyrehm","id":186837,"avatar_url":"https://avatars.githubusercontent.com/u/186837?v=3","gravatar_id":"","url":"https://api.github.com/users/rodneyrehm","html_url":"https://github.com/rodneyrehm","followers_url":"https://api.github.com/users/rodneyrehm/followers","following_url":"https://api.github.com/users/rodneyrehm/following{/other_user}","gists_url":"https://api.github.com/users/rodneyrehm/gists{/gist_id}","starred_url":"https://api.github.com/users/rodneyrehm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rodneyrehm/subscriptions","organizations_url":"https://api.github.com/users/rodneyrehm/orgs","repos_url":"https://api.github.com/users/rodneyrehm/repos","events_url":"https://api.github.com/users/rodneyrehm/events{/privacy}","received_events_url":"https://api.github.com/users/rodneyrehm/received_events","type":"User","site_admin":false},"created_at":"2016-02-05T19:45:11Z","updated_at":"2016-02-05T19:45:11Z","body":"> When using ally.js with web components, ally.disengage does not re-enable elements inside shadow roots. \r\n\r\nBoom. I'm an idiot.\r\n\r\nThis [querySelectorAll](https://github.com/medialize/ally.js/blob/master/src/maintain/disabled.js#L64) and the [querySelectorAll](https://github.com/medialize/ally.js/blob/master/src/maintain/hidden.js#L50) in maintain/hidden don't penetrate shadows.\r\n\r\nIt's tempting to try the quick fix `[data-ally-disabled], :disabled` to `html /deep/ [data-ally-disabled], html /deep/ :disabled` as done in [selector/focusable](https://github.com/medialize/ally.js/blob/master/src/selector/focusable.js#L52-L55). But that would exclude Firefox for now.\r\n\r\nI guess I'd prefer maintaining a cache on the service instance, and mutate that upon [observed mutation](https://github.com/medialize/ally.js/blob/master/src/maintain/disabled.js#L113-L125). On that topic, I'm pretty sure the MutationObserver does *not* see changes within a ShadowRoot. So that's the next issue to solve.\r\n\r\nThe problems exist since version 1.0.0 in `maintain/disabled` and `maintain/hidden`."}}