Update the card perma to support bridge buttonsa and the edit form state

This commit is contained in:
Jay Ohms
2026-01-09 13:09:51 -05:00
parent 9ac34f8882
commit b074a11e1d
5 changed files with 31 additions and 5 deletions
@@ -5,10 +5,16 @@ export default class extends BridgeComponent {
static component = "buttons"
static targets = [ "button" ]
buttonTargetConnected(element) {
buttonTargetConnected() {
this.notifyBridgeOfConnect()
}
buttonTargetDisconnected() {
if (!this.#isControllerTearingDown()) {
this.notifyBridgeOfConnect()
}
}
notifyBridgeOfConnect() {
const buttons = this.#enabledButtonTargets
.map((target, index) => {
@@ -30,4 +36,8 @@ export default class extends BridgeComponent {
return this.buttonTargets
.filter(target => !target.closest("[data-bridge-disabled]"))
}
#isControllerTearingDown() {
return !document.body.contains(this.element)
}
}
@@ -17,6 +17,7 @@ export default class extends BridgeComponent {
disconnect() {
super.disconnect()
this.notifyBridgeOfDisonnect()
this.submitObserver?.disconnect()
}
@@ -29,6 +30,10 @@ export default class extends BridgeComponent {
})
}
notifyBridgeOfDisonnect() {
this.send("disconnect")
}
observeSubmitTarget() {
this.submitObserver = new MutationObserver(() => {
this.send(this.submitTarget.disabled ? "submitDisabled" : "submitEnabled")
@@ -9,6 +9,12 @@ export default class extends BridgeComponent {
this.notifyBridgeOfConnect()
}
itemTargetDisconnected() {
if (!this.#isControllerTearingDown) {
this.notifyBridgeOfConnect()
}
}
notifyBridgeOfConnect() {
const items = this.#enabledItemTargets
.map((target, index) => {
@@ -30,4 +36,8 @@ export default class extends BridgeComponent {
return this.itemTargets
.filter(target => !target.closest("[data-bridge-disabled]"))
}
#isControllerTearingDown() {
return !document.body.contains(this.element)
}
}