Skip to content

Commit 78101df

Browse files
committed
Style number input field
1 parent 12bbddf commit 78101df

File tree

7 files changed

+44
-13
lines changed

7 files changed

+44
-13
lines changed

src/query.nim

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ template `@`(param: string): untyped =
1717
if param in pms: pms[param]
1818
else: ""
1919

20+
proc validateNumber(value: string): string =
21+
if value.anyIt(not it.isDigit):
22+
return ""
23+
return value
24+
2025
proc initQuery*(pms: Table[string, string]; name=""): Query =
2126
result = Query(
2227
kind: parseEnum[QueryKind](@"f", tweets),
@@ -25,7 +30,7 @@ proc initQuery*(pms: Table[string, string]; name=""): Query =
2530
excludes: validFilters.filterIt("e-" & it in pms),
2631
since: @"since",
2732
until: @"until",
28-
near: @"near"
33+
minLikes: validateNumber(@"min_faves")
2934
)
3035

3136
if name.len > 0:
@@ -77,8 +82,8 @@ proc genQueryParam*(query: Query): string =
7782
result &= " since:" & query.since
7883
if query.until.len > 0:
7984
result &= " until:" & query.until
80-
if query.near.len > 0:
81-
result &= &" near:\"{query.near}\" within:15mi"
85+
if query.minLikes.len > 0:
86+
result &= " min_faves:" & query.minLikes
8287
if query.text.len > 0:
8388
if result.len > 0:
8489
result &= " " & query.text
@@ -102,8 +107,8 @@ proc genQueryUrl*(query: Query): string =
102107
params.add "since=" & query.since
103108
if query.until.len > 0:
104109
params.add "until=" & query.until
105-
if query.near.len > 0:
106-
params.add "near=" & query.near
110+
if query.minLikes.len > 0:
111+
params.add "min_faves=" & query.minLikes
107112

108113
if params.len > 0:
109114
result &= params.join("&")

src/sass/inputs.scss

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ button {
1414

1515
input[type="text"],
1616
input[type="date"],
17+
input[type="number"],
1718
select {
1819
@include input-colors;
1920
background-color: var(--bg_elements);
@@ -24,7 +25,12 @@ select {
2425
font-size: 14px;
2526
}
2627

27-
input[type="text"] {
28+
input[type="number"] {
29+
-moz-appearance: textfield;
30+
}
31+
32+
input[type="text"],
33+
input[type="number"] {
2834
height: 16px;
2935
}
3036

@@ -38,6 +44,17 @@ input[type="date"]::-webkit-inner-spin-button {
3844
display: none;
3945
}
4046

47+
input[type="number"] {
48+
-moz-appearance: textfield;
49+
}
50+
51+
input[type="number"]::-webkit-inner-spin-button,
52+
input[type="number"]::-webkit-outer-spin-button {
53+
display: none;
54+
-webkit-appearance: none;
55+
margin: 0;
56+
}
57+
4158
input[type="date"]::-webkit-clear-button {
4259
margin-left: 17px;
4360
filter: grayscale(100%);
@@ -164,7 +181,8 @@ input::-webkit-datetime-edit-year-field:focus {
164181
appearance: none;
165182
}
166183

167-
input[type="text"] {
184+
input[type="text"],
185+
input[type="number"] {
168186
position: absolute;
169187
right: 0;
170188
max-width: 140px;

src/sass/search.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
height: 23px;
2525
}
2626

27-
input[type="text"] {
27+
input[type="text"],
28+
input[type="number"] {
2829
height: calc(100% - 4px);
2930
width: calc(100% - 8px);
3031
}

src/types.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ type
140140
fromUser*: seq[string]
141141
since*: string
142142
until*: string
143-
near*: string
143+
minLikes*: string
144144
sep*: string
145145

146146
Gif* = object

src/views/general.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ proc renderHead*(prefs: Prefs; cfg: Config; req: Request; titleText=""; desc="";
5252
let opensearchUrl = getUrlPrefix(cfg) & "/opensearch"
5353

5454
buildHtml(head):
55-
link(rel="stylesheet", type="text/css", href="/css/style.css?v=20")
55+
link(rel="stylesheet", type="text/css", href="/css/style.css?v=21")
5656
link(rel="stylesheet", type="text/css", href="/css/fontello.css?v=3")
5757

5858
if theme.len > 0:

src/views/renderutils.nim

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ proc genDate*(pref, state: string): VNode =
8989
input(name=pref, `type`="date", value=state)
9090
icon "calendar"
9191

92+
proc genNumberInput*(pref, label, state, placeholder: string; class=""; autofocus=true; min="0"): VNode =
93+
let p = placeholder
94+
buildHtml(tdiv(class=("pref-group pref-input " & class))):
95+
if label.len > 0:
96+
label(`for`=pref): text label
97+
input(name=pref, `type`="number", placeholder=p, value=state, autofocus=(autofocus and state.len == 0), min=min, step="1")
98+
9299
proc genImg*(url: string; class=""): VNode =
93100
buildHtml():
94101
img(src=getPicUrl(url), class=class, alt="", loading="lazy")

src/views/search.nim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ proc renderSearchTabs*(query: Query): VNode =
5151

5252
proc isPanelOpen(q: Query): bool =
5353
q.fromUser.len == 0 and (q.filters.len > 0 or q.excludes.len > 0 or
54-
@[q.near, q.until, q.since].anyIt(it.len > 0))
54+
@[q.minLikes, q.until, q.since].anyIt(it.len > 0))
5555

5656
proc renderSearchPanel*(query: Query): VNode =
5757
let user = query.fromUser.join(",")
@@ -83,8 +83,8 @@ proc renderSearchPanel*(query: Query): VNode =
8383
span(class="search-title"): text "-"
8484
genDate("until", query.until)
8585
tdiv:
86-
span(class="search-title"): text "Near"
87-
genInput("near", "", query.near, "Location...", autofocus=false)
86+
span(class="search-title"): text "Minimum likes"
87+
genNumberInput("min_faves", "", query.minLikes, "Number...", autofocus=false)
8888

8989
proc renderTweetSearch*(results: Timeline; prefs: Prefs; path: string;
9090
pinned=none(Tweet)): VNode =

0 commit comments

Comments
 (0)