massActions.js 971 B

12345678910111213141516171819202122232425262728293031
  1. import { addEventListenerToAll } from "./utils"
  2. const initMassActions = (emptySelectionLabel, selectionLabel) => {
  3. const dropdownToggle = document.querySelector("#mass-action .dropdown-toggle")
  4. const dropdownLabel = dropdownToggle.querySelector("span:last-child")
  5. const updateDropdownState = () => {
  6. const checked = document.querySelectorAll(".row-select input:checked")
  7. dropdownToggle.disabled = checked.length === 0
  8. if (checked.length) {
  9. dropdownLabel.textContent = selectionLabel.replace("0", checked.length)
  10. } else {
  11. dropdownLabel.textContent = emptySelectionLabel
  12. }
  13. }
  14. updateDropdownState()
  15. addEventListenerToAll(".row-select input", "change", () => {
  16. updateDropdownState()
  17. })
  18. addEventListenerToAll("#mass-action [data-confirmation]", "click", event => {
  19. if (!window.confirm(event.target.dataset.confirmation)) {
  20. event.preventDefault()
  21. return false
  22. }
  23. })
  24. }
  25. export default initMassActions