fix: inconsistent user creation v2 radio buttons #11092 (#11208)

# Which Problems Are Solved
Radio buttons in the User V2 creation form were unresponsive when
clicking directly on the radio button itself, only clicking on the label
text worked.

# How the Problems Are Solved
The app-auth-method-radio-theme mixin had a global input[type='radio']
selector that hid all radio inputs application-wide, breaking Angular
Material's mat-radio-button components. The selector is now scoped to
.auth-method-radio-button-wrapper so it only affects the intended
component.

# Additional Context
- Closes #11092
This commit is contained in:
Ramon
2025-12-30 11:03:15 +01:00
committed by GitHub
parent 4489ffb82e
commit 02f24b2e98
@@ -1,21 +1,3 @@
.auth-method-radio-button-wrapper {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
overflow-y: hidden;
margin: 0;
padding-bottom: 0.5rem;
padding-top: 1rem;
&.compact {
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: 1rem;
row-gap: 1rem;
}
}
@mixin app-auth-method-radio-theme($theme) {
$primary: map-get($theme, primary);
$primary-color: map-get($primary, 500);
@@ -23,144 +5,162 @@
$background: map-get($theme, background);
$border-color: if($is-dark-theme, rgba(#8795a1, 0.2), rgba(#8795a1, 0.2));
input[type='radio'] {
appearance: none;
opacity: 0;
display: none;
box-sizing: border-box;
&:focus {
border: 1px solid if($is-dark-theme, white, black);
}
}
input:checked + label {
border-color: $primary-color;
border-width: 2px;
box-shadow: 0 0 6px rgb(0 0 0 / 10%);
.cnsl-radio-header span {
color: if($is-dark-theme, white, white);
}
}
.cnsl-radio-button {
margin: 0.5rem;
border-radius: 0.5rem;
border: 1px solid $border-color;
.auth-method-radio-button-wrapper {
display: flex;
flex-direction: column;
background-color: map-get($background, cards);
flex: 0 1 230px;
box-sizing: border-box;
cursor: pointer;
position: relative;
padding-bottom: 1rem;
&.first {
margin-left: 0;
}
&.last {
margin-right: 0;
}
.recommended {
position: absolute;
bottom: 0;
left: 50%;
transform: translateY(50%) translateX(-50%);
border-radius: 50vw;
font-size: 11px;
background: white;
color: black;
padding: 3px 1rem;
box-shadow: 0 0 6px rgb(0 0 0 / 10%);
white-space: nowrap;
border: 1px solid $border-color;
&.not {
background: rgb(144 75 75);
color: white;
}
}
.cnsl-radio-header {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
background: rgb(80, 110, 110);
border-top-left-radius: 6px;
border-top-right-radius: 6px;
position: relative;
.current {
position: absolute;
bottom: 0.5rem;
left: 50%;
transform: translateX(-50%);
display: block;
color: #ffffff90;
white-space: nowrap;
font-size: 12px;
}
span {
margin: 2rem;
font-size: 30px;
color: if($is-dark-theme, #00000050, #ffffff50);
}
}
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
overflow-y: hidden;
margin: 0;
padding-bottom: 0.5rem;
padding-top: 1rem;
&.compact {
margin: 0;
width: 230px;
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: 1rem;
row-gap: 1rem;
}
.cnsl-radio-header {
span {
margin: 1rem 0 1.5rem 0;
}
input[type='radio'] {
appearance: none;
opacity: 0;
display: none;
box-sizing: border-box;
&:focus {
border: 1px solid if($is-dark-theme, white, black);
}
}
p {
text-align: center;
padding: 0 1rem;
input:checked + label {
border-color: $primary-color;
border-width: 2px;
box-shadow: 0 0 6px rgb(0 0 0 / 10%);
.cnsl-radio-header span {
color: if($is-dark-theme, white, white);
}
}
.type-desc {
font-size: 14px;
}
.cnsl-radio-button {
margin: 0.5rem;
border-radius: 0.5rem;
border: 1px solid $border-color;
display: flex;
flex-direction: column;
background-color: map-get($background, cards);
flex: 0 1 230px;
box-sizing: border-box;
cursor: pointer;
position: relative;
padding-bottom: 1rem;
.fill-space {
flex: 1;
}
&.first {
margin-left: 0;
}
.app-specs {
display: block;
padding: 1rem 0;
margin: 0 1rem;
&.last {
margin-right: 0;
}
.row {
.recommended {
position: absolute;
bottom: 0;
left: 50%;
transform: translateY(50%) translateX(-50%);
border-radius: 50vw;
font-size: 11px;
background: white;
color: black;
padding: 3px 1rem;
box-shadow: 0 0 6px rgb(0 0 0 / 10%);
white-space: nowrap;
border: 1px solid $border-color;
&.not {
background: rgb(144 75 75);
color: white;
}
}
.cnsl-radio-header {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
margin: 3px 0;
justify-content: center;
flex-direction: column;
background: rgb(80, 110, 110);
border-top-left-radius: 6px;
border-top-right-radius: 6px;
position: relative;
.current {
position: absolute;
bottom: 0.5rem;
left: 50%;
transform: translateX(-50%);
display: block;
color: #ffffff90;
white-space: nowrap;
font-size: 12px;
}
span {
white-space: nowrap;
margin: 2rem;
font-size: 30px;
color: if($is-dark-theme, #00000050, #ffffff50);
}
}
.space {
margin-left: 0.5rem;
&.compact {
margin: 0;
width: 230px;
.cnsl-radio-header {
span {
margin: 1rem 0 1.5rem 0;
}
}
}
.row-entry {
margin-right: 1rem;
overflow: hidden;
text-overflow: ellipsis;
p {
text-align: center;
padding: 0 1rem;
}
.type-desc {
font-size: 14px;
}
.fill-space {
flex: 1;
}
.app-specs {
display: block;
padding: 1rem 0;
margin: 0 1rem;
.row {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
margin: 3px 0;
span {
white-space: nowrap;
}
.space {
margin-left: 0.5rem;
}
.row-entry {
margin-right: 1rem;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}