Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Toggle containers programmatically by petrsimon · Pull Request #152 · angular-ui/ui-layout · GitHub
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Toggle containers programmatically by petrsimon · Pull Request #152 · angular-ui/ui-layout · GitHub
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Toggle containers programmatically by petrsimon · Pull Request #152 · angular-ui/ui-layout · GitHub
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Toggle containers programmatically by petrsimon · Pull Request #152 · angular-ui/ui-layout · GitHub
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Toggle containers programmatically by petrsimon · Pull Request #152 · angular-ui/ui-layout · GitHub
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Toggle containers programmatically by petrsimon · Pull Request #152 · angular-ui/ui-layout · GitHub
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Toggle containers programmatically by petrsimon · Pull Request #152 · angular-ui/ui-layout · GitHub
Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Toggle containers programmatically - #152

Closed
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically
Closed

Toggle containers programmatically#152
petrsimon wants to merge 10 commits into
angular-ui:masterfrom
petrsimon:toggle-containers-programmatically

Conversation

@petrsimon

Copy link
Copy Markdown
Contributor

Simply add collapsed attribute to the ui-layout-container you want to control and toggle the value.

$scope.layout={toolbar: false,statusbar: true}
<divui-layout-containerdata-collapsed="layout.toolbar">TOOLBAR</div><divui-layout-containerdata-collapsed="layout.statusbar">STATUSBAR</div>

@BobbieBarker

Copy link
Copy Markdown
Contributor

Going to need a more extensive code review tomarrow. This pr needs unit tests as well.

@BobbieBarker

Copy link
Copy Markdown
Contributor

Also the commit history needs cleaned up

@petrsimon
petrsimonforce-pushed the toggle-containers-programmatically branch from 8324456 to afb35b9CompareOctober 28, 2015 04:56
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

Cleaned up the commits. Please, have a look and let me know if this is a way to go. I will then write the unit tests.

@SomeKittens

Copy link
Copy Markdown
Contributor

Thanks, @petrsimon! This is an oft-requested feature. I'll let @BobbieBarker do some review, then tests, then bring this in! Glad to have it.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this related to this commit in particular? If not, it should be part of a separate PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, not really related. I forgot to take that out. Will PR this separately.

- Improve $digest in progress handling.
- Remove unrelated line of code
- Pass proper parameters to 'ui.layout.broadcast' to follow upstream API
Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is better as if (angular.isDefined(old)) { - val is guaranteed to not equal old by how $watch works.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually during initialization, the equality can actually happen, which would in turn toggle the container against expectations.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made few improvements, please see the new commit.

Comment threadsrc/ui-layout.js Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hate to be a stickler but I was thinking more about using $q instead of $timeout. In my opinion $timeout isn't really appropriate here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha. This is the trick I know how to get around "$digest in progess" error, which was thrown after trying to trigger the click. Not sure how to use $q here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, why it $timeout not appropriate. I thought this is a common way how to get around $digest error, to execute a routine in another digest cycle with $timeout.

Limitation: containers before a splitbar must have @SiZe defined,
otherwise they cover the container after them.
Helps setting propers layout when there are initially collapsed containers.
Ui-layout calculates the layout one container at a time.
One way to make sure there's space left for the container is to set it's
'size' or 'min-size'. When the size is not given, ui-layout must calculate
the dimensions first, then notify the scope, which in turn sets the flag
for collapsed containers.
Toggling is using toggleAfter and toggleBefore, which broadcast
'ui.layout.toggle'. No need to broadcast another message.
…iners-programmatically
* toggle-on-init-with-notify-directive:
Improve toggle tests
Broadcast message when layout has finished loading
Fix opening an initially closed container
@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've cleaned up few bits, improved it a bit and added few test and demo. Please check it and let me know how it looks now. Will squash the commits later when it's ready for pull.

Comment threadsrc/ui-layout.js

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why drop auto as an option?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the next line takes care of it in case there's no size provided by the user. Am I missing something?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've ran into a resizing issues with collapsed containers, which lead me to https://github.com/petrsimon/ui-layout/tree/refactor-display-update (also announced in #100, which it is solution to. Will wait for comments, especially @j--w who was working on it).
I've already merged that branch with this one in https://github.com/petrsimon/ui-layout/tree/toggle-and-resize, which seem to complement each other quite nicely.
Not sure if I should push it over this one or create new PR from `toggle-and-resize?

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

I've made quite few improvements in the toggle-and-resize branch and it all seems to be behaving quite nicely. I had to cut a bit deeper to get around bugs that appeared and I'm not sure if I should force push it here or rather create new PR. Please see b4eb6c2. I will cool off for a while and stop working on it, unless I run into bugs in my application.

@j--w

j--w commented Nov 2, 2015

Copy link
Copy Markdown

@petrsimon I made some comments on #100. I would think that tidying up the toggle-and-resize branch and creating a new PR would be the best course of action.

@petrsimon

Copy link
Copy Markdown
ContributorAuthor

@j--w, thanks. I thought new PR might be better. Closing this in favour of #154.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@petrsimon@BobbieBarker@SomeKittens@j--w@wesleycho