/** @override */
render: function() {
+ var id = 'cb%08x'.format(Math.random() * 0xffffffff);
var frameEl = E('div', {
'id': this.options.id,
'class': 'cbi-checkbox'
}));
frameEl.appendChild(E('input', {
- 'id': this.options.id ? 'widget.' + this.options.id : null,
+ 'id': id,
'name': this.options.name,
'type': 'checkbox',
'value': this.options.value_enabled,
'checked': (this.value == this.options.value_enabled) ? '' : null
}));
+ frameEl.appendChild(E('label', { 'for': id }));
+
return this.bind(frameEl);
},
bind: function(frameEl) {
this.node = frameEl;
- this.setUpdateEvents(frameEl.lastElementChild, 'click', 'blur');
- this.setChangeEvents(frameEl.lastElementChild, 'change');
+ this.setUpdateEvents(frameEl.lastElementChild.previousElementSibling, 'click', 'blur');
+ this.setChangeEvents(frameEl.lastElementChild.previousElementSibling, 'change');
dom.bindClassInstance(frameEl, this);
* Returns `true` when the checkbox is currently checked, otherwise `false`.
*/
isChecked: function() {
- return this.node.lastElementChild.checked;
+ return this.node.lastElementChild.previousElementSibling.checked;
},
/** @override */
/** @override */
setValue: function(value) {
- this.node.lastElementChild.checked = (value == this.options.value_enabled);
+ this.node.lastElementChild.previousElementSibling.checked = (value == this.options.value_enabled);
}
});
});
dl.lastElementChild.appendChild(inputEl);
- dl.lastElementChild.appendChild(E('div', { 'class': 'cbi-button cbi-button-add' }, '+'));
+ dl.lastElementChild.appendChild(E('div', { 'class': 'btn cbi-button cbi-button-add' }, '+'));
if (this.options.datatype || this.options.validate)
UI.prototype.addValidator(inputEl, this.options.datatype || 'string',
dom.content(i, [ _('Unsaved Changes'), ': ', n ]);
i.classList.add('flash');
i.style.display = '';
+ document.dispatchEvent(new CustomEvent('uci-new-changes'));
}
else {
i.classList.remove('flash');
i.style.display = 'none';
+ document.dispatchEvent(new CustomEvent('uci-clear-changes'));
}
},
var arg_offset = arguments.length - 2;
return Function.prototype.bind.apply(function() {
- var t = arguments[arg_offset].target;
+ var t = arguments[arg_offset].currentTarget;
t.classList.add('spinning');
t.disabled = true;