Skip to content

Commit ff33474

Browse files
authored
Remove fomantic input module (#30194)
Another pure CSS module. Some styling is part of the `form` module which will likely follow next.
1 parent 0497b26 commit ff33474

File tree

11 files changed

+207
-812
lines changed

11 files changed

+207
-812
lines changed

templates/devtest/gitea-ui.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102

103103
<div>
104104
<h1>Loading</h1>
105-
<div class="is-loading small-loading-icon tw-border tw-border-secondary tw-py-1"><span>loading ...</span></div>
105+
<div class="is-loading loading-icon-2px tw-border tw-border-secondary tw-py-1"><span>loading ...</span></div>
106106
<div class="is-loading tw-border tw-border-secondary tw-py-4">
107107
<p>loading ...</p>
108108
<p>loading ...</p>

templates/repo/issue/view_content/sidebar.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@
677677
{{if and (not (eq .Issue.PullRequest.HeadRepo.FullName .Issue.PullRequest.BaseRepo.FullName)) .CanWriteToHeadRepo}}
678678
<div class="divider"></div>
679679
<div class="inline field">
680-
<div class="ui checkbox small-loading-icon" id="allow-edits-from-maintainers"
680+
<div class="ui checkbox loading-icon-2px" id="allow-edits-from-maintainers"
681681
data-url="{{.Issue.Link}}"
682682
data-tooltip-content="{{ctx.Locale.Tr "repo.pulls.allow_edits_from_maintainers_desc"}}"
683683
data-prompt-error="{{ctx.Locale.Tr "repo.pulls.allow_edits_from_maintainers_err"}}"

web_src/css/base.css

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -305,12 +305,6 @@ a.label,
305305
background-color: var(--color-label-bg);
306306
}
307307

308-
/* fix Fomantic's line-height cutting off "g" on Windows Chrome with Segoe UI */
309-
.ui.input > input {
310-
line-height: var(--line-height-default);
311-
text-align: start; /* Override fomantic's `text-align: left` to make RTL work via HTML `dir="auto"` */
312-
}
313-
314308
/* fix Fomantic's line-height causing vertical scrollbars to appear */
315309
ul.ui.list li,
316310
ol.ui.list li,
@@ -319,47 +313,6 @@ ol.ui.list li,
319313
line-height: var(--line-height-default);
320314
}
321315

322-
.ui.input.focus > input,
323-
.ui.input > input:focus {
324-
border-color: var(--color-primary);
325-
}
326-
327-
.ui.action.input .ui.ui.button {
328-
border-color: var(--color-input-border);
329-
padding-top: 0; /* the ".action.input" is "flex + stretch", so let the buttons layout themselves */
330-
padding-bottom: 0;
331-
}
332-
333-
/* currently used for search bar dropdowns in repo search and explore code */
334-
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection {
335-
min-width: 10em;
336-
}
337-
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(:focus) {
338-
border-right: none;
339-
}
340-
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(.active):hover {
341-
border-color: var(--color-input-border);
342-
}
343-
.ui.action.input:not([class*="left action"]) .ui.dropdown.selection.upward.visible {
344-
border-bottom-left-radius: 0 !important;
345-
border-bottom-right-radius: 0 !important;
346-
}
347-
.ui.action.input:not([class*="left action"]) > input,
348-
.ui.action.input:not([class*="left action"]) > input:hover {
349-
border-right: none;
350-
}
351-
.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection,
352-
.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection:hover,
353-
.ui.action.input:not([class*="left action"]) > input:focus + .button,
354-
.ui.action.input:not([class*="left action"]) > input:focus + .button:hover,
355-
.ui.action.input:not([class*="left action"]) > input:focus + .icon + .button,
356-
.ui.action.input:not([class*="left action"]) > input:focus + .icon + .button:hover {
357-
border-left-color: var(--color-primary);
358-
}
359-
.ui.action.input:not([class*="left action"]) > input:focus {
360-
border-right-color: var(--color-primary);
361-
}
362-
363316
.ui.menu {
364317
display: flex;
365318
}
@@ -1599,16 +1552,6 @@ table th[data-sortt-desc] .svg {
15991552
align-items: stretch;
16001553
}
16011554

1602-
.ui.ui.icon.input .icon {
1603-
display: flex;
1604-
align-items: center;
1605-
justify-content: center;
1606-
}
1607-
1608-
.ui.icon.input > i.icon {
1609-
transition: none;
1610-
}
1611-
16121555
.flex-items-block > .item,
16131556
.flex-text-block {
16141557
display: flex;

web_src/css/index.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
@import "./modules/container.css";
77
@import "./modules/divider.css";
88
@import "./modules/header.css";
9+
@import "./modules/input.css";
910
@import "./modules/label.css";
1011
@import "./modules/segment.css";
1112
@import "./modules/grid.css";

web_src/css/modules/animations.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,14 @@
3434
border-radius: var(--border-radius-circle);
3535
}
3636

37-
.is-loading.small-loading-icon::after {
37+
.is-loading.loading-icon-2px::after {
3838
border-width: 2px;
3939
}
4040

41+
.is-loading.loading-icon-3px::after {
42+
border-width: 3px;
43+
}
44+
4145
/* for single form button, the loading state should be on the button, but not go semi-transparent, just replace the text on the button with the loader. */
4246
form.single-button-form.is-loading > * {
4347
opacity: 1;
@@ -62,7 +66,7 @@ form.single-button-form.is-loading .button {
6266
background: transparent;
6367
}
6468

65-
/* TODO: not needed, use "is-loading small-loading-icon" instead */
69+
/* TODO: not needed, use "is-loading loading-icon-2px" instead */
6670
code.language-math.is-loading::after {
6771
padding: 0;
6872
border-width: 2px;

web_src/css/modules/input.css

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
/* based on Fomantic UI input module, with just the parts extracted that we use. If you find any
2+
unused rules here after refactoring, please remove them. */
3+
4+
.ui.input {
5+
position: relative;
6+
font-weight: var(--font-weight-normal);
7+
display: inline-flex;
8+
color: var(--color-input-text);
9+
}
10+
.ui.input > input {
11+
margin: 0;
12+
max-width: 100%;
13+
flex: 1 0 auto;
14+
outline: none;
15+
font-family: var(--fonts-regular);
16+
padding: 0.67857143em 1em;
17+
border: 1px solid var(--color-input-border);
18+
color: var(--color-input-text);
19+
border-radius: 0.28571429rem;
20+
line-height: var(--line-height-default);
21+
text-align: start;
22+
}
23+
24+
.ui.disabled.input,
25+
.ui.input:not(.disabled) input[disabled] {
26+
opacity: var(--opacity-disabled);
27+
}
28+
.ui.disabled.input > input,
29+
.ui.input:not(.disabled) input[disabled] {
30+
pointer-events: none;
31+
}
32+
33+
.ui.input.focus > input,
34+
.ui.input > input:focus {
35+
border-color: var(--color-primary);
36+
}
37+
38+
.ui.input.error > input {
39+
background: var(--color-error-bg);
40+
border-color: var(--color-error-border);
41+
color: var(--color-error-text);
42+
}
43+
44+
.ui.icon.input > i.icon {
45+
display: flex;
46+
align-items: center;
47+
justify-content: center;
48+
cursor: default;
49+
position: absolute;
50+
text-align: center;
51+
top: 50%;
52+
transform: translateY(-50%);
53+
opacity: 0.5;
54+
border-radius: 0 0.28571429rem 0.28571429rem 0;
55+
pointer-events: none;
56+
padding: 4px;
57+
}
58+
59+
.ui.icon.input > i.icon.is-loading {
60+
position: absolute !important;
61+
}
62+
63+
.ui.icon.input > i.icon.is-loading > * {
64+
visibility: hidden;
65+
}
66+
67+
.ui.ui.ui.ui.icon.input > textarea,
68+
.ui.ui.ui.ui.icon.input > input {
69+
padding-right: 2.67142857em;
70+
}
71+
.ui.icon.input > i.link.icon {
72+
cursor: pointer;
73+
}
74+
.ui.icon.input > i.circular.icon {
75+
top: 0.35em;
76+
right: 0.5em;
77+
}
78+
79+
.ui[class*="left icon"].input > i.icon {
80+
right: auto;
81+
left: 8px;
82+
border-radius: 0.28571429rem 0 0 0.28571429rem;
83+
}
84+
.ui[class*="left icon"].input > i.circular.icon {
85+
right: auto;
86+
left: 0.5em;
87+
}
88+
.ui.ui.ui.ui[class*="left icon"].input > textarea,
89+
.ui.ui.ui.ui[class*="left icon"].input > input {
90+
padding-left: 2.67142857em;
91+
padding-right: 1em;
92+
}
93+
94+
.ui.icon.input > textarea:focus ~ .icon,
95+
.ui.icon.input > input:focus ~ .icon {
96+
opacity: 1;
97+
}
98+
99+
.ui.icon.input > textarea ~ i.icon {
100+
height: 3em;
101+
}
102+
103+
.ui.form .field.error > .ui.action.input > .ui.button,
104+
.ui.action.input.error > .ui.button {
105+
border-top: 1px solid var(--color-error-border);
106+
border-bottom: 1px solid var(--color-error-border);
107+
}
108+
109+
.ui.action.input > .button,
110+
.ui.action.input > .buttons {
111+
display: flex;
112+
align-items: center;
113+
flex: 0 0 auto;
114+
}
115+
.ui.action.input > .button,
116+
.ui.action.input > .buttons > .button {
117+
padding-top: 0.78571429em;
118+
padding-bottom: 0.78571429em;
119+
margin: 0;
120+
}
121+
122+
.ui.action.input:not([class*="left action"]) > input {
123+
border-top-right-radius: 0;
124+
border-bottom-right-radius: 0;
125+
border-right-color: transparent;
126+
}
127+
128+
.ui.action.input > .dropdown:first-child,
129+
.ui.action.input > .button:first-child,
130+
.ui.action.input > .buttons:first-child > .button {
131+
border-radius: 0.28571429rem 0 0 0.28571429rem;
132+
}
133+
.ui.action.input > .dropdown:not(:first-child),
134+
.ui.action.input > .button:not(:first-child),
135+
.ui.action.input > .buttons:not(:first-child) > .button {
136+
border-radius: 0;
137+
}
138+
.ui.action.input > .dropdown:last-child,
139+
.ui.action.input > .button:last-child,
140+
.ui.action.input > .buttons:last-child > .button {
141+
border-radius: 0 0.28571429rem 0.28571429rem 0;
142+
}
143+
144+
.ui.fluid.input {
145+
display: flex;
146+
}
147+
.ui.fluid.input > input {
148+
width: 0 !important;
149+
}
150+
151+
.ui.tiny.input {
152+
font-size: 0.85714286em;
153+
}
154+
.ui.small.input {
155+
font-size: 0.92857143em;
156+
}
157+
158+
.ui.action.input .ui.ui.button {
159+
border-color: var(--color-input-border);
160+
padding-top: 0; /* the ".action.input" is "flex + stretch", so let the buttons layout themselves */
161+
padding-bottom: 0;
162+
}
163+
164+
/* currently used for search bar dropdowns in repo search and explore code */
165+
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection {
166+
min-width: 10em;
167+
}
168+
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(:focus) {
169+
border-right: none;
170+
}
171+
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(.active):hover {
172+
border-color: var(--color-input-border);
173+
}
174+
.ui.action.input:not([class*="left action"]) .ui.dropdown.selection.upward.visible {
175+
border-bottom-left-radius: 0 !important;
176+
border-bottom-right-radius: 0 !important;
177+
}
178+
.ui.action.input:not([class*="left action"]) > input,
179+
.ui.action.input:not([class*="left action"]) > input:hover {
180+
border-right: none;
181+
}
182+
.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection,
183+
.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection:hover,
184+
.ui.action.input:not([class*="left action"]) > input:focus + .button,
185+
.ui.action.input:not([class*="left action"]) > input:focus + .button:hover,
186+
.ui.action.input:not([class*="left action"]) > input:focus + .icon + .button,
187+
.ui.action.input:not([class*="left action"]) > input:focus + .icon + .button:hover {
188+
border-left-color: var(--color-primary);
189+
}
190+
.ui.action.input:not([class*="left action"]) > input:focus {
191+
border-right-color: var(--color-primary);
192+
}

0 commit comments

Comments
 (0)