Skip to content

One button system: adopt the four roles and gate them in CI - #2117

Merged
renemadsen merged 1 commit into
stablefrom
feat/button-system-consolidation
Aug 24, 2026
Merged

One button system: adopt the four roles and gate them in CI#2117
renemadsen merged 1 commit into
stablefrom
feat/button-system-consolidation

Conversation

@renemadsen

Copy link
Copy Markdown
Member

Plugin half of the button consolidation. Depends on microting/eform-angular-frontend#8016, already merged to stable, which defines the roles and ships the checker.

Audit: Button Drift

What changes

7 dialog buttons move to the four roles: .btn-primary (filled), .btn-cancel (outlined), .btn-delete (destructive), .btn-quiet (text). Every id, binding, tooltip, label and button order is preserved — only the Material directive and its color input go, and color was inert on a plain button anyway.

Role follows the label and intent, not the old colour. Several confirms carried color="warn" without being destructive and are .btn-primary.

Why the CI step matters more than the conversion

The checker lives in the frontend repo, but a frontend CI run cannot see these templatessrc/app/plugins/ is gitignored there, so its checkout contains only the core app. The frontend PR fixed 55 violations in core and was structurally incapable of seeing the 91 in the plugins.

So each plugin repo has to run the checker over its own module, or nothing checks its buttons and they drift straight back. That step is added to both workflows here.

What it enforces

Inside a mat-dialog-actions row, every button must carry one of the four roles; no template may reference a class no stylesheet defines. Material's button directives are rejected in both spellings — the theme override targeted .mat-mdc-text-button, which Angular Material 20 never emits, so mat-button rendered as a pill in the wrong colour and always had.

🤖 Generated with Claude Code

https://claude.ai/code/session_015sXLtgzZU8QL9m84GqMkoJ

Converts 7 dialog buttons to the four roles the frontend defines —
.btn-primary, .btn-cancel, .btn-delete, .btn-quiet. Every id, binding, label
and button order preserved; only the Material directive and its inert `color`
input are removed. Role follows the label and intent, not the old colour.

Also adds the gate to both workflows, which is the part that keeps this fixed.
The checker lives in the frontend repo, but a frontend CI run cannot see these
templates — src/app/plugins/ is gitignored there — so without this step nothing
checks items-planning-pn's buttons and they drift straight back.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015sXLtgzZU8QL9m84GqMkoJ
renemadsen added a commit that referenced this pull request Aug 24, 2026
Only a trailing comment. The previous attempt touched README.md, which the
workflow ignores via paths-ignore, so no CI ran at all.

Purpose: determine whether items-planning-settings.spec.ts 'should go to
plugin settings page' fails on untouched stable against the CURRENT
eform-angular-frontend stable. This repo last ran CI two months ago, so PR
#2117 had no baseline for its shard-a failure.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015sXLtgzZU8QL9m84GqMkoJ
@renemadsen
renemadsen merged commit bcf080c into stable Aug 24, 2026
10 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant