Index: chrome/browser/resources/settings/global_scroll_target_behavior.js |
diff --git a/chrome/browser/resources/settings/global_scroll_target_behavior.js b/chrome/browser/resources/settings/global_scroll_target_behavior.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0870c0f26cb989aa0c821306b05ccb8d20790fdc |
--- /dev/null |
+++ b/chrome/browser/resources/settings/global_scroll_target_behavior.js |
@@ -0,0 +1,53 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+/** |
+ * @fileoverview A helper object to be used when an iron-list needs to be aware |
+ * of a global scroll target. |
+ */ |
+ |
+/** |
+ * Global object to hold the scroll target. |
+ * @type {{scrollTarget: (HTMLElement|undefined)}} |
+ */ |
+global.settingsScrollTargetData = {}; |
+ |
+/** @polymerBehavior */ |
+var GlobalScrollTargetBehavior = { |
+ properties: { |
+ /** |
+ * Read only property for the scroll target. |
+ * @type {HTMLElement} |
+ */ |
+ scrollTarget: { |
+ type: Object, |
+ computed: 'getScrollTarget_(globalData_.scrollTarget)', |
+ }, |
+ |
+ /** |
+ * Reference to the global data. This allows Polymer style data binding. |
+ * @type {{scrollTarget: (HTMLElement|undefined)}} |
+ * @private |
+ */ |
+ globalData_: Object, |
michaelpg
2016/10/18 21:58:00
i'd suggest:
globalData_: {
type: Object,
val
hcarmona
2016/10/19 18:53:34
Acknowledged.
|
+ }, |
+ |
+ /** @override */ |
+ ready: function() { |
+ this.globalData_ = global.settingsScrollTargetData; |
+ }, |
+ |
+ /** @param {HTMLElement} value */ |
+ setGlobalScrollTarget: function(value) { |
+ this.globalData_.scrollTarget = value; |
michaelpg
2016/10/18 21:58:00
This doesn't actually propagate. It may work, but
hcarmona
2016/10/19 18:53:34
--------------------------------------------------
michaelpg
2016/10/19 19:50:08
No, but we should make that assumption explicit (w
hcarmona
2016/10/20 14:27:43
Done.
|
+ }, |
+ |
+ /** |
+ * @return {HTMLElement|undefined} |
+ * @private |
+ */ |
+ getScrollTarget_: function() { |
+ return this.globalData_.scrollTarget; |
+ }, |
+}; |