1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
// 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-settings-checkbox` is a checkbox that controls a supplied preference.
*
* Example:
* <cr-settings-checkbox pref="{{prefs.settings.enableFoo}}"
* label="Enable foo setting." subLabel="(bar also)">
* </cr-settings-checkbox>
*
* @element cr-settings-checkbox
*/
Polymer({
is: 'cr-settings-checkbox',
behaviors: [PolicyControllable],
properties: {
/**
* The boolean preference object to control.
* @type {?chrome.settingsPrivate.PrefObject}
*/
pref: {
type: Object,
notify: true,
},
/** Whether the checkbox should represent the inverted value. */
inverted: {
type: Boolean,
value: false,
},
/** Whether the checkbox is checked. */
checked: {
type: Boolean,
value: false,
notify: true,
observer: 'checkedChanged_',
reflectToAttribute: true
},
/** Disabled property for the element. */
disabled: {
type: Boolean,
value: false,
notify: true,
reflectToAttribute: true
},
/** Checkbox label. */
label: {
type: String,
value: '',
},
/** Additional sub-label for the checkbox. */
subLabel: {
type: String,
value: '',
},
},
observers: [
'prefValueChanged_(pref.value)'
],
/** @override */
ready: function() {
this.$.events.forward(this.$.checkbox, ['change']);
},
/**
* Polymer observer for pref.value.
* @param {*} prefValue
* @private
*/
prefValueChanged_: function(prefValue) {
this.checked = this.getNewValue_(prefValue);
},
/**
* Polymer observer for checked.
* @private
*/
checkedChanged_: function() {
this.set('pref.value', this.getNewValue_(this.checked));
},
/**
* @param {*} value
* @return {boolean} The value as a boolean, inverted if |inverted| is true.
* @private
*/
getNewValue_: function(value) {
return this.inverted ? !value : !!value;
},
/**
* @param {boolean} disabled
* @param {?chrome.settingsPrivate.PrefObject} pref
* @return {boolean} Whether the checkbox should be disabled.
* @private
*/
checkboxDisabled_: function(disabled, pref) {
return disabled || this.isPolicyControlled(pref);
},
});
|