diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-06-26 14:31:39 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-06-26 14:31:39 +0200 |
commit | c32097d7d525d0c3e960e558d1c561c9c596bf96 (patch) | |
tree | cbeb38fb246ff15ad3e4ae38fab9c507d8b65e58 /themes/luci-theme-freifunk-generic | |
parent | 0d9a64b3b4220c99011fb576eaa2c97e0b91edb5 (diff) |
luci-theme-freifunk-generic: fix & modernize
Align theme with current markup, port missing CSS directives from OpenWrt
theme and drop a few outdated resources.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'themes/luci-theme-freifunk-generic')
4 files changed, 959 insertions, 285 deletions
diff --git a/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/bg.jpg b/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/bg.jpg Binary files differdeleted file mode 100644 index 822527ead..000000000 --- a/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/bg.jpg +++ /dev/null diff --git a/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css b/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css index ed97427c9..d5e87ebef 100644 --- a/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css +++ b/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css @@ -9,7 +9,7 @@ html { body { color: #ccc; - background:#e5eef5 url(bg.jpg) repeat-x top left; + background: #e5eef5 linear-gradient(#fff 0%, #e5eef5 100%) no-repeat; font-family: Verdana, Arial, sans-serif; font-size: 100%; line-height: 100%; @@ -23,6 +23,42 @@ html, body { * { margin: 0; padding: 0; + box-sizing: border-box; +} + +.table { display: table; width: 100%; position: relative; } +.tr { display: table-row; } +.thead { display: table-header-group; } +.tbody { display: table-row-group; } +.tfoot { display: table-footer-group; } +.td, .th { display: table-cell; } +.th { font-weight: bold; } + +.table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; } +.table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; } + +.col-1 { flex: 1 1 30px !important; -webkit-flex: 1 1 30px !important; } +.col-2 { flex: 2 2 60px !important; -webkit-flex: 2 2 60px !important; } +.col-3 { flex: 3 3 90px !important; -webkit-flex: 3 3 90px !important; } +.col-4 { flex: 4 4 120px !important; -webkit-flex: 4 4 120px !important; } +.col-5 { flex: 5 5 150px !important; -webkit-flex: 5 5 150px !important; } +.col-6 { flex: 6 6 180px !important; -webkit-flex: 6 6 180px !important; } +.col-7 { flex: 7 7 210px !important; -webkit-flex: 7 7 210px !important; } +.col-8 { flex: 8 8 240px !important; -webkit-flex: 8 8 240px !important; } +.col-9 { flex: 9 9 270px !important; -webkit-flex: 9 9 270px !important; } +.col-10 { flex: 10 10 300px !important; -webkit-flex: 10 10 300px !important; } + +.tr.placeholder { + height: 3.5em; +} + +.tr.placeholder > .td { + position: absolute; + left: 1px; + right: 1px; + bottom: 1px; + text-align: center; + line-height: 3em; } abbr, @@ -49,6 +85,34 @@ code { white-space: pre; } +h2, h3, h4, legend { + font-size: 150%; + font-family: Trebuchet MS, Verdana, sans-serif; + font-weight: bold; + margin: .25em 0 .5em 0; + border-bottom: 1px solid; + padding-bottom: 4px; + display: block; + width: 100%; +} + +h3, legend { + font-size: 125%; +} + +h4 { + font-size: 112%; +} + +.cbi-section-node + h4 { + margin-top: 1em; +} + +fieldset { border: none; } + +fieldset > legend { float: left; } +fieldset > legend + * { clear: both; } + #maincontent ul { margin-left: 2em; } @@ -85,37 +149,63 @@ a img { background-color: white; } -.errorbox { - border: 1px solid #F00; - background-color: #FCC; - padding: 5px; +.alert-message { + font-weight: normal; + padding: .5em; + border-radius: 3px; + color: #000; } +.alert-message.notice { + background: linear-gradient(#ccc 0%, #eee 100%); + color: #4a6b7c; +} -.ifacebox { - background-color: #FFFFFF; - border: 1px solid #CCCCCC; - margin: 0 10px; - text-align: center; - white-space: nowrap; +.alert-message.warning { + background: linear-gradient(#dda 0%, #dd8 100%); + color: #c00; } -.ifacebox .ifacebox-head { - border-bottom: 1px solid #CCCCCC; - padding: 2px; +.alert-message > * { + margin: .5em; } -.ifacebox .ifacebox-body { - padding: 2px; +.alert-message > h4 { + font-weight: bold; } -.ifacebadge { - background-color: #FFFFFF; - border: 1px solid #CCCCCC; +.ifacebadge, .ifacebox { + display: inline-flex; + align-content: center; + border: 1px solid #ccc; + border-radius: 3px; padding: 2px; - margin-left: 2px; + background: #fff; + margin: .25em .5em; +} + +.ifacebox-head { + background: #eee; +} + +.ifacebox-head.active { + background: #90c0e0; +} + +.ifacebadge, .zonebadge { + align-items: center; +} + +.ifacebadge > * { + align-self: flex-start; +} + +.ifacebadge > img, +.ifacebadge > em { + margin-right: 5px; display: inline-block; + height: 16px; } .ifacebadge-active { @@ -123,18 +213,70 @@ a img { font-weight: bold; } +.ifacebox { + flex-direction: column; + margin: 0; + padding: 0; + min-width: 100px; + text-align: center; +} + +.ifacebox > * { + padding: 2px; +} + +.td > .ifacebadge, +.td > .zonebadge { + margin: 0; + vertical-align: top; +} + +.network-status-table { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox { + margin: .5em; + font-size: 90%; + flex-grow: 1; +} + +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + flex: 1 0; +} + +.network-status-table .ifacebox-body > span { + flex: 10; +} + +.network-status-table .ifacebox-body > div { + display: flex; + flex-wrap: wrap; +} + +.ifacebadge.large, +.network-status-table .ifacebox-body .ifacebadge { + flex: 1; + margin: .5em .25em .25em .25em; + padding: .5em; + min-width: 220px; + white-space: nowrap; +} + .zonebadge { padding: 2px; display: inline-block; white-space: nowrap; - cursor: pointer; + border-radius: 3px; } -.zonebadge em, -.zonebadge strong { +.zonebadge > em, +.zonebadge > strong { margin: 3px; - display: inline-block; } .zonebadge input { @@ -142,6 +284,18 @@ a img { height: 1.5em; } +.zonebadge .ifacebadge, +.cbi-dropdown .ifacebadge { + margin: 1px; +} + +.zonebadge .ifacebadge img, +.zonebadge .ifacebadge em, +.cbi-dropdown .ifacebadge img, +.cbi-dropdown .ifacebadge em { + margin: 0 1px; +} + .zonebadge-empty { border: 1px dashed #AAAAAA; color: #AAAAAA; @@ -150,6 +304,7 @@ a img { } + #header { height: auto; background: #FFF url(header.jpg) repeat-x left bottom; @@ -158,9 +313,12 @@ a img { text-align:right; } +.header_left { + padding-bottom: 10px; +} + .header_left img { padding: 10px 10px 0px 10px; - margin-bottom: 10px; } .header_banner { @@ -173,15 +331,15 @@ a img { padding: 0px; } -.header_left{ +.header_left { text-align:left; max-width: 50%; float:left; } -.header_left a{ +.header_left a { color: #dc0067; - font: bold 36px Helvetica; + font: bold 36px Helvetica, Verdana, Arial, sans-serif; text-decoration: none; } @@ -454,53 +612,15 @@ textarea#syslog { font-size: 80%; } -#maincontent h2 { - font:normal bold 150% "Trebuchet MS", Verdana, sans-serif; - margin: 0.25em 0 0.7em 0; - border-bottom: 1px solid; - padding: 10px 0 4px 0; - color: #404040; -} - -#maincontent h3 { - margin: 0.5em 0 1.1em 0; - font:italic bold 125% "Trebuchet MS", Verdana, sans-serif; - color: #404040; -} - #maincontent p { margin-bottom: 1em; } .cbi-section { - margin-bottom: 0.5em; - padding: 0.5em 1em; - border: 1px dotted #555; - background-color: #fff; + margin-bottom: 1.5em; color: #000; } -.cbi-section legend { - font-size: 110%; - font-weight: bold; - height: 1em; - padding: 0.5em 0.25em; - background-color: transparent; - color: #404040 ; -} - -.cbi-section h2 { - margin: 0em 0 0.5em -0.5em !important; -} - -.cbi-section h3 { - text-decoration: none !important; - font-weight: bold !important; - color: #555 !important; - margin: 0.25em !important; - font-size: 100% !important; -} - .cbi-section-descr { margin-bottom: 0.5em; font-size: 95%; @@ -519,46 +639,52 @@ ul.cbi-apply { } ul.cbi-tabmenu { - padding: 3px 0; - margin-left: 0 !important; - margin-bottom: -1px; list-style-type: none; + display: flex; + margin: 0 0 .5em 0 !important; + padding: 0 0 0 5px; + border-bottom: 1px solid #bbb; } -ul.cbi-tabmenu li.cbi-tab, -ul.cbi-tabmenu li.cbi-tab-disabled { - display: inline; - margin: 0; +ul.cbi-tabmenu li { + display: inline-flex; + margin: 0 5px -1px 0; + flex: 0 1 auto; + border: 1px solid #bbb; + border-bottom: none; + border-radius: 3px 3px 0 0; + background: linear-gradient(#ddd 90%, #aaa 100%); + color: #888; + overflow: hidden; + text-overflow: ellipsis; + word-wrap: break-word; } -ul.cbi-tabmenu li.cbi-tab a, -ul.cbi-tabmenu li.cbi-tab-disabled a { +ul.cbi-tabmenu li a, +ul.cbi-tabmenu li a:hover { text-decoration: none; - padding: 3px 7px; - margin-right: 3px; - border: 1px dotted #bbb; - border-bottom: none; - background-color: #eee; - color: #bbb; + color: inherit; + padding: 5px; + flex: 1; + width: 100%; + height: 100%; } -ul.cbi-tabmenu li.cbi-tab-highlighted a { +ul.cbi-tabmenu li.cbi-tab-highlighted { color: #000; - background-color: #FFEEAA; + background: #fea; } -ul.cbi-tabmenu li a:hover { +ul.cbi-tabmenu li.cbi-tab { color: #000; + background: #fff; } -ul.cbi-tabmenu li.cbi-tab a { - position: relative; - top: 1px; - padding-top: 4px; - color: #000; - background-color: #fff; +ul.cbi-tabmenu + .cbi-section-node { + margin-top: -.5em; } + div.cbi-tab-descr { background-image: url(/luci-static/resources/cbi/help.gif); background-position: 0.25em 50%; @@ -601,151 +727,126 @@ select, input[type=text], input[type=password] { width: 20em; + font-size: inherit; + line-height: 13pt; + height: 14pt; } -td select, -td input[type=text], -td input[type=password] { - width: 99%; +select[multiple] { + height: auto; } -img.cbi-image-button { - cursor: pointer; - margin: 0 2px; +input[type=radio], +input[type=checkbox], +[data-dynlist] > input + img, +input.cbi-input-password + img { vertical-align: middle; } -input.cbi-input-user { - background: url('../resources/cbi/user.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - text-indent: 17px; -} - -input.cbi-input-password { - background: url('../resources/cbi/key.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - text-indent: 17px; -} - -input.cbi-input-find, -input.cbi-button-find { - background: url('../resources/cbi/find.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding-left: 17px; - border: none; -} - -input.cbi-input-reload { - background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding-left: 17px; -} - -input.cbi-button{ - margin-top: 1.3em; +.td select, +.td .cbi-dropdown, +.td input[type=text] { + width: 100%; } -input.cbi-input-add, -input.cbi-button-add { - background: url('../resources/cbi/add.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: 1px solid #FFF; +.td [data-dynlist] > input, +.td input.cbi-input-password { + width: calc(100% - 20px); } -input.cbi-input-fieldadd, -input.cbi-button-fieldadd { - background: url(../resources/cbi/fieldadd.gif) no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; +img.cbi-image-button { + cursor: pointer; + margin: 0 2px; + vertical-align: middle; } -input.cbi-input-reset, -input.cbi-button-reset { - background: url('../resources/cbi/reset.gif') no-repeat scroll 1px center; - background-color: inherit; +.btn, .cbi-button { + padding: 0 .5em; + border-radius: 3px; + border: 1px solid #aaa; + text-decoration: none; color: #000; - padding: 0 1px 0 17px; -} - - + display: inline-block; + font-size: inherit; + -webkit-appearance: none; + background: #fff; + text-align: center; + font-weight: bold; + line-height: 13pt; + height: 14pt; } -input.cbi-input-save, -input.cbi-button-save { - background: url('../resources/cbi/save.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; +.btn:hover, .cbi-button:hover { + box-shadow: 0 0 3px #59d; } -input.cbi-input-apply, -input.cbi-button-apply { - background: url('../resources/cbi/apply.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; +.btn[disabled], +.btn[disabled]:hover, +.cbi-button[disabled], +.cbi-button[disabled]:hover { + opacity: .6; + cursor: default; + pointer-events: none; } -input.cbi-input-link, -input.cbi-button-link { - background: url('../resources/cbi/link.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: none; +.cbi-button-positive, +.cbi-button-fieldadd, +.cbi-button-add, +.cbi-button-save { + border-color: #7b7; + color: #7b7; } -input.cbi-input-download, -input.cbi-button-download { - background: url('../resources/cbi/download.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: none; +.cbi-button-neutral, +.cbi-button-reset, +.cbi-button-download, +.cbi-button-find, +.cbi-button-link, +.cbi-button-up, +.cbi-button-down { + border-color: #444; + color: #444; } -input.cbi-input-remove, -div.cbi-section-remove input { - background: url('../resources/cbi/remove.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: 1px solid #fff; +.cbi-button-action, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-edit { + border-color: #59d; + color: #59d; } -input.cbi-button-up { - background-image: url('../resources/cbi/up.gif'); - padding: 0 1px 0 11px; +.cbi-button-negative, +.cbi-section-remove .cbi-button, +.cbi-button-remove { + border-color: #b77; + color: #b77; } -input.cbi-button-down { - background-image: url('../resources/cbi/down.gif'); - padding: 0 1px 0 11px; +.cbi-button-action.important, +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit { + color: #fff; + background: #59d; } -input.cbi-button-edit { - background: url('../resources/cbi/edit.gif') no-repeat scroll 1px center; - color: #000000; - padding: 0 1px 0 17px; +.cbi-button-positive.important, +.cbi-page-actions .cbi-button-save { + color: #fff; + background: #7b7; } -input.cbi-button-reload { - background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center; - color: #000000; - padding: 0 1px 0 17px; +.cbi-page-actions .cbi-button-apply + .cbi-button-save { + background: #fff; + color: #7b7; } -input.cbi-button-remove { - background: url('../resources/cbi/remove.gif') no-repeat scroll 1px center; - color: #000000; - padding: 0 1px 0 17px; +.cbi-input-invalid { + background-image: url('../resources/cbi/reset.gif'); + background-repeat: no-repeat; + background-position: right; + color: #FF0000 !important; + border-color: #FF0000; } .cbi-input-invalid { @@ -765,18 +866,12 @@ textarea { margin-bottom: 0.5em; } -form > div > input[type=submit], -form > div > input[type=reset] { - float: right; - margin-left: 0.5em; -} - -table td, -table th { - color: #000; +.table .td, .table .th { + color: #000000; + padding: .25em; } -table.smalltext { +.table.smalltext { background: #f5f5f5; color: #000; border: 1px solid #666; @@ -787,48 +882,62 @@ table.smalltext { border-collapse: collapse; } -table.smalltext tr:hover td { +.table.smalltext .tr:hover .td { background-color: #bbddee; color: #000; } -table.smalltext tr th { +.table.smalltext .tr .th { padding: 0 0.25em; border-left: 1px dotted #666; text-align: left; } -table.smalltext tr td { +.table.smalltext .tr .td { padding: 0.2em; border-top: 1px dotted #666; border-left: 1px dotted #666; } -table.cbi-section-table .cbi-rowstyle-1 { - background-color: #f1f6fa; - color: #000; +.cbi-section-node .tr:not(.placeholder):nth-child(even) { + background: #e5eef5; } -table.cbi-section-table .cbi-rowstyle-1:hover, -table.cbi-section-table .cbi-rowstyle-2:hover { - background-color: #b2c8d4; - color: #000000; -} - -table.cbi-section-table .cbi-section-table-cell { +.table.cbi-section-table .cbi-section-table-cell { padding: 3px; white-space: nowrap; } -.cbi-section .cbi-rowstyle-1 h3 { - background-color: #f1f6fa; - color: #555; +.table .tr > .th:empty { + display: none; } -.cbi-rowstyle-2 { - color: #000; +.table.cbi-section-table .tr > *, +.table.cbi-section-table .tr[data-title]::before { + border-top: 1px dotted #bbb; + display: table-cell; +} + +.table.cbi-section-table .tr.table-titles > *, +.table.cbi-section-table .tr.cbi-section-table-titles > *, +.table.cbi-section-table .tr.cbi-section-table-desc > *, +.table.cbi-section-table .tr.table-titles::before, +.table.cbi-section-table .tr.cbi-section-table-titles::before, +.table.cbi-section-table .tr.cbi-section-table-desc::before { + border-top: none; } +.table.cbi-section-table .tr:hover::before, +.table.cbi-section-table .tr:hover > * { + background: #eee; +} + +.table.cbi-section-table .tr:nth-child(even):hover::before, +.table.cbi-section-table .tr:nth-child(even):hover > * { + background: #bde; +} + + div.cbi-value { clear: left; vertical-align: middle; @@ -847,34 +956,49 @@ div.cbi-value:hover { line-height: 1.8em; } -div.cbi-value-field { +.cbi-value-field { width: 58%; margin-left: 40%; padding: 0.25em 0; } -div.cbi-value-description { - font-size: 90%; - display: inline; +.td.cbi-value-field { + width: auto; + margin-left: 0; + align-self: center; } -div.cbi-section-create { - clear: left; - white-space: nowrap; - vertical-align: top; +.cbi-value-description { + background-image: url(/luci-static/resources/cbi/help.gif); + background-position: .25em .25em; + background-repeat: no-repeat; + margin: .25em 0 0 0; + padding: .25em .25em .25em 1.75em; } -div.cbi-tblsection-create { - border-bottom: 1px dotted #bbb; +.cbi-section-create { + padding: 0 0 .25em 0; + margin: -3px; + display: inline-flex; + align-items: center; +} + +.cbi-section-create > * { + margin: 3px; + flex: 1 1 auto; +} + +.cbi-section-create > * > input { + width: 100%; } -div.cbi-section-create .cbi-button { - margin: 0.25em; +.cbi-section-remove > .cbi-button { + margin-bottom: -1px; + border-radius: 3px 3px 0 0; } -input.cbi-section-create-name { - margin-right: -0.25em; - border: 1px solid #999; +.cbi-section-node + .cbi-section-create { + padding-top: 0; } div.cbi-map-descr { @@ -886,46 +1010,147 @@ div.cbi-optionals { border-bottom: 1px dotted #bbb; } -div.cbi-section-remove { - float: right; -} + .cbi-section-node { clear: both; - border: 1px dotted #bbb; - border-bottom: none; padding-bottom: 0; + position: relative; + border: 1px dotted #555; + background: #fff; + margin-bottom: 5px; } -.cbi-section-node table div { - padding-bottom: 0; - border-bottom: none; +.cbi-section-node-tabbed { + border-top: none; } -.cbi-section-node div.cbi-section-table-row { - margin: 0.25em; +.cbi-section-node .cbi-optionals:last-child, +.cbi-section-node .cbi-value:last-child { + border-bottom: none; } -table.cbi-section-table { +.table.cbi-section-table { width: 100%; font-size: 95%; + border: 1px dotted #444; + background: #fff; + margin: 0 0 .5em 0; } -table.cbi-section-table th, -table.cbi-section-table td { - text-align: center; +.cbi-section-node > .table.cbi-section-table { + border: none; + margin: 0; } -tr.cbi-section-table-descr th { - font-weight: bold; +@keyframes flash { + 0% { opacity: 1; } + 50% { opacity: .5; } + 100% { opacity: 1; } +} + +.tr.cbi-section-table-row.flash { + animation: flash .35s; +} + +.tr.cbi-section-table-descr .th { + font-weight: normal; font-size: 90%; + vertical-align: top; } -td.cbi-section-table-optionals { +.td.cbi-section-table-optionals { text-align: left !important; padding-top: 1em; } +.th.cbi-section-actions, +.td.cbi-section-actions { + display: flex; + justify-content: flex-end; + flex-direction: row; + flex: 1 1 150px; + margin: auto 0 auto auto; +} + +.td.cbi-section-actions > form { + display: flex; +} + +.td.cbi-section-actions > *, +.td.cbi-section-actions > form > * { + flex: 1 1 4em; + margin: 1px; +} + +.cbi-page-actions { + display: flex; + justify-content: flex-end; + margin: -3px; + padding: 0 .25em .25em .25em; +} + +.cbi-page-actions > form { + display: flex; +} + +.cbi-page-actions > * { + flex: 0 1 auto; + margin: 3px; +} + +.cbi-page-actions > form > * { + flex: 1; + margin: 0 3px 0 0; +} + +.cbi-page-actions > .cbi-button-link, +.cbi-page-actions > form[method="get"]:first-child { + margin-right: auto; +} + + +.th[data-type="button"], .td[data-type="button"], +.th[data-type="fvalue"], .td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; +} + +#cbi-network-switch_vlan .th, +#cbi-network-switch_vlan .td { + flex-basis: 12%; +} + +#cbi-wireless-overview .td:first-child { + align-self: center; +} + +.td[data-title]::before { + content: attr(data-title) ":\20"; + font-weight: bold; + text-align: left; + display: none; + padding: 1px; + white-space: nowrap; +} + +.tr.placeholder .td[data-title]::before { + display: none; +} + +.tr[data-title]::before, +.tr.cbi-section-table-titles.named::before { + content: attr(data-title) "\20"; + font-weight: bold; + text-align: left; + display: inline-block; + align-self: center; + flex: 1 1 5%; + padding: .25em; + white-space: normal; + word-wrap: break-word; +} + .cbi-value-helpicon img { vertical-align: bottom; } @@ -956,14 +1181,241 @@ td.cbi-value-error { padding: 3px; } -.left { + +.cbi-dropdown { + border: 1px solid #ccc; + display: inline-flex; + cursor: pointer; + background: #fff; + position: relative; + padding: 0; + color: #000; + min-width: 20em; + max-width: 100%; +} + +.cbi-dropdown:focus { + outline: 2px solid #4b6e9b; +} + +.cbi-dropdown > ul { + margin: 0 !important; + padding: 0; + list-style: none; + overflow-x: hidden; + overflow-y: auto; + display: flex; + width: 100%; +} + +.cbi-dropdown > ul.preview { + display: none; +} + +.cbi-dropdown > .open { + background: #eee; + border: 2px outset #eee; + flex-basis: 15px; +} + +.cbi-dropdown > .open, +.cbi-dropdown > .more { + flex-grow: 0; + flex-shrink: 0; + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; + line-height: 2em; + padding: 0 .25em; +} + +.cbi-dropdown > .more, +.cbi-dropdown > ul > li[placeholder] { + color: #777; + font-weight: bold; + text-shadow: 1px 1px 0px #fff; + display: none; +} + +.cbi-dropdown > ul > li { + display: none; + padding: .25em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + flex-shrink: 1; + flex-grow: 1; + align-items: center; + align-self: center; + min-height: 20px; +} + +.cbi-dropdown > ul > li .hide-open { display: initial; } +.cbi-dropdown > ul > li .hide-close { display: none; } + +.cbi-dropdown > ul > li[display]:not([display="0"]) { + border-left: 1px solid #ccc; +} + +.cbi-dropdown[empty] > ul { + max-width: 1px; +} + +.cbi-dropdown > ul > li > form { + display: none; + margin: 0; + padding: 0; + pointer-events: none; +} + +.cbi-dropdown > ul > li img { + vertical-align: middle; + margin-right: .25em; +} + +.cbi-dropdown > ul > li > form > input[type="checkbox"] { + margin: 0; +} + +.cbi-dropdown > ul > li input[type="text"] { + height: 20px; +} + +.cbi-dropdown[open] { + position: relative; +} + +.cbi-dropdown[open] > ul.dropdown { + display: block; + background: #f6f6f5; + border: 1px solid #918e8c; + box-shadow: 0 0 4px #918e8c; + position: absolute; + z-index: 1000; + max-width: none; + min-width: 100%; + width: auto; +} + +.cbi-dropdown > ul > li[display], +.cbi-dropdown[open] > ul.preview, +.cbi-dropdown[open] > ul.dropdown > li, +.cbi-dropdown[multiple] > ul > li > label, +.cbi-dropdown[multiple][open] > ul.dropdown > li, +.cbi-dropdown[multiple][more] > .more, +.cbi-dropdown[multiple][empty] > .more { + flex-grow: 1; + display: flex; + align-items: center; +} + +.cbi-dropdown[empty] > ul > li, +.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], +.cbi-dropdown[multiple][open] > ul.dropdown > li > form { + display: block; +} + +.cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; } +.cbi-dropdown[open] > ul.dropdown > li .hide-close { display: initial; } + +.cbi-dropdown[open] > ul.dropdown > li { + border-bottom: 1px solid #ccc; +} + +.cbi-dropdown[open] > ul.dropdown > li[selected] { + background: #b0d0f0; +} + +.cbi-dropdown[open] > ul.dropdown > li.focus { + background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); +} + +.cbi-dropdown[open] > ul.dropdown > li:last-child { + margin-bottom: 0; + border-bottom: none; +} + +.cbi-dropdown[disabled] { + pointer-events: none; + opacity: .6; +} + + +.cbi-tooltip-container { + cursor: help; +} + +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + opacity: 0; + transition: opacity .25s ease-out; + pointer-events: none; + box-shadow: 0 0 2px #444; +} + +.cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + opacity: 1; + transition: opacity .25s ease-in; +} + +.zonebadge .cbi-tooltip { + padding: 1px; + background: inherit; + margin: -1.6em 0 0 -5px; +} + + +.zone-forwards { + display: flex; + flex-wrap: wrap; +} + +.zone-forwards > * { + flex: 1 1 45%; + padding: 1px; +} + +.zone-forwards > span { + flex-basis: 10%; + text-align: center; +} + +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} + + +.left, .left::before { text-align: left !important; } -.right { +.right, .right::before { text-align: right !important; } +.center, .center::before { + text-align: center !important; +} + +.td.bottom { + align-self: flex-end; +} + +.td.top { + align-self: flex-start; +} + +.td.middle { + align-self: center; +} + + .footer, .push { height: 2em; } @@ -1070,3 +1522,246 @@ td.cbi-value-error { } } + +@media screen and (max-width: 992px) { + body { + -webkit-text-size-adjust: 100%; + } + + #maincontent { + width: 100%; + } + + .table { + display: flex; + flex-direction: column; + width: 100%; + } + + .tr { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: flex-end; + } + + .th, .td { + flex: 2 2 25%; + align-self: flex-start; + overflow: hidden; + text-overflow: ellipsis; + word-wrap: break-word; + display: inline-block; + } + + .td select { + word-wrap: normal; + } + + .td[data-type="button"], + .td[data-type="fvalue"] { + flex: 1 1 12.5%; + text-align: left; + } + + .td.cbi-value-field { + align-self: flex-start; + } + + .td.cbi-value-field .cbi-button { + width: 100%; + } + + .table.cbi-section-table { + border: none; + background: none; + margin: 0; + } + + .tr.table-titles, + .cbi-section-table-titles, + .cbi-section-table-descr { + display: none; + } + + .table.cbi-section-table .tr > *, + .table.cbi-section-table .tr[data-title]::before { + border-top: none; + } + + .cbi-section-table-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + border: 1px dotted #444; + margin: 0 0 .5em 0; + background: #fff; + } + + .cbi-section-table-row:hover { + border: 1px solid #4a6b7c; + } + + .table.cbi-section-table .tr:hover > *, + .table.cbi-section-table .tr:nth-child(2n):hover > * { + background: none; + } + + .cbi-section-table + .cbi-section-create { + padding-top: 0; + } + + .tr[data-title]::before { + display: block; + flex: 1 1 100%; + background: #eef; + } + + .td[data-title]::before { + display: block; + } + + .td.cbi-section-actions { + flex-basis: 100%; + margin: auto 0 0 auto; + } + + .td.cbi-section-actions > *, + .td.cbi-section-actions > form > * { + flex: 0 1 100%; + max-width: 150px; + } + + .hide-sm, + .hide-xs { + display: none; + } +} + +@media screen and (max-width: 480px) { + body { + font-size: 12pt; + } + + input, textarea, select { + font-size: 12pt !important; + line-height: 1.4em; + } + + select, input[type="text"], input[type="password"] { + width: 100%; + height: 1.4em; + } + + [data-dynlist] > input, + input.cbi-input-password { + width: calc(100% - 20px); + } + + .cbi-dropdown { + min-width: 100%; + } + + .btn, .cbi-button { + font-size: 9pt !important; + line-height: 11pt; + } + + #maincontent { + padding: .25em; + } + + #tabmenu { + margin: -.25em -.25em 1em -.25em; + } + + .th, .td { + flex: 2 2 50%; + } + + .td.cbi-value-field { + flex-basis: 100%; + } + + .td.cbi-value-field[data-type="dvalue"] { + flex-basis: 50%; + } + + .td.cbi-value-field[data-type="button"], + .td.cbi-value-field[data-type="fvalue"] { + flex-basis: 25%; + text-align: left; + } + + .cbi-section { + padding: .25em; + } + + .cbi-value { + padding: 0 .25em; + } + + .cbi-value-title { + float: none; + font-weight: bold; + } + + .cbi-value-field { + width: 100%; + margin: 0; + } + + .cbi-value-description { + margin-top: 5px; + display: block; + } + + .cbi-section-create { + margin-bottom: 1em; + } + + .cbi-optionals { + display: flex; + } + + .cbi-page-actions { + flex-wrap: wrap; + } + + .cbi-page-actions > .cbi-button-link { + flex-basis: 100%; + margin-right: 2px; + } + + .cbi-optionals > *, + .cbi-page-actions > * { + flex: 1 1 auto; + margin: 2px; + height: auto; + } + + ul.cbi-tabmenu { + padding: 0 3px; + } + + ul.cbi-tabmenu li { + font-size: 90%; + margin: 0 1px -1px 0; + } + + .hide-xs { + display: none; + } + + #cbi-network .td[id] > strong { + display: block; + } + + #cbi-network-switch_vlan .td.cbi-section-actions { + flex-basis: 100%; + } + + .network-status-table .ifacebox { + margin: 0 0 .5em 0; + } +} diff --git a/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/ie7.css b/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/ie7.css deleted file mode 100644 index 67ed9fb81..000000000 --- a/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/ie7.css +++ /dev/null @@ -1,20 +0,0 @@ -div.cbi-value-field { - margin-left: 0 !important; -} - -.cbi-section legend { - background-color: #ffffff; - color: #555555; -} - -table.cbi-section-table td .cbi-input-text, -table.cbi-section-table td .cbi-input-select { - width: 95% !important; -} - -.cbi-input-user, -.cbi-input-password { - text-indent: 0 !important; - padding-left: 1.5em !important; - width: 18.5em !important; -} diff --git a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm index 16ffc992a..b6ed1f713 100644 --- a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm +++ b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm @@ -74,7 +74,6 @@ <link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="<%=media%>/mobile.css" type="text/css" /> <link rel="stylesheet" media="only screen and (max-width: 854px)" href="<%=media%>/smallscreen.css" type="text/css" /> <link rel="stylesheet" media="handheld" href="<%=media%>/mobile.css" type="text/css" /> -<!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie7.css" /><![endif]--> <% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" /> <% end -%> <% if css then %><style title="text/css"> |