| Index: ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
|
| diff --git a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js b/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
|
| index d15ed9b8173a769d12afe886806d1509a99cfffc..1940b464f8a03f58f72b80760ce2902580751237 100644
|
| --- a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
|
| +++ b/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.js
|
| @@ -29,8 +29,13 @@ Polymer({
|
| type: Boolean,
|
| value: false,
|
| },
|
| +
|
| + showScrollBorders: Boolean
|
| },
|
|
|
| + /** @private {?IntersectionObserver} */
|
| + intersectionObserver_: null,
|
| +
|
| /** @override */
|
| ready: function() {
|
| // If the active history entry changes (i.e. user clicks back button),
|
| @@ -41,6 +46,34 @@ Polymer({
|
| }.bind(this));
|
| },
|
|
|
| + /** @override */
|
| + attached: function() {
|
| + if (this.showScrollBorders) {
|
| + var bodyContainer = this.$$('.body-container');
|
| +
|
| + var callback = function(entries) {
|
| + assert(entries.length == 1);
|
| + entries[0].intersectionRatio == 0 ?
|
| + bodyContainer.classList.add('bottom-scrollable') :
|
| + bodyContainer.classList.remove('bottom-scrollable');
|
| + };
|
| +
|
| + this.intersectionObserver_ = new IntersectionObserver(callback, {
|
| + root: bodyContainer,
|
| + threshold: 0,
|
| + });
|
| + this.intersectionObserver_.observe(this.$.bodyBottomMarker);
|
| + }
|
| + },
|
| +
|
| + /** @override */
|
| + detached: function() {
|
| + if (this.intersectionObserver_) {
|
| + this.intersectionObserver_.disconnect();
|
| + this.intersectionObserver_ = null;
|
| + }
|
| + },
|
| +
|
| cancel: function() {
|
| this.fire('cancel');
|
| HTMLDialogElement.prototype.close.call(this, '');
|
|
|