mirror of
https://github.com/mattermost/mattermost.git
synced 2026-10-16 15:18:10 +08:00
Every apps form lost its slide-in animation. Bootstrap's `transition: transform 0.3s ease-out` sits on `.modal.fade .modal-dialog`, exactly as specific as the new `.modal .modal-dialog.apps-form-modal` rule and earlier in the cascade, so naming only `width` replaced it rather than adding to it — and every apps form carries the class, not just a grid. Both transitions are listed now. The three width tiers were the same width between 768px and 991px, because `medium` borrowed `.modal-lg`, whose 700px Mattermost sets app-wide only above 992px. Both wide tiers get a class of their own and start at Bootstrap's own 768px breakpoint, so a dialog's width no longer moves when an unrelated rule does, and the tiers differ wherever a dialog is not already fluid. A grid container was rendering its own subtree, which dropped the three things a collapsible says about itself: `collapsed`, `borderless` and `display_name` were all ignored, including in the docs' own grid example. The grid now lays out inside the same CollapsibleSection the stacked layout uses, so only the arrangement of the children differs. Accessibility and ragged input, in the grid itself: - the table takes the container's name through a clipped `<caption>`, and each row keeps its `display_name` as the row's accessible name - a required cell's marker was only in the clipped per-cell label, so the cell looked optional until submission failed; the column heading carries it too - rows that are all empty fell through to an empty table instead of the fallback - two cells sharing a name in one row collided on their React key and cost the row a cell; the keys carry the column index - the sticky first column could cover the cell that just took focus while tabbing sideways (`scroll-padding-inline-start`) The docs and a Go comment said an unrecognised `size` or collapsible subtype was rejected when the dialog opens. It is not: App.OpenInteractiveDialog logs what IsValid returns and opens the dialog anyway, and the client falls back to the default width and to a stacked layout. Both now say that, and tests pin it on the open-dialog path rather than only on Dialog and DialogElement in isolation. `12.0` in the two new sections is `12.1`: v12.0.0 is tagged and has neither feature. Cells are matched to columns by position, so a row that omits an element in the middle shifts the rest left under the wrong heading. The docs claimed a mismatch always showed as a gap; they now say what actually happens and what to do about it. Also: the grid spec measured nothing it claimed to — `overflow-x: auto` is set unconditionally, and the width check only read a class name. It now measures the modal at each tier, checks the sticky column by scrolling the table, checks the clip on the per-cell labels rather than `not.be.visible` (which passes for a clipped element either way), waits on `cy.intercept`/`cy.wait` like action_button_spec rather than on fixed delays, and covers a window too narrow for the tier. The MM-T5700A–H IDs were invented and are gone; 942 specs in the repo carry no TestRail ID. Jest gains the gaps: required cells and per-cell errors, a collapsed grid, a grid nested in a grid through AppsForm, unique keys, an unknown size, and the router and adapter hops that carry `size`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>