Index: chrome/browser/resources/settings/radio_group/radio_group.js |
diff --git a/chrome/browser/resources/settings/radio_group/radio_group.js b/chrome/browser/resources/settings/radio_group/radio_group.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0711680e3438c43491a1de7336e2d192adf0a010 |
--- /dev/null |
+++ b/chrome/browser/resources/settings/radio_group/radio_group.js |
@@ -0,0 +1,71 @@ |
+// Copyright 2015 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 |
+ * `cr-radio-group` wraps a radio-group and set of radio-buttons that control |
+ * a supplied preference. |
+ * |
+ * Example: |
+ * <cr-settings-radio-group pref="{{prefs.settings.foo}}" |
+ * label="Foo Options." buttons="{{fooOptionsList}}"> |
+ * </cr-settings-radio-group> |
+ * |
+ * @element cr-settings-radio-group |
+ */ |
+Polymer({ |
+ is: 'cr-settings-radio-group', |
+ |
+ properties: { |
+ /** |
+ * The preference object to control. |
+ * @type {chrome.settingsPrivate.PrefObject|undefined} |
+ */ |
+ pref: { |
+ type: Object, |
+ notify: true, |
+ observer: 'prefChanged_' |
+ }, |
+ |
+ /** |
+ * IronSelectableBehavior selected attribute |
+ */ |
+ selected: { |
+ type: String, |
+ observer: 'selectedChanged_' |
+ }, |
+ }, |
+ |
+ /** @private */ |
+ prefChanged_: function() { |
+ if (!this.pref) |
+ return; |
+ if (this.pref.type == chrome.settingsPrivate.PrefType.NUMBER || |
+ this.pref.type == chrome.settingsPrivate.PrefType.BOOLEAN) { |
+ this.selected = this.pref.value.toString(); |
+ } else { |
+ assert(this.pref.type != chrome.settingsPrivate.PrefType.LIST); |
+ this.selected = /** @type {string} */(this.pref.value); |
+ } |
+ }, |
+ |
+ /** @private */ |
+ selectedChanged_: function() { |
+ if (!this.pref) |
+ return; |
+ if (this.pref.type == chrome.settingsPrivate.PrefType.NUMBER) { |
+ var n = parseInt(this.selected, 10); |
+ if (isNaN(n)) { |
+ console.error('Bad selected name for numerical pref: ' + this.selected); |
Dan Beam
2015/09/16 22:29:37
why not just assert(!isNan(n))?
|
+ return; |
+ } |
+ this.set('pref.value', n); |
+ } else if (this.pref.type == chrome.settingsPrivate.PrefType.BOOLEAN) { |
+ this.set('pref.value', this.selected == 'true'); |
+ } else { |
+ assert(this.pref.type != chrome.settingsPrivate.PrefType.LIST); |
+ this.set('pref.value', this.selected); |
+ } |
+ }, |
+}); |