Merge branch 'main' into collections-filter

* main: (24 commits)
  Move load-balancer to fizzy-lb-101
  Add otel_collector accessory for load balancer
  Fix: this was getting idiomorph confused as it was being invoked on many subtree elements
  Keep column popups during page refreshes
  Don't render next link unless there is more activity
  Live updates for the collection perma
  Keep filter panel during page refreshes
  Add pagination to the list of filtered cards
  Use frame based pagination for the users timeline too
  Use frame-based pagination for the activity timeline
  Don't broadcast updates of cards unless published
  Live updates for the timeline
  Make permanent to avoid losing menu on page refreshes
  Use the new required attribute that now Lexxy supports
  Use controller to disable empty comment submit
  Dynamic height for pins based on viewport height
  Position lexxy language picker
  Replace old link with proper collection path
  No longer needed
  Prevent card bubbles getting clipped in grid layout
  ...
This commit is contained in:
Jason Zimdars
2025-10-02 14:26:45 -05:00
29 changed files with 163 additions and 62 deletions
@@ -14,7 +14,7 @@ export default class extends Controller {
}
preventToggle(event) {
if (event.detail.attributeName === "class") {
if (event.target.hasAttribute("data-collapsible-columns-target") && event.detail.attributeName === "class") {
event.preventDefault()
}
}
+12 -2
View File
@@ -1,8 +1,8 @@
import { Controller } from "@hotwired/stimulus"
import { debounce } from "helpers/timing_helpers";
import { debounce, nextFrame } from "helpers/timing_helpers";
export default class extends Controller {
static targets = [ "cancel" ]
static targets = [ "cancel", "submit" ]
static values = {
debounceTimeout: { type: Number, default: 300 }
@@ -37,6 +37,16 @@ export default class extends Controller {
event.preventDefault()
}
async disableSubmitWhenInvalid(event) {
await nextFrame()
if (this.element.checkValidity()) {
this.submitTarget.removeAttribute("disabled")
} else {
this.submitTarget.toggleAttribute("disabled", true)
}
}
select(event) {
event.target.select()
}