client: switch widget: prevent the check box to become out of sync with the switch toggle status

This commit is contained in:
Adorian Doran 2025-01-21 05:11:34 +02:00
parent 039112f106
commit 8bdc5c9fea

View File

@ -46,6 +46,10 @@ const TPL = `
.switch-widget .switch-button.on { .switch-widget .switch-button.on {
background: green !important; background: green !important;
} }
.switch-widget input[type="checkbox"] {
pointer-events: none;
}
</style> </style>
<div class="switch-widget"> <div class="switch-widget">
@ -75,7 +79,13 @@ export default class SwitchWidget extends NoteContextAwareWidget {
this.$switchButton = this.$widget.find(".switch-button"); this.$switchButton = this.$widget.find(".switch-button");
this.$switchToggle = this.$widget.find(".switch-toggle"); this.$switchToggle = this.$widget.find(".switch-toggle");
this.$switchToggle.on("click", () => this.toggle(!this.currentState)); this.$switchToggle.on("click", (e) => {
this.toggle(!this.currentState);
// Prevent the check box from being toggled by the click, the value of the check box
// should be set exclusively by the 'isToggled' property setter.
e.preventDefault();
});
this.$switchName = this.$widget.find(".switch-name"); this.$switchName = this.$widget.find(".switch-name");
@ -103,6 +113,7 @@ export default class SwitchWidget extends NoteContextAwareWidget {
this.$switchButton.toggleClass("on", this.currentState); this.$switchButton.toggleClass("on", this.currentState);
this.$switchToggle.prop("checked", this.currentState); this.$switchToggle.prop("checked", this.currentState);
console.log(this.currentState);
if (this.currentState) { if (this.currentState) {
this.$switchName.text(this.switchOffName); this.$switchName.text(this.switchOffName);