Skip to content

Commit 438d6c3

Browse files
Merge pull request #440 from baoagency/refactor-button-disabling
Refactor button disabling with Stimulus value attribute
2 parents 61026f1 + e1f7e3f commit 438d6c3

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

Diff for: app/assets/javascripts/polaris_view_components.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -298,26 +298,29 @@ class Autocomplete extends Controller {
298298
}
299299

300300
class Button extends Controller {
301+
static values={
302+
disabled: Boolean
303+
};
301304
disable(event) {
302-
if (this.button.disabled) {
305+
if (this.disabledValue) {
303306
if (event) event.preventDefault();
304307
} else {
305-
this.button.disabled = true;
308+
this.disabledValue = true;
306309
this.button.classList.add("Polaris-Button--disabled", "Polaris-Button--loading");
307310
this.buttonContent.insertAdjacentHTML("afterbegin", this.spinnerHTML);
308311
}
309312
}
310313
disableWithoutLoader(event) {
311-
if (this.button.disabled) {
314+
if (this.disabledValue) {
312315
if (event) event.preventDefault();
313316
} else {
314-
this.button.disabled = true;
317+
this.disabledValue = true;
315318
this.button.classList.add("Polaris-Button--disabled");
316319
}
317320
}
318321
enable() {
319-
if (this.button.disabled) {
320-
this.button.disabled = false;
322+
if (this.disabledValue) {
323+
this.disabledValue = false;
321324
this.button.classList.remove("Polaris-Button--disabled", "Polaris-Button--loading");
322325
if (this.spinner) this.spinner.remove();
323326
}

Diff for: app/assets/javascripts/polaris_view_components/button_controller.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
11
import { Controller } from "@hotwired/stimulus"
22

33
export default class extends Controller {
4+
static values = { disabled: Boolean }
5+
46
disable(event) {
5-
if (this.button.disabled) {
7+
if (this.disabledValue) {
68
if (event) event.preventDefault()
79
} else {
8-
this.button.disabled = true
10+
this.disabledValue = true
911
this.button.classList.add("Polaris-Button--disabled", "Polaris-Button--loading")
1012
this.buttonContent.insertAdjacentHTML("afterbegin", this.spinnerHTML)
1113
}
1214
}
1315

1416
disableWithoutLoader(event) {
15-
if (this.button.disabled) {
17+
if (this.disabledValue) {
1618
if (event) event.preventDefault()
1719
} else {
18-
this.button.disabled = true
20+
this.disabledValue = true
1921
this.button.classList.add("Polaris-Button--disabled")
2022
}
2123
}
2224

2325
enable() {
24-
if (this.button.disabled) {
25-
this.button.disabled = false
26+
if (this.disabledValue) {
27+
this.disabledValue = false
2628
this.button.classList.remove("Polaris-Button--disabled", "Polaris-Button--loading")
2729
if (this.spinner) this.spinner.remove()
2830
}

0 commit comments

Comments
 (0)