move into its own file

This commit is contained in:
counterweight 2025-03-23 11:10:36 +01:00
parent 7e5fdecf1a
commit b4fa6cb962
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
2 changed files with 79 additions and 77 deletions

View file

@ -0,0 +1,78 @@
class BitcoinMethodCheckboxes {
constructor({ parentElement }) {
this.onchainContainer = null;
this.onchainCheckboxElement = null;
this.lightningContainer = null;
this.lightningCheckboxElement = null;
this.parentElement = parentElement;
}
render() {
this.onchainContainer = this.buildCheckbox({
id: 'onchain',
label: 'Onchain',
});
this.onchainCheckboxElement = this.onchainContainer.querySelector('input');
this.lightningContainer = this.buildCheckbox({
id: 'lightning',
label: 'Lightning',
});
this.lightningCheckboxElement =
this.lightningContainer.querySelector('input');
for (const btcMethodCheckbox of [
this.onchainCheckboxElement,
this.lightningCheckboxElement,
]) {
btcMethodCheckbox.addEventListener('click', () => {
this.validateBitcoinMethodCheckboxes(btcMethodCheckbox);
});
}
this.parentElement.appendChild(this.onchainContainer);
this.parentElement.appendChild(this.lightningContainer);
}
buildCheckbox({ id, label }) {
const checkboxContainer = document.createElement('div');
checkboxContainer.className = 'checkbox-row';
checkboxContainer.id = `${id}-checkbox-area`;
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.name = id;
checkbox.id = `${id}-checkbox`;
checkbox.checked = true;
const labelElement = document.createElement('label');
labelElement.htmlFor = checkbox.id;
labelElement.textContent = label;
checkboxContainer.appendChild(checkbox);
checkboxContainer.appendChild(labelElement);
return checkboxContainer;
}
validateBitcoinMethodCheckboxes(clickedCheckbox) {
let checkedCount = [
this.onchainCheckboxElement,
this.lightningCheckboxElement,
].filter((cb) => cb.checked).length;
console.log(checkedCount);
if (checkedCount === 0) {
clickedCheckbox.checked = true;
}
}
get isOnchainAccepted() {
return this.onchainCheckboxElement.checked;
}
get isLightningAccepted() {
return this.lightningCheckboxElement.checked;
}
}
module.exports = BitcoinMethodCheckboxes;

View file

@ -5,83 +5,7 @@ const PriceDisplay = require('../components/PriceDisplay');
const AmountInput = require('../components/AmountInput');
const PlaceInput = require('../components/PlaceInput');
const TimeInput = require('../components/TimeInput');
class BitcoinMethodCheckboxes {
constructor({ parentElement }) {
this.onchainContainer = null;
this.onchainCheckboxElement = null;
this.lightningContainer = null;
this.lightningCheckboxElement = null;
this.parentElement = parentElement;
}
render() {
this.onchainContainer = this.buildCheckbox({
id: 'onchain',
label: 'Onchain',
});
this.onchainCheckboxElement = this.onchainContainer.querySelector('input');
this.lightningContainer = this.buildCheckbox({
id: 'lightning',
label: 'Lightning',
});
this.lightningCheckboxElement =
this.lightningContainer.querySelector('input');
for (const btcMethodCheckbox of [
this.onchainCheckboxElement,
this.lightningCheckboxElement,
]) {
btcMethodCheckbox.addEventListener('click', () => {
this.validateBitcoinMethodCheckboxes(btcMethodCheckbox);
});
}
this.parentElement.appendChild(this.onchainContainer);
this.parentElement.appendChild(this.lightningContainer);
}
buildCheckbox({ id, label }) {
const checkboxContainer = document.createElement('div');
checkboxContainer.className = 'checkbox-row';
checkboxContainer.id = `${id}-checkbox-area`;
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.name = id;
checkbox.id = `${id}-checkbox`;
checkbox.checked = true;
const labelElement = document.createElement('label');
labelElement.htmlFor = checkbox.id;
labelElement.textContent = label;
checkboxContainer.appendChild(checkbox);
checkboxContainer.appendChild(labelElement);
return checkboxContainer;
}
validateBitcoinMethodCheckboxes(clickedCheckbox) {
let checkedCount = [
this.onchainCheckboxElement,
this.lightningCheckboxElement,
].filter((cb) => cb.checked).length;
console.log(checkedCount);
if (checkedCount === 0) {
clickedCheckbox.checked = true;
}
}
get isOnchainAccepted() {
return this.onchainCheckboxElement.checked;
}
get isLightningAccepted() {
return this.lightningCheckboxElement.checked;
}
}
const BitcoinMethodCheckboxes = require('../components/BitcoinMethodCheckboxes');
function offersPage() {
const createOfferEventBus = new EventTarget();