diff --git a/app/assets/stylesheets/card-columns.css b/app/assets/stylesheets/card-columns.css index 36d4748a9..81506847a 100644 --- a/app/assets/stylesheets/card-columns.css +++ b/app/assets/stylesheets/card-columns.css @@ -23,7 +23,7 @@ max-inline-size: var(--main-width); position: relative; - &:has(.card-columns__left .cards:not(.is-collapsed), .card-columns__right .cards:not(.is-collapsed)) { + &:has(.card-columns__left .cards[aria-expanded="true"], .card-columns__right .cards[aria-expanded="true"]) { grid-template-columns: auto auto auto; } @@ -73,7 +73,7 @@ z-index: 3; } - &.is-collapsed { + &[aria-expanded="false"] { border-radius: 99rem; flex: 0 0 var(--column-width-collapsed); inline-size: var(--column-width-collapsed); @@ -85,7 +85,7 @@ } } - &:not(.is-collapsed) { + &[aria-expanded="true"] { padding-inline: calc(var(--column-gap) * 2); } } @@ -137,7 +137,7 @@ } } - .cards.is-collapsed & { + .cards[aria-expanded="false"] & { block-size: 100%; flex-direction: column; inline-size: var(--column-width-collapsed); @@ -171,7 +171,7 @@ } } - .cards:not(.is-collapsed) & { + .cards[aria-expanded="true"] & { display: grid; grid-template-columns: auto 1fr auto; inline-size: 100%; @@ -188,7 +188,7 @@ line-height: var(--column-width-collapsed); inline-size: var(--column-width-collapsed); - .cards:not(.is-collapsed) & { + .cards[aria-expanded="true"] & { opacity: 0; } } @@ -199,7 +199,7 @@ grid-column: 2; line-height: var(--column-width-collapsed); - .cards.is-collapsed & { + .cards[aria-expanded="false"] & { writing-mode: vertical-rl; } } @@ -216,7 +216,7 @@ --panel-padding: 1ch; } - .cards.is-collapsed & { + .cards[aria-expanded="false"] & { display: none; } } @@ -534,7 +534,7 @@ /* -------------------------------------------------------------------------- */ /* Surface a mini bubble if there are cards with bubbles inside */ - .cards--doing.is-collapsed:has(.bubble:not([hidden])) { + .cards--doing[aria-expanded="false"]:has(.bubble:not([hidden])) { --bubble-color: var(--card-color, oklch(var(--lch-blue-medium))); --bubble-shape: 54% 46% 61% 39% / 57% 49% 51% 43%; diff --git a/app/javascript/controllers/collapsible_columns_controller.js b/app/javascript/controllers/collapsible_columns_controller.js index 6655e5adf..ea8dc4b4f 100644 --- a/app/javascript/controllers/collapsible_columns_controller.js +++ b/app/javascript/controllers/collapsible_columns_controller.js @@ -1,27 +1,26 @@ import { Controller } from "@hotwired/stimulus" export default class extends Controller { - static classes = [ "collapsed" ] static targets = [ "column" ] toggle(event) { - const clickedColumn = event.target.closest('[data-collapsible-columns-target="column"]') + const clickedColumn = event.target.closest("[data-collapsible-columns-target='column']") if (!clickedColumn) return - const isCurrentlyCollapsed = clickedColumn.classList.contains(this.collapsedClass) + const isCurrentlyExpanded = clickedColumn.getAttribute("aria-expanded") === "true" this.columnTargets.forEach(column => { - column.classList.add(this.collapsedClass) + column.setAttribute("aria-expanded", "false") }) - if (isCurrentlyCollapsed) { - clickedColumn.classList.remove(this.collapsedClass) + if (!isCurrentlyExpanded) { + clickedColumn.setAttribute("aria-expanded", "true") } } preventToggle(event) { - if (event.detail.attributeName === "class") { + if (event.detail.attributeName === "aria-expanded") { event.preventDefault() } } diff --git a/app/views/cards/index/_columns.html.erb b/app/views/cards/index/_columns.html.erb index fc3896f9a..b8986ba30 100644 --- a/app/views/cards/index/_columns.html.erb +++ b/app/views/cards/index/_columns.html.erb @@ -1,6 +1,6 @@ <% cache columns do %> <%= turbo_frame_tag :cards_container do %> -