fix(exposure): Fix toggle switches always showing as ON
Use DOM property assignment (cb.checked = value) instead of HTML
attribute ('checked': false) which browsers treat as checked since
any attribute presence means ON for boolean HTML attributes.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
4c8799d520
commit
9def2ad15a
@ -109,25 +109,15 @@ return view.extend({
|
||||
svc.address.replace(/^.*:/, '').length < 4 ? svc.address : (isExternal ? '0.0.0.0' : '127.0.0.1')),
|
||||
// Tor toggle
|
||||
E('td', { 'style': 'text-align: center;' },
|
||||
isExternal ? E('label', { 'class': 'toggle-switch' }, [
|
||||
E('input', {
|
||||
'type': 'checkbox',
|
||||
'checked': !!torInfo,
|
||||
'change': ui.createHandlerFn(self, 'handleTorToggle', svc, torInfo)
|
||||
}),
|
||||
E('span', { 'class': 'toggle-slider tor-slider' })
|
||||
]) : E('span', { 'class': 'exp-text-muted' }, '-')
|
||||
isExternal ? self.makeToggle(!!torInfo, 'tor-slider',
|
||||
ui.createHandlerFn(self, 'handleTorToggle', svc, torInfo)
|
||||
) : E('span', { 'class': 'exp-text-muted' }, '-')
|
||||
),
|
||||
// SSL toggle
|
||||
E('td', { 'style': 'text-align: center;' },
|
||||
isExternal ? E('label', { 'class': 'toggle-switch' }, [
|
||||
E('input', {
|
||||
'type': 'checkbox',
|
||||
'checked': !!(sslInfo || domains.length > 0),
|
||||
'change': ui.createHandlerFn(self, 'handleSslToggle', svc, sslInfo, domains)
|
||||
}),
|
||||
E('span', { 'class': 'toggle-slider ssl-slider' })
|
||||
]) : E('span', { 'class': 'exp-text-muted' }, '-')
|
||||
isExternal ? self.makeToggle(!!(sslInfo || domains.length > 0), 'ssl-slider',
|
||||
ui.createHandlerFn(self, 'handleSslToggle', svc, sslInfo, domains)
|
||||
) : E('span', { 'class': 'exp-text-muted' }, '-')
|
||||
),
|
||||
// Exposure info
|
||||
E('td', {}, infoItems.length > 0 ? infoItems :
|
||||
@ -167,6 +157,15 @@ return view.extend({
|
||||
]);
|
||||
},
|
||||
|
||||
makeToggle: function(checked, sliderClass, handler) {
|
||||
var cb = E('input', { 'type': 'checkbox', 'change': handler });
|
||||
cb.checked = checked;
|
||||
return E('label', { 'class': 'toggle-switch' }, [
|
||||
cb,
|
||||
E('span', { 'class': 'toggle-slider ' + sliderClass })
|
||||
]);
|
||||
},
|
||||
|
||||
parseBackendPort: function(backend) {
|
||||
if (!backend) return null;
|
||||
var m = backend.match(/:(\d+)$/);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user