Files
sure/app/javascript/controllers/checkbox_toggle_controller.js
Alessio Cappa b3af8bf1ae Transactions & Activities pages improvements (#452)
* feat: Add toggle on mobile to show/hide checkboxes in transaction page

* fix: Add multi-select toggle also in activities page. Make JS controller compatible also in this view.

* feat: Add category in mobile view

* feat: Add mobile layout for transaction categories

* feat: Add margin for pagination on mobile

* fix: Ensure category exists when displaying the name

* fix: Adjust mobile paddings

* fix: Display "uncategorized" label if no category is set

* fix: Expand transaction name/subtitle

* feat: Add merchant name on desktop view

* feat: Move merchant name before account name

* fix: Add class to hide merchant on mobile

* feat: Add merchant logo on mobile

* fix: add pointer-events-none to merchant image on mobile view

* feat: toggle header checkbox in transaction page when button is clicked

* Remove unnecessary CSS class

* Remove duplicate CSS class

* Remove wrong Enable Banking logo URL

* Update app/views/transactions/_transaction.html.erb

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Alessio Cappa <104093777+alessiocappa@users.noreply.github.com>

* Revert "Update app/views/transactions/_transaction.html.erb"

This reverts commit 9766c50a1d.

* Add translation for Loan Payment/Transfer

* Apply review comments

* Add accessible name for toggle based on review comments

* Use border instead of border-1 class

* Apply review comments

* Missing l10n key

---------

Signed-off-by: Alessio Cappa <104093777+alessiocappa@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2025-12-24 01:57:16 +01:00

40 lines
1.1 KiB
JavaScript

import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = ["selectionEntry", "toggleButton"]
toggle() {
if (this.selectionEntryTargets.length === 0) return
const shouldShow = this.selectionEntryTargets[0].classList.contains("hidden")
this.selectionEntryTargets.forEach((el) => {
if (shouldShow) {
el.classList.remove("hidden")
} else {
el.classList.add("hidden")
}
})
if (!shouldShow) {
const bulkSelectElement =
this.element.querySelector("[data-controller~='bulk-select']") ||
this.element.closest("[data-controller~='bulk-select']") ||
document.querySelector("[data-controller~='bulk-select']")
if (bulkSelectElement) {
const bulkSelectController = this.application.getControllerForElementAndIdentifier(
bulkSelectElement,
"bulk-select"
)
if (bulkSelectController) {
bulkSelectController.deselectAll()
}
}
}
if (this.hasToggleButtonTarget) {
this.toggleButtonTarget.classList.toggle("bg-surface", shouldShow)
}
}
}