Merge pull request #2069 from freifunk-gluon/web-theme-cleanup

gluon-config-mode-theme: cleanup and select box theming
This commit is contained in:
Matthias Schiffer 2020-08-10 21:33:40 +02:00 committed by GitHub
commit e06081c3fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 369 additions and 463 deletions

File diff suppressed because one or more lines are too long

View File

@ -24,7 +24,6 @@ $red: #ee3300;
} }
display: inline-block; display: inline-block;
zoom: 1;
line-height: normal; line-height: normal;
white-space: nowrap; white-space: nowrap;
vertical-align: baseline; vertical-align: baseline;
@ -36,8 +35,8 @@ $red: #ee3300;
font-size: 100%; font-size: 100%;
padding: 0.5em 1em; padding: 0.5em 1em;
color: rgba(0, 0, 0, 0.80); color: rgba(0, 0, 0, 0.80);
border: none rgba(0, 0, 0, 0);
background-color: #E6E6E6; background-color: #E6E6E6;
border: none;
text-decoration: none; text-decoration: none;
border-radius: 2px; border-radius: 2px;
@ -65,24 +64,10 @@ $red: #ee3300;
} }
} }
@mixin button-primary {
background-color: $ffzusatz;
color: #fff;
}
.lang_he {
direction: RTL;
unicode-bidi: embed;
}
.hidden {
display: none;
}
html { html {
min-height: 100%; min-height: 100%;
height: auto; height: auto;
position:relative; position: relative;
} }
body, input, select, option { body, input, select, option {
@ -100,11 +85,6 @@ body {
background-color: #f3f3f3; background-color: #f3f3f3;
} }
a img {
border: none;
text-decoration: none;
}
.tabmenu1 { .tabmenu1 {
text-align: center; text-align: center;
} }
@ -142,38 +122,10 @@ ul.tabmenu li {
} }
} }
abbr,
acronym {
font-style: normal;
font-variant: normal;
}
abbr[title],
acronym[title] {
border-bottom: 1px dotted;
cursor: help;
}
a:link abbr[title],
a:visited abbr[title],
a:link acronym[title],
a:visited acronym[title] {
cursor: pointer;
}
code {
font-family: monospace;
white-space: pre;
}
#maincontent ul { #maincontent ul {
margin-left: 2em; margin-left: 2em;
} }
.clear {
clear: both;
}
.error { .error {
color: #ff0000; color: #ff0000;
background-color: white; background-color: white;
@ -207,7 +159,7 @@ code {
} }
} }
#menubar div.hostinfo { #menubar .hostinfo {
position: relative; position: relative;
margin: 0; margin: 0;
padding: 0.5em; padding: 0.5em;
@ -216,7 +168,7 @@ code {
font-size: 80%; font-size: 80%;
} }
#menubar div.hostinfo a { #menubar .hostinfo a {
&:link, &:visited { &:link, &:visited {
text-decoration: none; text-decoration: none;
font-weight: bold; font-weight: bold;
@ -269,15 +221,15 @@ code {
} }
.gluon-section h2 { .gluon-section h2 {
margin: 0em 0 0.5em -0.5em !important; margin: 0em 0 0.5em -0.5em;
} }
.gluon-section h3 { .gluon-section h3 {
text-decoration: none !important; text-decoration: none;
font-weight: bold !important; font-weight: bold;
color: #555555 !important; color: #555555;
margin: 0.25em !important; margin: 0.25em;
font-size: 100% !important; font-size: 100%;
} }
.gluon-section-descr { .gluon-section-descr {
@ -290,19 +242,11 @@ code {
margin-bottom: 1em; margin-bottom: 1em;
} }
input:placeholder { input::placeholder {
color: #aaaaaa; color: #aaaaaa;
} }
input:-webkit-input-placeholder { input::-webkit-input-placeholder {
color: #aaaaaa;
}
input:-moz-placeholder {
color: #aaaaaa;
}
input:-ms-input-placeholder {
color: #aaaaaa; color: #aaaaaa;
} }
@ -317,7 +261,7 @@ input[type=checkbox] {
margin: 0; margin: 0;
} }
&:checked + label:after { &:checked + label::after {
content: ''; content: '';
color: $ffmagenta; color: $ffmagenta;
vertical-align: middle; vertical-align: middle;
@ -347,7 +291,7 @@ input[type=radio] {
border-radius: 50%; border-radius: 50%;
} }
&:checked + label:after { &:checked + label::after {
content: ''; content: '';
color: $ffmagenta; color: $ffmagenta;
vertical-align: middle; vertical-align: middle;
@ -363,7 +307,6 @@ input[type=radio] {
input[type=submit], input[type=submit],
input[type=reset], input[type=reset],
input[type=image],
input[type=button] { input[type=button] {
cursor: pointer; cursor: pointer;
} }
@ -383,37 +326,63 @@ input[type=checkbox] + label {
outline: 0; outline: 0;
} }
.select-wrapper {
position: relative;
display: inline-block;
&::before {
position: absolute;
z-index: 1;
right: 0.05em;
top: calc(2px + 0.1em);
bottom: calc(2px + 0.1em);
width: 1.4em;
border-left: 0.05em solid rgba(0, 0, 0, 0.25);
pointer-events: none;
background:
url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="8" height="5"><path fill="none" stroke="black" stroke-linejoin="bevel" d="M1,1L4,4L7,1"/></svg>')
center / 0.8em 0.5em
no-repeat
;
content: '';
}
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
cursor: pointer;
}
}
option { option {
color: darken($ffzusatz, 30); color: darken($ffzusatz, 30);
background: lighten($ffyellow, 30); background: lighten($ffyellow, 30);
} }
input[type=image] {
border: none;
}
select, select,
input[type=text], input[type=text],
input[type=password] { input[type=password] {
min-width: 20em; min-width: 20em;
} }
input.gluon-button { .gluon-button {
@include button; @include button;
margin-left: 0.5em; margin-left: 0.5em;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
input.gluon-button-reset { .gluon-button-reset {
background-color: $red; background-color: $red;
color: #fff; color: #fff;
} }
input.gluon-button-submit {
@include button-primary;
}
input.gluon-button-submit:active { .gluon-button-submit {
background-color: $ffzusatz;
color: #fff;
}
.gluon-button-submit:active {
background: grey; background: grey;
} }
@ -422,25 +391,12 @@ input.gluon-button-submit:active {
color: white; color: white;
} }
div.gluon-section-remove input {
border-bottom: none;
}
textarea { textarea {
margin-left: -1px; margin-left: -1px;
margin-bottom: 0.5em; margin-bottom: 0.5em;
} }
.gluon-section .gluon-rowstyle-1 h3 { .gluon-value {
background-color: #eeeeff;
color: #555555;
}
.gluon-rowstyle-2 {
color: #000000;
}
div.gluon-value {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
margin-bottom: 0.5em; margin-bottom: 0.5em;
@ -458,7 +414,7 @@ div.gluon-value {
font-weight: bold; font-weight: bold;
} }
div.gluon-value-field { .gluon-value-field {
flex: 3; flex: 3;
position: relative; position: relative;
@ -467,12 +423,12 @@ div.gluon-value-field {
} }
} }
div.gluon-value-field-text { .gluon-value-field-text {
flex: 3; flex: 3;
padding-top: 0.39em; padding-top: 0.39em;
} }
div.gluon-value-field-long { .gluon-value-field-long {
flex: 10; flex: 10;
position: relative; position: relative;
margin-top: 0.65em; margin-top: 0.65em;
@ -482,29 +438,15 @@ div.gluon-value-field-long {
} }
} }
div.gluon-value-field-long-after { .gluon-value-field-long-after {
flex: 2; flex: 2;
} }
div.gluon-value-description { .gluon-value-description {
font-size: 8pt; font-size: 8pt;
} }
div.gluon-section-create { .gluon-form-descr {
clear: left;
white-space: nowrap;
vertical-align: top;
}
div.gluon-section-create .gluon-button {
margin: 0.25em;
}
input.gluon-section-create-name {
margin-right: -0.25em;
}
div.gluon-form-descr {
margin-bottom: 1em; margin-bottom: 1em;
} }
@ -523,42 +465,18 @@ div.gluon-form-descr {
flex-flow: row-reverse; flex-flow: row-reverse;
} }
div.gluon-optionals {
padding: 0.25em;
border-bottom: 1px dotted #bbbbbb;
}
div.gluon-section-remove {
float: right;
}
.gluon-section-node { .gluon-section-node {
clear: both; clear: both;
position: relative; position: relative;
border: none; border: none;
} }
.gluon-section-node-tabbed {
border-top-left-radius: 0;
}
div.gluon-error {
font-size: 95%;
font-weight: bold;
color: #ff0000;
background-color: #ffffff;
}
.gluon-value-error input, .gluon-value-error input,
.gluon-value-error select { .gluon-value-error select {
background-color: #ffcccc; background-color: #ffcccc;
} }
.gluon-value-field var { .gluon-add::after, .gluon-remove::after {
color: #2222FF;
}
.gluon-add:after, .gluon-remove:after {
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
text-align: center; text-align: center;
@ -584,7 +502,7 @@ div.gluon-error {
left: -0.08em; left: -0.08em;
} }
&:after { &::after {
content: '+'; content: '+';
} }
} }
@ -595,23 +513,11 @@ div.gluon-error {
position: relative; position: relative;
top: -0.03em; top: -0.03em;
&:after { &::after {
content: ''; content: '';
} }
} }
.left {
text-align: left !important;
}
.right {
text-align: right !important;
}
.inline {
display: inline;
}
.error500 { .error500 {
border: 1px dotted #ff0000; border: 1px dotted #ff0000;
background-color: #ffffff; background-color: #ffffff;

View File

@ -26,7 +26,7 @@ $Id$
<%:Firmware image%> <%:Firmware image%>
</label> </label>
<div class="gluon-value-field"> <div class="gluon-value-field">
<input class="gluon-input-file" type="file" name="image" /> <input type="file" name="image" />
</div> </div>
</div> </div>
@ -36,13 +36,13 @@ $Id$
</label> </label>
<div class="gluon-value-field"> <div class="gluon-value-field">
<input id="keepcfg" class="gluon-input-checkbox" type="checkbox" name="keepcfg" value="1" checked="checked" /> <input id="keepcfg" type="checkbox" name="keepcfg" value="1" checked="checked" />
<label for="keepcfg"></label> <label for="keepcfg"></label>
</div> </div>
</div> </div>
</div> </div>
<div class="gluon-page-actions right"> <div class="gluon-page-actions">
<input type="hidden" name="step" value="2" /> <input type="hidden" name="step" value="2" />
<input type="hidden" name="token" value="<%=token%>" /> <input type="hidden" name="token" value="<%=token%>" />
<input class="gluon-button gluon-button-submit" type="submit" value="<%:Upload image%>" /> <input class="gluon-button gluon-button-submit" type="submit" value="<%:Upload image%>" />

View File

@ -1,6 +1,6 @@
<div class="gluon-value"> <div class="gluon-value">
<div class="gluon-value-title"> <div class="gluon-value-title">
<input class="gluon-input-radio" data-update="change" type="radio" value="security"<%= attr("id", id..'.1') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "security") and "checked") %> /> <input data-update="change" type="radio" value="security"<%= attr("id", id..'.1') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "security") and "checked") %> />
<label<%= attr("for", id..'.1')%>></label> <label<%= attr("for", id..'.1')%>></label>
</div> </div>
<div class="gluon-value-field-long"> <div class="gluon-value-field-long">
@ -18,7 +18,7 @@
<div class="gluon-value gluon-value-last"> <div class="gluon-value gluon-value-last">
<div class="gluon-value-title"> <div class="gluon-value-title">
<input class="gluon-input-radio" data-update="change" type="radio" value="performance"<%= attr("id", id..'.2') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "performance") and "checked") %> /> <input data-update="change" type="radio" value="performance"<%= attr("id", id..'.2') .. attr("name", id) .. attr("checked", ((self:cfgvalue() or self.default) == "performance") and "checked") %> />
<label<%= attr("for", id..'.2')%>></label> <label<%= attr("for", id..'.2')%>></label>
</div> </div>
<div class="gluon-value-field-long"> <div class="gluon-value-field-long">

View File

@ -10,7 +10,7 @@
<% <%
for i, val in ipairs(self:cfgvalue()) do for i, val in ipairs(self:cfgvalue()) do
%> %>
<input class="gluon-input-text" value="<%|val%>" data-update="change" type="text"<%= <input value="<%|val%>" data-update="change" type="text"<%=
attr("id", id .. "." .. i) .. attr("id", id .. "." .. i) ..
attr("name", id) .. attr("name", id) ..
attr("size", self.size) .. attr("size", self.size) ..

View File

@ -1,4 +1,4 @@
<input class="gluon-input-checkbox" data-update="click change" type="checkbox" value="1"<%= <input data-update="click change" type="checkbox" value="1"<%=
attr("id", id) .. attr("name", id) .. attr("id", id) .. attr("name", id) ..
attr("checked", self:cfgvalue() and "checked") attr("checked", self:cfgvalue() and "checked")
%> /> %> />

View File

@ -4,7 +4,8 @@
%> %>
<% if self.widget == "select" then %> <% if self.widget == "select" then %>
<select class="gluon-input-select" data-update="change"<%= <div class="select-wrapper">
<select data-update="change"<%=
attr("id", id) .. attr("id", id) ..
attr("name", id) .. attr("name", id) ..
attr("size", self.size) .. attr("size", self.size) ..
@ -21,6 +22,7 @@
%>><%|entry.value%></option> %>><%|entry.value%></option>
<%- end %> <%- end %>
</select> </select>
</div>
<% elseif self.widget == "radio" then %> <% elseif self.widget == "radio" then %>
<div> <div>
<% for i, entry in pairs(entries) do %> <% for i, entry in pairs(entries) do %>
@ -28,7 +30,7 @@
attr("data-index", i) .. attr("data-index", i) ..
attr("data-depends", self:deplist(entry.deps)) attr("data-depends", self:deplist(entry.deps))
%>> %>>
<input class="gluon-input-radio" data-update="click change" type="radio"<%= <input data-update="click change" type="radio"<%=
attr("id", id.."."..entry.key) .. attr("id", id.."."..entry.key) ..
attr("name", id) .. attr("name", id) ..
attr("value", entry.key) .. attr("value", entry.key) ..

View File

@ -1,3 +1,3 @@
<textarea class="gluon-input-textarea" <% if not self.size then %> style="width: 100%"<% else %> cols="<%=self.size%>"<% end %> data-update="change"<%= attr("name", id) .. attr("id", id) .. attr("rows", self.rows) .. attr("wrap", self.wrap) %>> <textarea <% if not self.size then %> style="width: 100%"<% else %> cols="<%=self.size%>"<% end %> data-update="change"<%= attr("name", id) .. attr("id", id) .. attr("rows", self.rows) .. attr("wrap", self.wrap) %>>
<%-|self:cfgvalue()-%> <%-|self:cfgvalue()-%>
</textarea> </textarea>

View File

@ -2,7 +2,6 @@
attr("id", id) .. attr("id", id) ..
attr("name", id) .. attr("name", id) ..
attr("type", self.password and "password" or "text") .. attr("type", self.password and "password" or "text") ..
attr("class", self.password and "gluon-input-password" or "gluon-input-text") ..
attr("value", self:cfgvalue()) .. attr("value", self:cfgvalue()) ..
attr("size", self.size) .. attr("size", self.size) ..
attr("placeholder", self.placeholder) .. attr("placeholder", self.placeholder) ..

File diff suppressed because one or more lines are too long

View File

@ -276,7 +276,6 @@
t.value = values[i-1]; t.value = values[i-1];
t.type = 'text'; t.type = 'text';
t.index = i; t.index = i;
t.className = 'gluon-input-text';
if (attr.size) if (attr.size)
t.size = attr.size; t.size = attr.size;