mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-08 21:52:55 +08:00
Add handler support for settings fields
Add settings SubElementsHandler
This commit is contained in:
parent
9c94d5a536
commit
d41a51fa63
3 changed files with 86 additions and 10 deletions
|
@ -0,0 +1,51 @@
|
|||
|
||||
class SubElementsHandler {
|
||||
constructor(element, options) {
|
||||
const fieldSelector = 'input, select, textarea';
|
||||
|
||||
this.element = element;
|
||||
this.values = options.values;
|
||||
this.elements = options.elements;
|
||||
|
||||
this.elementsSelector = this.elements.join(',');
|
||||
|
||||
this.input = jQuery(this.element).is(fieldSelector)
|
||||
? this.element
|
||||
: jQuery(this.element).find(fieldSelector).get(0);
|
||||
|
||||
this.updateElementsVisibility();
|
||||
|
||||
jQuery(this.input).change(() => {
|
||||
this.updateElementsVisibility();
|
||||
});
|
||||
}
|
||||
|
||||
updateElementsVisibility() {
|
||||
const $elements = jQuery(this.elementsSelector);
|
||||
|
||||
let value = this.getValue(this.input);
|
||||
value = (value !== null ? value.toString() : value);
|
||||
|
||||
if (this.values.indexOf(value) !== -1) {
|
||||
$elements.show();
|
||||
} else {
|
||||
$elements.hide();
|
||||
}
|
||||
}
|
||||
|
||||
getValue(element) {
|
||||
const $el = jQuery(element);
|
||||
|
||||
if ($el.is(':checkbox') || $el.is(':radio')) {
|
||||
if ($el.is(':checked')) {
|
||||
return $el.val();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return $el.val();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default SubElementsHandler;
|
Loading…
Add table
Add a link
Reference in a new issue