(path, options = {})
| 1720 | button.disabled = busy; |
| 1721 | button.classList.toggle("loading", busy); |
| 1722 | button.textContent = busy ? ui().papers.generating : ui().reports.generate; |
| 1723 | } |
| 1724 | |
| 1725 | function flashButtonFeedback(button, type = "click") { |
| 1726 | if (!button || (button.disabled && type === "click")) return; |
| 1727 | const previousTimer = state.buttonFeedbackTimers.get(button); |
| 1728 | if (previousTimer) window.clearTimeout(previousTimer); |
| 1729 | button.classList.remove("feedback-click", "feedback-success", "feedback-error"); |
| 1730 | button.classList.add(`feedback-${type}`); |
| 1731 | const timer = window.setTimeout(() => { |
| 1732 | button.classList.remove("feedback-click", "feedback-success", "feedback-error"); |
| 1733 | state.buttonFeedbackTimers.delete(button); |
| 1734 | }, type === "click" ? 520 : 760); |
| 1735 | state.buttonFeedbackTimers.set(button, timer); |
| 1736 | } |
| 1737 | |
| 1738 | function setActionButtonBusy(button, busy) { |
| 1739 | if (!button) return; |
| 1740 | if (busy) { |
no test coverage detected