0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-12-24 20:20:52 +01:00
silverwind eddf875992
Remove fomantic form module (#36222)
- Replace fomantic form CSS with custom module
- Moved code in `form.css` to `modules/form.css`, removed around 70% of
the previous module.
- Moved captcha styles previously in `form.css` to its own file.

There is probably more unused CSS, like form error state colors which to
my knowledge is not used anywhere, but I'm not sure about that one so I
kept it.

One notable change is the removal of `type` combinator here, which
lowers the selector specificity and I noticed one issue where selector
`.ui.search > .prompt` was winning, so I added a workaround for that
until the `search` module can be removed as well.

```css
.ui.form .fields.error .field input:not([type])
.ui.form .fields.error .field input[type="date"]
```

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Giteabot <teabot@gitea.io>
2025-12-23 18:21:47 +01:00

498 lines
11 KiB
CSS

.ui.form {
position: relative;
max-width: 100%;
}
.ui.form > p {
margin: 1em 0;
}
.ui.form .field {
clear: both;
margin: 0 0 1em;
}
.ui.form .fields .fields,
.ui.form .field:last-child,
.ui.form .fields:last-child .field {
margin-bottom: 0;
}
.ui.form .fields .field {
clear: both;
margin: 0;
}
.ui.form .field > label {
display: block;
margin: 0 0 0.28571429rem;
color: var(--color-text);
font-size: 0.92857143em;
font-weight: var(--font-weight-medium);
text-transform: none;
}
.ui.form textarea,
.ui.form input {
width: 100%;
vertical-align: top;
}
.ui.form ::-webkit-datetime-edit,
.ui.form ::-webkit-inner-spin-button {
height: 1.21428571em;
}
.ui.form input,
.ui.search > .prompt {
font-family: var(--fonts-regular);
margin: 0;
outline: none;
line-height: 1.21428571;
padding: 0.67857143em 1em;
font-size: 1em;
color: var(--color-text);
border-radius: 0.28571429rem;
}
.ui.input textarea,
.ui.form textarea {
margin: 0;
padding: 0.78571429em 1em;
outline: none;
color: var(--color-text);
border-radius: 0.28571429rem;
font-size: 1em;
font-family: var(--fonts-regular);
line-height: 1.2857;
resize: vertical;
}
.ui.form textarea:not([rows]) {
height: var(--min-height-textarea);
min-height: var(--min-height-textarea);
max-height: 24em;
}
input,
textarea,
.ui.input > input,
.ui.form input,
.ui.form select,
.ui.form textarea,
.ui.selection.dropdown,
.ui.search > .prompt {
background: var(--color-input-background);
border: 1px solid var(--color-input-border);
color: var(--color-input-text);
}
input:hover,
textarea:hover,
.ui.input input:hover,
.ui.form input:hover,
.ui.form select:hover,
.ui.form textarea:hover,
.ui.search > .prompt:hover {
background: var(--color-input-background);
border: 1px solid var(--color-input-border-hover);
color: var(--color-input-text);
}
input:focus,
textarea:focus,
.ui.input input:focus,
.ui.form input:focus,
.ui.form select:focus,
.ui.form textarea:focus,
.ui.search > .prompt:focus {
background: var(--color-input-background);
border-color: var(--color-primary);
color: var(--color-input-text);
}
.ui.input {
color: var(--color-input-text);
}
.ui.form textarea,
.ui.form input[type="checkbox"] {
vertical-align: top;
}
.ui.form .fields:not(.grouped):not(.inline) .field:not(:only-child) label + .ui.ui.checkbox {
margin-top: 0.7em;
}
.ui.form .fields:not(.grouped):not(.inline) .field:not(:only-child) .ui.checkbox {
margin-top: 2.41428571em;
}
.ui.form .fields:not(.grouped):not(.inline) .field:not(:only-child) .ui.toggle.checkbox {
margin-top: 2.21428571em;
}
.ui.form .fields:not(.grouped):not(.inline) .field:not(:only-child) .ui.slider.checkbox {
margin-top: 2.61428571em;
}
.ui.ui.form .field .fields .field:not(:only-child) .ui.checkbox {
margin-top: 0.6em;
}
.ui.ui.form .field .fields .field:not(:only-child) .ui.toggle.checkbox {
margin-top: 0.5em;
}
.ui.ui.form .field .fields .field:not(:only-child) .ui.slider.checkbox {
margin-top: 0.7em;
}
.ui.form select {
display: block;
height: auto;
width: 100%;
border-radius: 0.28571429rem;
padding: 0.62em 1em;
}
.ui.form .field > .selection.dropdown {
min-width: 14em; /* matches the default min width */
width: 100%;
}
.ui.form .field > .selection.dropdown > .dropdown.icon {
float: right;
}
.ui.form .inline.fields .field > .selection.dropdown,
.ui.form .inline.field > .selection.dropdown {
width: auto;
}
.ui.form .inline.fields .field > .selection.dropdown > .dropdown.icon,
.ui.form .inline.field > .selection.dropdown > .dropdown.icon {
float: none;
}
.ui.form .field .ui.input,
.ui.form .fields .field .ui.input {
width: 100%;
}
.ui.form .inline.fields .field .ui.input,
.ui.form .inline.field .ui.input {
width: auto;
vertical-align: middle;
}
.ui.form .fields .field .ui.input input,
.ui.form .field .ui.input input {
width: auto;
}
.ui.form .error.message,
.ui.form .error.message:empty {
display: none;
}
.ui.form .message:first-child {
margin-top: 0;
}
.ui.form .ui.action.input:not([class*="left action"]) input:focus {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.ui.form .ui[class*="left action"].input input {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
.ui.form.error .error.message:not(:empty) {
display: block;
}
.ui.form .fields.error .error.message:not(:empty),
.ui.form .field.error .error.message:not(:empty) {
display: block;
}
.ui.form .fields.error .field textarea,
.ui.form .fields.error .field select,
.ui.form .fields.error .field input,
.ui.form .field.error textarea,
.ui.form .field.error select,
.ui.form .field.error input {
background-color: var(--color-error-bg);
border-color: var(--color-error-border);
color: var(--color-error-text);
border-radius: 0;
}
.ui.form .field.error textarea:focus,
.ui.form .field.error select:focus,
.ui.form .field.error input:focus {
background-color: var(--color-error-bg);
border-color: var(--color-error-border);
color: var(--color-error-text);
}
.ui.form .field.error select {
appearance: menulist-button;
}
.ui.form .fields.error .field .ui.dropdown,
.ui.form .field.error .ui.dropdown {
border-color: var(--color-error-border);
}
.ui.form .fields.error .field .ui.dropdown:hover,
.ui.form .field.error .ui.dropdown:hover {
border-color: var(--color-error-border);
}
.ui.form .fields.error .field .ui.dropdown .menu .item:hover,
.ui.form .field.error .ui.dropdown .menu .item:hover {
background-color: var(--color-error-bg-hover);
}
.ui.form .fields.error .field .ui.dropdown .menu .active.item,
.ui.form .field.error .ui.dropdown .menu .active.item {
background-color: var(--color-error-bg-active) !important;
}
.ui.form .disabled.fields .field,
.ui.form .disabled.field,
.ui.form .field :disabled {
pointer-events: none;
opacity: var(--opacity-disabled);
}
.ui.form .field.disabled > label,
.ui.form .fields.disabled > label {
opacity: var(--opacity-disabled);
}
.ui.form .field.disabled :disabled {
opacity: 1;
}
.ui.form .required.fields:not(.grouped) > .field > label::after,
.ui.form .required.fields.grouped > label::after,
.ui.form .required.field > label::after,
.ui.form .required.fields:not(.grouped) > .field > .checkbox::after,
.ui.form .required.field > .checkbox::after,
.ui.form label.required::after {
margin: -0.2em 0 0 0.2em;
content: "*";
color: var(--color-red);
}
.ui.form .required.fields:not(.grouped) > .field > label::after,
.ui.form .required.fields.grouped > label::after,
.ui.form .required.field > label::after,
.ui.form label.required::after {
display: inline-block;
vertical-align: top;
}
.ui.form .required.fields:not(.grouped) > .field > .checkbox::after,
.ui.form .required.field > .checkbox::after {
position: absolute;
top: 0;
left: 100%;
}
.ui.form .grouped.fields {
display: block;
margin: 0 0 1em;
}
.ui.form .grouped.fields:last-child {
margin-bottom: 0;
}
.ui.form .grouped.fields > label {
margin: 0 0 0.28571429rem;
color: var(--color-text);
font-size: 0.92857143em;
font-weight: var(--font-weight-medium);
text-transform: none;
}
.ui.form .grouped.fields .field,
.ui.form .grouped.inline.fields .field {
display: block;
margin: 0.5em 0;
padding: 0;
}
.ui.form .grouped.inline.fields .ui.checkbox {
margin-bottom: 0.4em;
}
.ui.form .fields {
display: flex;
flex-direction: row;
margin: 0 -0.5em 1em;
}
.ui.form .fields > .field {
flex: 0 1 auto;
padding-left: 0.5em;
padding-right: 0.5em;
}
.ui.form .fields > .field:first-child {
border-left: none;
}
@media only screen and (max-width: 767.98px) {
.ui.form .fields {
flex-wrap: wrap;
margin-bottom: 0;
}
.ui.form .fields > .fields,
.ui.form .fields > .field {
width: 100%;
margin: 0 0 1em;
}
}
.ui.form .inline.fields {
margin: 0 0 1em;
align-items: center;
}
.ui.form .inline.fields .field {
margin: 0;
padding: 0 1em 0 0;
}
.ui.form .inline.fields > label,
.ui.form .inline.fields .field > label,
.ui.form .inline.fields .field > p,
.ui.form .inline.field > label,
.ui.form .inline.field > p {
display: inline-block;
width: auto;
margin-top: 0;
margin-bottom: 0;
vertical-align: baseline;
font-size: 0.92857143em;
font-weight: var(--font-weight-medium);
color: var(--color-text);
text-transform: none;
}
.ui.form .inline.fields > label {
margin: 0.035714em 1em 0 0;
}
.ui.form .inline.fields .field > input,
.ui.form .inline.fields .field > select,
.ui.form .inline.field > input,
.ui.form .inline.field > select {
display: inline-block;
width: auto;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
font-size: 1em;
}
.ui.form .inline.fields .field > :first-child,
.ui.form .inline.field > :first-child {
margin: 0 0.85714286em 0 0;
}
.ui.form .inline.fields .field > :only-child,
.ui.form .inline.field > :only-child {
margin: 0;
}
.ui.form,
.ui.form .field .dropdown,
.ui.form .field .dropdown .menu > .item {
font-size: 1rem;
}
/* previously from web_src/css/form.css */
.ui .form .autofill-dummy {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
z-index: -10000;
}
.ui .form .sub.field {
margin-left: 25px;
}
.ui.form .fields.error .field .ui.dropdown,
.ui.form .field.error .ui.dropdown,
.ui.form .fields.error .field .ui.dropdown:hover,
.ui.form .field.error .ui.dropdown:hover {
border-color: var(--color-error-border) !important;
}
.ui.form .fields.error .dropdown .menu,
.ui.form .field.error .dropdown .menu {
border-color: var(--color-error-border) !important;
}
input:-webkit-autofill,
input:-webkit-autofill:focus,
input:-webkit-autofill:hover,
input:-webkit-autofill:active {
-webkit-background-clip: text;
-webkit-text-fill-color: var(--color-text);
box-shadow: 0 0 0 100px var(--color-primary-light-6) inset !important;
border-color: var(--color-primary-light-4) !important;
}
.ui.form .field.muted {
opacity: var(--opacity-disabled);
}
.form .help {
color: var(--color-secondary-dark-5);
margin-top: 0.25em;
padding-bottom: 0.6em;
display: inline-block;
text-wrap: balance;
}
.form .help code {
color: var(--color-text-light-1);
}
.form .help pre.command-block {
white-space: pre-wrap;
overflow-wrap: anywhere;
margin: 0.25em 0 0.25em 1em;
}
.ui.form.left-right-form .inline.field > label {
text-align: right;
width: 250px;
margin-right: 10px;
}
.ui.form.left-right-form .inline.field > .help {
display: block;
margin-left: calc(250px + 15px);
}
.ui.form.left-right-form .inline.field input:not([type="checkbox"], [type="radio"]),
.ui.form.left-right-form .inline.field .ui.dropdown,
.ui.form.left-right-form .inline.field textarea {
width: 50%;
}
.ui.form.left-right-form .inline.field .ui.dropdown input.search {
width: 100%;
}
.ui.form.left-right-form .inline.field .inline-right {
display: inline-flex;
flex-direction: column;
gap: 0.5em;
}
@media (max-width: 767.98px) {
.ui.form.left-right-form .inline.field > label {
width: 100%;
margin: 0;
text-align: left;
}
.ui.form.left-right-form .inline.field > .help {
margin: 0;
}
.ui.form.left-right-form .inline.field input:not([type="checkbox"], [type="radio"]),
.ui.form.left-right-form .inline.field .ui.dropdown,
.ui.form.left-right-form .inline.field textarea {
width: 100%;
}
}