From c8337e9fbac6995bb56703bed588702bee628274 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Fri, 31 Mar 2017 20:06:54 +0200 Subject: [PATCH] Updated UI yet again --- res/css/{content.sass => _content.sass} | 180 ++---- res/css/{font.sass => _font.sass} | 0 res/css/{icons.sass => _icons.sass} | 0 res/css/_mirccolor.sass | 72 +++ res/css/{nav.sass => _nav.sass} | 26 +- .../{sendercolor.sass => _sendercolor.sass} | 0 res/css/{util.sass => _util.sass} | 0 res/css/oldsearch.css | 582 ------------------ res/css/search.css | 319 +++++----- res/css/search.css.map | 4 +- res/js/app.js | 13 +- res/js/component/buffer.js | 28 +- res/js/component/buffer.jsx | 15 +- res/js/component/history.js | 13 +- res/js/component/history.jsx | 15 +- res/js/component/historyelement.js | 9 +- res/js/component/historyelement.jsx | 9 +- res/js/component/nav.js | 11 +- res/js/component/nav.jsx | 11 +- res/js/component/urlbar.js | 24 - res/js/util/statehandler.js | 34 + res/search.js | 441 ------------- templates/search.phtml | 2 +- translations/de.json | 22 +- translations/en.json | 4 + 25 files changed, 461 insertions(+), 1373 deletions(-) rename res/css/{content.sass => _content.sass} (57%) rename res/css/{font.sass => _font.sass} (100%) rename res/css/{icons.sass => _icons.sass} (100%) create mode 100644 res/css/_mirccolor.sass rename res/css/{nav.sass => _nav.sass} (86%) rename res/css/{sendercolor.sass => _sendercolor.sass} (100%) rename res/css/{util.sass => _util.sass} (100%) delete mode 100644 res/css/oldsearch.css delete mode 100644 res/js/component/urlbar.js create mode 100644 res/js/util/statehandler.js delete mode 100644 res/search.js diff --git a/res/css/content.sass b/res/css/_content.sass similarity index 57% rename from res/css/content.sass rename to res/css/_content.sass index 2472ccc..c3b8d75 100644 --- a/res/css/content.sass +++ b/res/css/_content.sass @@ -1,5 +1,6 @@ @import "util" @import "sendercolor" +@import "mirccolor" .results max-width: 1136px @@ -17,51 +18,47 @@ display: block margin-top: 0 margin-bottom: 20px - border: rgba(0, 0, 0, 0) - transition: all 400ms + position: relative .title border-bottom: 1px solid transparent border-top: 1px solid transparent color: #616161 margin: 0 - background: #f2f2f2 padding: 20px 6px 10px 22px position: sticky top: 55px z-index: 1 transition: all 400ms - will-change: transform, -webkit-transform display: flex &:before content: "" display: block - position: absolute left: -16px - width: 16px + right: -16px top: 0 bottom: 0 - background: #f2f2f2 + background-color: #f2f2f2 + position: absolute + z-index: -2 + + @media(max-width: 800px) + left: 0 + right: 0 &:after content: "" display: block - position: absolute - right: -16px - width: 16px + left: 0 + right: 0 top: 0 bottom: 0 - background: #f2f2f2 - - @media(max-width: 800px) - margin-left: 0 - margin-right: 0 - padding-left: 22px - padding-right: 6px - - &:after, &:before - display: none + background-color: transparent + transition: margin-left 400ms, margin-right 400ms, background-color 400ms + will-change: margin-left, margin-right, background-color + position: absolute + z-index: -1 h2 flex: 1 @@ -91,6 +88,7 @@ text-decoration: none box-sizing: border-box font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif + will-change: background &:hover background-color: rgba(0,0,0,0.06) @@ -115,34 +113,50 @@ opacity: .2 transition: 0s - &:before - content: "Open" + .open + display: initial + .close + display: none - &:not(.selected) .context:nth-child(4)~.context + &:not(.focus) .context:nth-child(4)~.context display: none - &.selected - background-color: #ddd - border: rgba(0, 0, 0, .4) - padding: 0 16px 20px - margin: 0 -16px - @media(max-width: 800px) - margin: 0 0 20px 0 - padding: 0 + &:before + content: "" + display: block + left: 0 + right: 0 + top: 0 + bottom: 0 + background-color: transparent + transition: margin-left 400ms, margin-right 400ms, margin-bottom 400ms, background-color 400ms + will-change: margin-left, margin-right, margin-bottom, background-color + position: absolute + z-index: -1 + + &.focus + &:before + margin-bottom: -16px + background-color: #ddd + + @media(min-width: 800px) + margin-left: -16px + margin-right: -16px .title - margin: 0 -16px - padding: 20px 22px 10px 38px - background: #ddd + &:after + background-color: #ddd - @media(max-width: 800px) - margin: 0 - padding: 20px 6px 10px 22px + @media(min-width: 800px) + margin-left: -16px + margin-right: -16px button - &:before - content: "Close" + .open + display: none + .close + display: initial .container > .inline-button @@ -167,23 +181,12 @@ box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24) transition: height 400ms - /*&:before - bottom: 0 - box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24) - content: '' - display: block - left: 0 - pointer-events: none - position: absolute - right: 0 - top: 0*/ - .context .container .before .after - &:not(.selected) + &:not(.focus) > .before, > .after display: none @@ -270,77 +273,4 @@ overflow: hidden @media(max-width: 800px) - display: inline - - .irc_bold - font-weight: bold - .irc_italic - font-style: italic - .irc_underline - text-decoration: underline - - [data-irc_foreground="0"] - color: #ffffff - [data-irc_foreground="1"] - color: #000000 - [data-irc_foreground="2"] - color: #000080 - [data-irc_foreground="3"] - color: #008000 - [data-irc_foreground="4"] - color: #ff0000 - [data-irc_foreground="5"] - color: #800000 - [data-irc_foreground="6"] - color: #800080 - [data-irc_foreground="7"] - color: #ffa500 - [data-irc_foreground="8"] - color: #ffff00 - [data-irc_foreground="9"] - color: #00ff00 - [data-irc_foreground="10"] - color: #008080 - [data-irc_foreground="11"] - color: #00ffff - [data-irc_foreground="12"] - color: #4169e1 - [data-irc_foreground="13"] - color: #ff00ff - [data-irc_foreground="14"] - color: #808080 - [data-irc_foreground="15"] - color: #c0c0c0 - - [data-irc_background="0"] - background-color: #ffffff - [data-irc_background="1"] - background-color: #000000 - [data-irc_background="2"] - background-color: #000080 - [data-irc_background="3"] - background-color: #008000 - [data-irc_background="4"] - background-color: #ff0000 - [data-irc_background="5"] - background-color: #800000 - [data-irc_background="6"] - background-color: #800080 - [data-irc_background="7"] - background-color: #ffa500 - [data-irc_background="8"] - background-color: #ffff00 - [data-irc_background="9"] - background-color: #00ff00 - [data-irc_background="10"] - background-color: #008080 - [data-irc_background="11"] - background-color: #00ffff - [data-irc_background="12"] - background-color: #4169e1 - [data-irc_background="13"] - background-color: #ff00ff - [data-irc_background="14"] - background-color: #808080 - [data-irc_background="15"] - background-color: #c0c0c0 + display: inline \ No newline at end of file diff --git a/res/css/font.sass b/res/css/_font.sass similarity index 100% rename from res/css/font.sass rename to res/css/_font.sass diff --git a/res/css/icons.sass b/res/css/_icons.sass similarity index 100% rename from res/css/icons.sass rename to res/css/_icons.sass diff --git a/res/css/_mirccolor.sass b/res/css/_mirccolor.sass new file mode 100644 index 0000000..2116826 --- /dev/null +++ b/res/css/_mirccolor.sass @@ -0,0 +1,72 @@ +.irc_bold + font-weight: bold +.irc_italic + font-style: italic +.irc_underline + text-decoration: underline + +[data-irc_foreground="0"] + color: #ffffff +[data-irc_foreground="1"] + color: #000000 +[data-irc_foreground="2"] + color: #000080 +[data-irc_foreground="3"] + color: #008000 +[data-irc_foreground="4"] + color: #ff0000 +[data-irc_foreground="5"] + color: #800000 +[data-irc_foreground="6"] + color: #800080 +[data-irc_foreground="7"] + color: #ffa500 +[data-irc_foreground="8"] + color: #ffff00 +[data-irc_foreground="9"] + color: #00ff00 +[data-irc_foreground="10"] + color: #008080 +[data-irc_foreground="11"] + color: #00ffff +[data-irc_foreground="12"] + color: #4169e1 +[data-irc_foreground="13"] + color: #ff00ff +[data-irc_foreground="14"] + color: #808080 +[data-irc_foreground="15"] + color: #c0c0c0 + +[data-irc_background="0"] + background-color: #ffffff +[data-irc_background="1"] + background-color: #000000 +[data-irc_background="2"] + background-color: #000080 +[data-irc_background="3"] + background-color: #008000 +[data-irc_background="4"] + background-color: #ff0000 +[data-irc_background="5"] + background-color: #800000 +[data-irc_background="6"] + background-color: #800080 +[data-irc_background="7"] + background-color: #ffa500 +[data-irc_background="8"] + background-color: #ffff00 +[data-irc_background="9"] + background-color: #00ff00 +[data-irc_background="10"] + background-color: #008080 +[data-irc_background="11"] + background-color: #00ffff +[data-irc_background="12"] + background-color: #4169e1 +[data-irc_background="13"] + background-color: #ff00ff +[data-irc_background="14"] + background-color: #808080 +[data-irc_background="15"] + background-color: #c0c0c0 \ No newline at end of file diff --git a/res/css/nav.sass b/res/css/_nav.sass similarity index 86% rename from res/css/nav.sass rename to res/css/_nav.sass index 7de0e91..219f60c 100644 --- a/res/css/nav.sass +++ b/res/css/_nav.sass @@ -9,14 +9,15 @@ z-index: 2 .bar - background: #0271B3 + background-color: #0271B3 z-index: 1 position: absolute top: 0 left: 0 right: 0 box-shadow: 0 -1px 0 #e0e0e0, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24) - transition: background .15s + transition: background-color .15s + will-change: background-color .container max-width: 1136px @@ -33,7 +34,6 @@ display: flex position: relative border: none - transition: background .15s background: #358dc2 border-radius: 2px padding: 0 0 0 72px @@ -41,9 +41,10 @@ flex-direction: row flex: 1 box-shadow: 0 1px 1px rgba(0, 0, 0, .06) + transition: background-color .15s &:hover - background: rgba(255, 255, 255, .3) + background-color: rgba(255, 255, 255, .3) .icon display: inline-block @@ -64,6 +65,9 @@ line-height: 100% color: #ffffff font-size: 1rem + margin-right: 8px + -webkit-appearance: textfield + -webkit-box-sizing: content-box &::-moz-placeholder color: #ffffff @@ -75,6 +79,9 @@ opacity: 1 -webkit-font-smoothing: antialiased + &::-webkit-search-decoration, &::-webkit-search-cancel-button + display: none + .actions display: flex align-items: center @@ -92,8 +99,8 @@ text-align: center @include vendor-prefix('user-select', 'none') - &:hover:before - background-color: rgba(0, 0, 0, .12) + &:before + background-color: rgba(255, 255, 255, .12) bottom: 9px content: ' ' left: 9px @@ -104,6 +111,11 @@ top: 9px z-index: -1 border-radius: 50% + opacity: 0 + transition: opacity 100ms + + &:hover:before + opacity: 1 .history top: 100% @@ -132,7 +144,7 @@ text-overflow: ellipsis white-space: nowrap - &:hover, &:focus, &.selected + &:hover, &:focus, &.focus background: rgba(0, 0, 0, 0.03) .icon diff --git a/res/css/sendercolor.sass b/res/css/_sendercolor.sass similarity index 100% rename from res/css/sendercolor.sass rename to res/css/_sendercolor.sass diff --git a/res/css/util.sass b/res/css/_util.sass similarity index 100% rename from res/css/util.sass rename to res/css/_util.sass diff --git a/res/css/oldsearch.css b/res/css/oldsearch.css deleted file mode 100644 index 2fecab7..0000000 --- a/res/css/oldsearch.css +++ /dev/null @@ -1,582 +0,0 @@ -* { - padding: 0; - margin: 0; - box-sizing: border-box; -} - -body { - background: #F2F2F2; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 81.25%; - overflow-y: scroll; -} - -section { - transition: opacity 400ms; - max-width: 1328px; - padding: 56px 6rem 8rem 6rem; - margin: 0 auto; -} - -buffer { - display: block; - margin-top: 0; - margin-bottom: 20px; - border: rgba(0, 0, 0, 0); - transition: all 400ms; -} - -buffer.selected { - background-color: #ddd; - border: rgba(0, 0, 0, .4); - padding: 20px 16px; - margin-top: 20px; - margin-left: -16px; - margin-right: -16px; -} - -buffer > article { - font-size: 13px; -} - -buffer > h2 { - border-bottom: 1px solid transparent; - border-top: 1px solid transparent; - color: #616161; - margin-top: 20px; - padding-bottom: 10px; - padding-left: 22px; - position: relative; - will-change: transform, -webkit-transform; -} - -message { - display: flex; - line-height: 24px; - padding: 12px 24px; - border-bottom: 1px solid #e5e5e5; - color: #212121; - background: #fff; - position: relative; -} - -message:not(.original) * { - opacity: .8 -} - -context:not(.selected) > .before, context:not(.selected) > .after { - display: none; -} - -context:not(.selected) inline-button { - display: none; -} - -buffer:not(.selected) context:nth-child(4)~context * { - display: none; -} - -message sender { - width: 148px; - display: inline-block; - padding: 0 24px; - font-weight: bold; - flex-shrink: 0; -} - -message time { - width: 132px; - display: inline-block; - text-align: right; - flex-shrink: 0; -} - -message .container, message content { - flex-shrink: 1; - overflow: hidden; -} - -message .container { - display: flex; -} - -message:last-child { - border-bottom: none; -} - -nav { - position: fixed; - left: 0; - right: 0; - top: 0; - height: 56px; - z-index: 2; -} - -nav .wrapper { - background: #4285f4; - padding: 0 6rem; - z-index: 1; - position: absolute; - top: 0; - left: 0; - right: 0; - box-shadow: 0 -1px 0 #e0e0e0, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24); - transition: background .15s; -} - -nav.search .wrapper { - background: #fff; -} - -nav.search input[type=text]::-moz-placeholder { - color: #ffffff; - opacity: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -nav.search input[type=text]::-webkit-input-placeholder { - color: #ffffff; - opacity: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -nav.search input[type=text]::-moz-placeholder { - color: #757575; - opacity: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -nav.search input[type=text]::-webkit-input-placeholder { - color: #757575; - opacity: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -#searchbar { - max-width: 1136px; - margin: 10px auto; - height: 36px; - display: flex; - position: relative; - border: none; - -webkit-transition: background .15s; - transition: background .15s; - background: rgba(255, 255, 255, .15); - border-radius: 2px; - padding: 0 0 0 72px; - color: #ffffff; - flex-direction: row; -} - -#searchbar label.clip { - display: inline-block; - height: 20px; - line-height: 20px; - margin: 8px 0; - background: #afb42b; - padding: 0 8px; - border-radius: 10px; - color: #ffffff; -} - -#searchbar label.clip:not(:first-of-type) { - margin-left: 8px; -} - -#searchbar label { - display: inline-block; - line-height: 36px; -} - -#searchbar input[type=text] { - display: inline-block; - flex-grow: 1; - flex-shrink: 1; - background: none; - border: none; - line-height: 100%; - color: inherit !important; -} - -#searchicon { - display: inline-block; - width: 72px; - height: 36px; - position: absolute; - text-align: center; - line-height: 36px; - color: inherit !important; - left: 0; - top: 0; -} - -#no_more img { - margin: 8rem auto 0; - display: block; -} - -#no_more h2 { - display: block; - text-align: center; - margin: 1rem; - color: rgb(113, 113, 113); - font-weight: 300; - font-size: 20pt; -} - -inline-button { - display: block; - background: rgb(255, 255, 255) none repeat scroll 0 0; - font-size: 16px; - height: 48px; - line-height: 48px; - color: rgb(113, 113, 113); - text-align: center; - font-style: italic; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - position: relative; -} - -context { - display: block; -} - -context.selected { - padding: 50px 0; - margin: 0 -20px; -} - -message:before, inline-button:before { - bottom: 0; - box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24); - content: ''; - display: block; - left: 0; - pointer-events: none; - position: absolute; - right: 0; - top: 0; -} - -message content > b { - font-weight: initial; - background-color: rgba(251, 246, 167, 0.5); -} - -section > inline-button { - margin-top: 20px; -} - -article > inline-button { - background: #f5f5f5; -} - -#searchbar:hover { - background: rgba(255, 255, 255, .25); -} - -nav.search #searchbar { - background: #f6f6f6; - color: #212121 !important; -} - -.icon { - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - font-size: 24px; - display: inline-block; - width: 1em; - height: 1em; - line-height: 1; - text-transform: none; - letter-spacing: normal; - word-wrap: normal; - white-space: nowrap; - direction: ltr; - - /* Support for all WebKit browsers. */ - -webkit-font-smoothing: antialiased; - /* Support for Safari and Chrome. */ - text-rendering: optimizeLegibility; - - /* Support for Firefox. */ - -moz-osx-font-smoothing: grayscale; - - /* Support for IE. */ - font-feature-settings: 'liga'; -} - -.circular { - -webkit-animation: rotate 2s linear infinite; - animation: rotate 2s linear infinite; - height: 5rem; - -webkit-transform-origin: center center; - transform-origin: center center; - width: 5rem; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; -} - -.path { - stroke-dasharray: 1, 200; - stroke-dashoffset: 0; - -webkit-animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; - animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; - stroke-linecap: round; -} - -@-webkit-keyframes rotate { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes rotate { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@-webkit-keyframes dash { - 0% { - stroke-dasharray: 1, 200; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 89, 200; - stroke-dashoffset: -35px; - } - 100% { - stroke-dasharray: 89, 200; - stroke-dashoffset: -124px; - } -} - -@keyframes dash { - 0% { - stroke-dasharray: 1, 200; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 89, 200; - stroke-dashoffset: -35px; - } - 100% { - stroke-dasharray: 89, 200; - stroke-dashoffset: -124px; - } -} - -@-webkit-keyframes color { - 100%, - 0% { - stroke: #d62d20; - } - 40% { - stroke: #0057e7; - } - 66% { - stroke: #008744; - } - 80%, - 90% { - stroke: #ffa700; - } -} - -@keyframes color { - 100%, - 0% { - stroke: #d62d20; - } - 40% { - stroke: #0057e7; - } - 66% { - stroke: #008744; - } - 80%, - 90% { - stroke: #ffa700; - } -} - -#autocomplete { - top: 100%; - max-width: 1328px; - margin: auto; - padding: 0 6rem; - transform: translateY(-200%); - transition: transform 400ms; - position: relative; -} - -#actions { - position: absolute; - height: 56px; - z-index: 8; - right: 0; - display: flex; - align-items: center; - justify-content: flex-end; - -moz-user-select: -moz-none; - padding-left: 30px; - padding-right: 30px; -} - -#actions > * { - height: 30px; - line-height: normal; - position: relative; - padding: 3px; - cursor: pointer; - color: #fff; - transition: all .15s; -} - -nav.search #actions > * { - color: #000; - opacity: 0.6; -} - -#actions > *:hover:before { - background-color: rgba(0, 0, 0, .12); - bottom: -4px; - content: ' '; - left: -4px; - margin: auto; - padding: 4px; - position: absolute; - right: -4px; - top: -4px; - z-index: -1; - border-radius: 50%; -} - -#autocomplete.active { - transform: translateY(0); -} - -#autocomplete ul { - list-style-type: none; - margin: 0; - padding: 6px 0; - background: #fff; - box-shadow: 0 -1px 0 #e0e0e0, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24); -} - -#autocomplete li { - cursor: pointer; - line-height: 36px; - overflow: hidden; - padding: 0 24px; - text-overflow: ellipsis; - white-space: nowrap; -} - -#autocomplete p { - cursor: default; - line-height: 36px; - overflow: hidden; - padding: 0 24px; - text-overflow: ellipsis; - white-space: nowrap; - font-style: italic; - color: #646464; -} - -#autocomplete li .icon { - border-radius: 12px; - height: 24px; - margin-right: 24px; - vertical-align: middle; - width: 24px; - display: inline-block; - background-size: cover; - opacity: 0.6; -} - -#autocomplete li:hover, #autocomplete li:focus, #autocomplete li.selected { - background: rgba(0, 0, 0, 0.03); -} - -#results { - transition: opacity 400ms; -} - -#results.hidden { - opacity: 0; -} - -#modal-background { - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - display: none; -} - -#results.hidden + #modal-background { - display: block; -} - -@media(max-width: 800px) { - #results { - padding-left: 2rem; - padding-right: 2rem; - } - - nav .wrapper, #autocomplete { - padding-left: 2rem; - padding-right: 4rem; - } - - #actions { - padding-left: 1rem; - padding-right: 1rem; - } - - message { - padding-left: 1rem; - padding-right: 1rem; - padding-bottom: 2rem; - } - - message sender { - padding: 0; - width: initial; - } - - message sender:after { - content: ":"; - margin-right: 8px; - } - - message .container { - display: block; - } - - message time { - position: absolute; - right: 8px; - bottom: 8px; - width: initial; - font-style: italic; - color: #777; - } -} \ No newline at end of file diff --git a/res/css/search.css b/res/css/search.css index a5a16cf..b5d1857 100644 --- a/res/css/search.css +++ b/res/css/search.css @@ -61,14 +61,15 @@ body { height: 56px; z-index: 2; } .nav .bar { - background: #0271B3; + background-color: #0271B3; z-index: 1; position: absolute; top: 0; left: 0; right: 0; box-shadow: 0 -1px 0 #e0e0e0, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24); - transition: background 0.15s; } + transition: background-color 0.15s; + will-change: background-color; } .nav .bar .container { max-width: 1136px; margin: 0 auto; @@ -83,16 +84,16 @@ body { display: flex; position: relative; border: none; - transition: background 0.15s; background: #358dc2; border-radius: 2px; padding: 0 0 0 72px; color: #ffffff; flex-direction: row; flex: 1; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06); } + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06); + transition: background-color 0.15s; } .nav .bar .container .searchBar:hover { - background: rgba(255, 255, 255, 0.3); } + background-color: rgba(255, 255, 255, 0.3); } .nav .bar .container .searchBar .icon { display: inline-block; width: 72px; @@ -110,7 +111,10 @@ body { border: none; line-height: 100%; color: #ffffff; - font-size: 1rem; } + font-size: 1rem; + margin-right: 8px; + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; } .nav .bar .container .searchBar .search::-moz-placeholder { color: #ffffff; opacity: 1; @@ -119,6 +123,8 @@ body { color: #ffffff; opacity: 1; -webkit-font-smoothing: antialiased; } + .nav .bar .container .searchBar .search::-webkit-search-decoration, .nav .bar .container .searchBar .search::-webkit-search-cancel-button { + display: none; } .nav .bar .container .actions { display: flex; align-items: center; @@ -138,8 +144,8 @@ body { -ms-user-select: none; -o-user-select: none; user-select: none; } - .nav .bar a:hover:before { - background-color: rgba(0, 0, 0, 0.12); + .nav .bar a:before { + background-color: rgba(255, 255, 255, 0.12); bottom: 9px; content: " "; left: 9px; @@ -149,7 +155,11 @@ body { right: 9px; top: 9px; z-index: -1; - border-radius: 50%; } + border-radius: 50%; + opacity: 0; + transition: opacity 100ms; } + .nav .bar a:hover:before { + opacity: 1; } .nav .history { top: 100%; max-width: 1136px; @@ -174,7 +184,7 @@ body { padding: 0 24px; text-overflow: ellipsis; white-space: nowrap; } - .nav .history ul li:hover, .nav .history ul li:focus, .nav .history ul li.selected { + .nav .history ul li:hover, .nav .history ul li:focus, .nav .history ul li.focus { background: rgba(0, 0, 0, 0.03); } .nav .history ul li .icon { border-radius: 12px; @@ -259,6 +269,111 @@ body { [data-sendercolor="f"] { color: #3176b3; } +.irc_bold { + font-weight: bold; } + +.irc_italic { + font-style: italic; } + +.irc_underline { + text-decoration: underline; } + +[data-irc_foreground="0"] { + color: #ffffff; } + +[data-irc_foreground="1"] { + color: #000000; } + +[data-irc_foreground="2"] { + color: #000080; } + +[data-irc_foreground="3"] { + color: #008000; } + +[data-irc_foreground="4"] { + color: #ff0000; } + +[data-irc_foreground="5"] { + color: #800000; } + +[data-irc_foreground="6"] { + color: #800080; } + +[data-irc_foreground="7"] { + color: #ffa500; } + +[data-irc_foreground="8"] { + color: #ffff00; } + +[data-irc_foreground="9"] { + color: #00ff00; } + +[data-irc_foreground="10"] { + color: #008080; } + +[data-irc_foreground="11"] { + color: #00ffff; } + +[data-irc_foreground="12"] { + color: #4169e1; } + +[data-irc_foreground="13"] { + color: #ff00ff; } + +[data-irc_foreground="14"] { + color: #808080; } + +[data-irc_foreground="15"] { + color: #c0c0c0; } + +[data-irc_background="0"] { + background-color: #ffffff; } + +[data-irc_background="1"] { + background-color: #000000; } + +[data-irc_background="2"] { + background-color: #000080; } + +[data-irc_background="3"] { + background-color: #008000; } + +[data-irc_background="4"] { + background-color: #ff0000; } + +[data-irc_background="5"] { + background-color: #800000; } + +[data-irc_background="6"] { + background-color: #800080; } + +[data-irc_background="7"] { + background-color: #ffa500; } + +[data-irc_background="8"] { + background-color: #ffff00; } + +[data-irc_background="9"] { + background-color: #00ff00; } + +[data-irc_background="10"] { + background-color: #008080; } + +[data-irc_background="11"] { + background-color: #00ffff; } + +[data-irc_background="12"] { + background-color: #4169e1; } + +[data-irc_background="13"] { + background-color: #ff00ff; } + +[data-irc_background="14"] { + background-color: #808080; } + +[data-irc_background="15"] { + background-color: #c0c0c0; } + .results { max-width: 1136px; padding: 56px 2rem 4rem 2rem; @@ -273,47 +388,44 @@ body { display: block; margin-top: 0; margin-bottom: 20px; - border: transparent; - transition: all 400ms; } + position: relative; } .results .buffer .title { border-bottom: 1px solid transparent; border-top: 1px solid transparent; color: #616161; margin: 0; - background: #f2f2f2; padding: 20px 6px 10px 22px; position: sticky; top: 55px; z-index: 1; transition: all 400ms; - will-change: transform, -webkit-transform; display: flex; } .results .buffer .title:before { content: ""; display: block; - position: absolute; left: -16px; - width: 16px; + right: -16px; top: 0; bottom: 0; - background: #f2f2f2; } + background-color: #f2f2f2; + position: absolute; + z-index: -2; } +@media(max-width: 800px) { + .results .buffer .title:before { + left: 0; + right: 0; } } .results .buffer .title:after { content: ""; display: block; - position: absolute; - right: -16px; - width: 16px; + left: 0; + right: 0; top: 0; bottom: 0; - background: #f2f2f2; } -@media(max-width: 800px) { - .results .buffer .title { - margin-left: 0; - margin-right: 0; - padding-left: 22px; - padding-right: 6px; } - .results .buffer .title:after, .results .buffer .title:before { - display: none; } } + background-color: transparent; + transition: margin-left 400ms, margin-right 400ms, background-color 400ms; + will-change: margin-left, margin-right, background-color; + position: absolute; + z-index: -1; } .results .buffer .title h2 { flex: 1; line-height: 36px; } @@ -340,7 +452,8 @@ body { -moz-user-select: none; text-decoration: none; box-sizing: border-box; - font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; } + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + will-change: background; } .results .buffer .title button:hover { background-color: rgba(0, 0, 0, 0.06); } .results .buffer .title button:after { @@ -360,31 +473,43 @@ body { background-size: 0 0; opacity: 0.2; transition: 0s; } - .results .buffer .title button:before { - content: "Open"; } - .results .buffer:not(.selected) .context:nth-child(4) ~ .context { + .results .buffer .title button .open { + display: initial; } + .results .buffer .title button .close { + display: none; } + .results .buffer:not(.focus) .context:nth-child(4) ~ .context { display: none; } - .results .buffer.selected { - background-color: #ddd; - border: rgba(0, 0, 0, 0.4); - padding: 0 16px 20px; - margin: 0 -16px; } -@media(max-width: 800px) { - .results .buffer.selected { - margin: 0 0 20px 0; - padding: 0; } } - .results .buffer.selected .title { - margin: 0 -16px; - padding: 20px 22px 10px 38px; - background: #ddd; } -@media(max-width: 800px) { - .results .buffer.selected .title { - margin: 0; - padding: 20px 6px 10px 22px; } } - .results .buffer.selected .title button:before { - content: "Close"; } - .results .buffer.selected .container > .inline-button { - height: 48px; } + .results .buffer:before { + content: ""; + display: block; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: transparent; + transition: margin-left 400ms, margin-right 400ms, margin-bottom 400ms, background-color 400ms; + will-change: margin-left, margin-right, margin-bottom, background-color; + position: absolute; + z-index: -1; } + .results .buffer.focus:before { + margin-bottom: -16px; + background-color: #ddd; } +@media(min-width: 800px) { + .results .buffer.focus:before { + margin-left: -16px; + margin-right: -16px; } } + .results .buffer.focus .title:after { + background-color: #ddd; } +@media(min-width: 800px) { + .results .buffer.focus .title:after { + margin-left: -16px; + margin-right: -16px; } } + .results .buffer.focus .title button .open { + display: none; } + .results .buffer.focus .title button .close { + display: initial; } + .results .buffer.focus .container > .inline-button { + height: 48px; } .results .buffer .container { font-size: 13px; } .results .buffer .container > .inline-button { @@ -405,20 +530,10 @@ body { position: sticky; bottom: 0; box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24); - transition: height 400ms; - /*&:before - * bottom: 0 - * box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24) - * content: '' - * display: block - * left: 0 - * pointer-events: none - * position: absolute - * right: 0 - * top: 0 */ } - .results .buffer .container .context:not(.selected) > .before, .results .buffer .container .context:not(.selected) > .after { + transition: height 400ms; } + .results .buffer .container .context:not(.focus) > .before, .results .buffer .container .context:not(.focus) > .after { display: none; } - .results .buffer .container .context:not(.selected) > .inline-button { + .results .buffer .container .context:not(.focus) > .inline-button { display: none; } .results .buffer .container .context .message { display: flex; @@ -492,75 +607,5 @@ body { @media(max-width: 800px) { .results .buffer .container .context .message .container .content { display: inline; } } - .results .buffer .container .context .message .container .content .irc_bold { - font-weight: bold; } - .results .buffer .container .context .message .container .content .irc_italic { - font-style: italic; } - .results .buffer .container .context .message .container .content .irc_underline { - text-decoration: underline; } - .results .buffer .container .context .message .container .content [data-irc_foreground="0"] { - color: #ffffff; } - .results .buffer .container .context .message .container .content [data-irc_foreground="1"] { - color: #000000; } - .results .buffer .container .context .message .container .content [data-irc_foreground="2"] { - color: #000080; } - .results .buffer .container .context .message .container .content [data-irc_foreground="3"] { - color: #008000; } - .results .buffer .container .context .message .container .content [data-irc_foreground="4"] { - color: #ff0000; } - .results .buffer .container .context .message .container .content [data-irc_foreground="5"] { - color: #800000; } - .results .buffer .container .context .message .container .content [data-irc_foreground="6"] { - color: #800080; } - .results .buffer .container .context .message .container .content [data-irc_foreground="7"] { - color: #ffa500; } - .results .buffer .container .context .message .container .content [data-irc_foreground="8"] { - color: #ffff00; } - .results .buffer .container .context .message .container .content [data-irc_foreground="9"] { - color: #00ff00; } - .results .buffer .container .context .message .container .content [data-irc_foreground="10"] { - color: #008080; } - .results .buffer .container .context .message .container .content [data-irc_foreground="11"] { - color: #00ffff; } - .results .buffer .container .context .message .container .content [data-irc_foreground="12"] { - color: #4169e1; } - .results .buffer .container .context .message .container .content [data-irc_foreground="13"] { - color: #ff00ff; } - .results .buffer .container .context .message .container .content [data-irc_foreground="14"] { - color: #808080; } - .results .buffer .container .context .message .container .content [data-irc_foreground="15"] { - color: #c0c0c0; } - .results .buffer .container .context .message .container .content [data-irc_background="0"] { - background-color: #ffffff; } - .results .buffer .container .context .message .container .content [data-irc_background="1"] { - background-color: #000000; } - .results .buffer .container .context .message .container .content [data-irc_background="2"] { - background-color: #000080; } - .results .buffer .container .context .message .container .content [data-irc_background="3"] { - background-color: #008000; } - .results .buffer .container .context .message .container .content [data-irc_background="4"] { - background-color: #ff0000; } - .results .buffer .container .context .message .container .content [data-irc_background="5"] { - background-color: #800000; } - .results .buffer .container .context .message .container .content [data-irc_background="6"] { - background-color: #800080; } - .results .buffer .container .context .message .container .content [data-irc_background="7"] { - background-color: #ffa500; } - .results .buffer .container .context .message .container .content [data-irc_background="8"] { - background-color: #ffff00; } - .results .buffer .container .context .message .container .content [data-irc_background="9"] { - background-color: #00ff00; } - .results .buffer .container .context .message .container .content [data-irc_background="10"] { - background-color: #008080; } - .results .buffer .container .context .message .container .content [data-irc_background="11"] { - background-color: #00ffff; } - .results .buffer .container .context .message .container .content [data-irc_background="12"] { - background-color: #4169e1; } - .results .buffer .container .context .message .container .content [data-irc_background="13"] { - background-color: #ff00ff; } - .results .buffer .container .context .message .container .content [data-irc_background="14"] { - background-color: #808080; } - .results .buffer .container .context .message .container .content [data-irc_background="15"] { - background-color: #c0c0c0; } /*# sourceMappingURL=search.css.map */ diff --git a/res/css/search.css.map b/res/css/search.css.map index 4ac5e9e..45fd867 100644 --- a/res/css/search.css.map +++ b/res/css/search.css.map @@ -1,7 +1,7 @@ { "version": 3, -"mappings": "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", -"sources": ["icons.sass","font.sass","search.sass","nav.sass","util.sass","sendercolor.sass","content.sass"], +"mappings": "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", +"sources": ["_icons.sass","_font.sass","search.sass","_nav.sass","_util.sass","_sendercolor.sass","_mirccolor.sass","_content.sass"], "names": [], "file": "search.css" } \ No newline at end of file diff --git a/res/js/app.js b/res/js/app.js index 58a7a79..a942d8b 100644 --- a/res/js/app.js +++ b/res/js/app.js @@ -1,15 +1,16 @@ +const statehandler = new StateHandler(); + class App { constructor() { this.navigation = new Navigation(); - this.urlBar = new UrlBar(); this.buffers = []; this.loadingQuery = 0; this.render(); - this.urlBar.addEventListener("search", (query) => this.search(query)); this.navigation.addEventListener("search", (query) => this.search(query)); - this.urlBar.init(); + statehandler.addEventListener("update", (query) => this.search(query)); + statehandler.init(); } render() { @@ -26,9 +27,11 @@ class App { search(query) { this.clear(); + this.navigation.input.blur(); + this.navigation.historyView.resetNavigation(); this.navigation.historyView.add(new HistoryElement(query)); this.navigation.input.value = query; - this.urlBar.set(query); + statehandler.replace(query); if (query.trim() === "") return; @@ -58,7 +61,7 @@ class App { clearAll() { this.clear(); this.navigation.historyView.clear(); - this.urlBar.clear(); + statehandler.clear(); } insert(buffer) { diff --git a/res/js/component/buffer.js b/res/js/component/buffer.js index b5aa4ad..8803f08 100644 --- a/res/js/component/buffer.js +++ b/res/js/component/buffer.js @@ -22,24 +22,32 @@ class Buffer extends Component { $$c.appendChild($$e); $$c.appendChildren(this.name); var $$g = document.createElement('button'); - $$g.addEventListener('click', () => this.selected()); + $$g.addEventListener('click', () => this.focus()); $$b.appendChild($$g); + var $$h = document.createElement('span'); + $$h.setAttribute('class', 'open'); + $$g.appendChild($$h); + $$h.appendChildren(translation.buffer.open); + var $$j = document.createElement('span'); + $$j.setAttribute('class', 'close'); + $$g.appendChild($$j); + $$j.appendChildren(translation.buffer.close); $$a.appendChildren(this.insertContainer = function () { - var $$i = document.createElement('div'); - $$i.setAttribute('class', 'container'); - $$i.appendChildren((this.loadMoreBtn = new LoadMore(translation.results.show_more, this.loadMore)).elem); - return $$i; + var $$m = document.createElement('div'); + $$m.setAttribute('class', 'container'); + $$m.appendChildren((this.loadMoreBtn = new LoadMore(translation.results.show_more, this.loadMore)).elem); + return $$m; }.call(this)); return $$a; }.call(this); } loadMore() { } - selected(isSelected) { - if (isSelected === undefined) - isSelected = !this.elem.classList.contains('selected'); - this.elem.classList.toggle('selected', isSelected); - this.sendEvent('expanded', isSelected); + focus(focus) { + if (focus === undefined) + focus = !this.elem.classList.contains('focus'); + this.elem.classList.toggle('focus', focus); + this.sendEvent('focus', focus); } insert(context) { this.insertContainer.insertBefore(context.elem, this.loadMoreBtn.elem); diff --git a/res/js/component/buffer.jsx b/res/js/component/buffer.jsx index afa3000..8e30c72 100644 --- a/res/js/component/buffer.jsx +++ b/res/js/component/buffer.jsx @@ -16,7 +16,10 @@ class Buffer extends Component { <div className="buffer"> <div className="title"> <h2>{this.network} – {this.name}</h2> - <button onClick={() => this.selected()}/> + <button onClick={() => this.focus()}> + <span className="open">{translation.buffer.open}</span> + <span className="close">{translation.buffer.close}</span> + </button> </div> {this.insertContainer = ( <div className="container"> @@ -31,12 +34,12 @@ class Buffer extends Component { /* load data */ } - selected(isSelected) { - if (isSelected === undefined) - isSelected = !this.elem.classList.contains("selected"); + focus(focus) { + if (focus === undefined) + focus = !this.elem.classList.contains("focus"); - this.elem.classList.toggle("selected", isSelected); - this.sendEvent("expanded", isSelected); + this.elem.classList.toggle("focus", focus); + this.sendEvent("focus", focus); } insert(context) { diff --git a/res/js/component/history.js b/res/js/component/history.js index a744951..f7d4969 100644 --- a/res/js/component/history.js +++ b/res/js/component/history.js @@ -55,25 +55,30 @@ class HistoryView { } navigateBefore() { if (this.elements[this.index]) - this.elements[this.index].selected(false); + this.elements[this.index].focus(false); this.index++; this.index %= this.elements.length; if (this.elements[this.index]) - this.elements[this.index].selected(true); + this.elements[this.index].focus(true); console.log(this.index); } navigateLater() { if (this.elements[this.index]) - this.elements[this.index].selected(false); + this.elements[this.index].focus(false); this.index--; if (this.index < 0) this.index = -1; else this.index %= this.elements.length; if (this.elements[this.index]) - this.elements[this.index].selected(true); + this.elements[this.index].focus(true); console.log(this.index); } + resetNavigation() { + if (this.elements[this.index]) + this.elements[this.index].focus(false); + this.index = -1; + } truncate() { while (this.elements.length > HISTORY_MAX_LENGTH) this.list.removeChild(this.elements.shift().elem); diff --git a/res/js/component/history.jsx b/res/js/component/history.jsx index d1219ab..0a9c089 100644 --- a/res/js/component/history.jsx +++ b/res/js/component/history.jsx @@ -68,20 +68,20 @@ class HistoryView { navigateBefore() { if (this.elements[this.index]) - this.elements[this.index].selected(false); + this.elements[this.index].focus(false); this.index++; this.index %= this.elements.length; if (this.elements[this.index]) - this.elements[this.index].selected(true); + this.elements[this.index].focus(true); console.log(this.index); } navigateLater() { if (this.elements[this.index]) - this.elements[this.index].selected(false); + this.elements[this.index].focus(false); this.index--; if (this.index < 0) @@ -90,11 +90,18 @@ class HistoryView { this.index %= this.elements.length; if (this.elements[this.index]) - this.elements[this.index].selected(true); + this.elements[this.index].focus(true); console.log(this.index); } + resetNavigation() { + if (this.elements[this.index]) + this.elements[this.index].focus(false); + + this.index = -1; + } + truncate() { while (this.elements.length > HISTORY_MAX_LENGTH) this.list.removeChild(this.elements.shift().elem); diff --git a/res/js/component/historyelement.js b/res/js/component/historyelement.js index 11f165f..d08ccb1 100644 --- a/res/js/component/historyelement.js +++ b/res/js/component/historyelement.js @@ -2,8 +2,9 @@ class HistoryElement { constructor(query) { this.query = query; this.render(); - this.elem.addEventListener('click', () => { - window.location.href = '#' + encodeURIComponent(this.query); + this.elem.addEventListener('mousedown', event => { + statehandler.replace(this.query); + event.preventDefault(); }); } render() { @@ -18,7 +19,7 @@ class HistoryElement { return $$a; }.call(this); } - selected(value) { - this.elem.classList.toggle('selected', value); + focus(focus) { + this.elem.classList.toggle('focus', focus); } } \ No newline at end of file diff --git a/res/js/component/historyelement.jsx b/res/js/component/historyelement.jsx index 567c1d6..047c6d7 100644 --- a/res/js/component/historyelement.jsx +++ b/res/js/component/historyelement.jsx @@ -3,8 +3,9 @@ class HistoryElement { this.query = query; this.render(); - this.elem.addEventListener("click", () => { - window.location.href = "#"+encodeURIComponent(this.query); + this.elem.addEventListener("mousedown", (event) => { + statehandler.replace(this.query); + event.preventDefault(); }); } @@ -17,7 +18,7 @@ class HistoryElement { ); } - selected(value) { - this.elem.classList.toggle("selected", value); + focus(focus) { + this.elem.classList.toggle("focus", focus); } } \ No newline at end of file diff --git a/res/js/component/nav.js b/res/js/component/nav.js index bdbb562..7244de9 100644 --- a/res/js/component/nav.js +++ b/res/js/component/nav.js @@ -31,10 +31,13 @@ class Navigation extends Component { var $$h = document.createElement('input'); $$h.setAttribute('class', 'search'); $$h.setAttribute('placeholder', translation.search); - $$h.setAttribute('type', 'text'); + $$h.setAttribute('type', 'search'); $$h.setAttribute('autoComplete', 'off'); $$h.addEventListener('focus', () => this.elem.classList.add('focus')); - $$h.addEventListener('blur', () => this.elem.classList.remove('focus')); + $$h.addEventListener('blur', () => { + this.elem.classList.remove('focus'); + this.historyView.resetNavigation(); + }); $$h.addEventListener('keydown', e => this.inputKeyDown(e)); return $$h; }.call(this)); @@ -63,12 +66,12 @@ class Navigation extends Component { event.preventDefault(); break; case 'Enter': - this.sendEvent('search', [this.historyView.index === -1 ? this.input.value : this.historyView.elements[this.historyView.index].query]); - this.input.blur(); + statehandler.replace(this.historyView.index === -1 ? this.input.value : this.historyView.elements[this.historyView.index].query); event.preventDefault(); break; case 'Escape': this.input.blur(); + this.historyView.resetNavigation(); event.preventDefault(); break; } diff --git a/res/js/component/nav.jsx b/res/js/component/nav.jsx index 9c659a0..2837f5d 100644 --- a/res/js/component/nav.jsx +++ b/res/js/component/nav.jsx @@ -19,10 +19,13 @@ class Navigation extends Component { <div className="searchBar"> <p className="icon">search</p> {this.input = ( - <input className="search" placeholder={translation.search} type="text" + <input className="search" placeholder={translation.search} type="search" autoComplete="off" onFocus={() => this.elem.classList.add("focus")} - onBlur={() => this.elem.classList.remove("focus")} + onBlur={() => { + this.elem.classList.remove("focus"); + this.historyView.resetNavigation(); + }} onKeyDown={(e) => this.inputKeyDown(e)} /> )} @@ -49,12 +52,12 @@ class Navigation extends Component { event.preventDefault(); break; case "Enter": - this.sendEvent("search", [this.historyView.index === -1 ? this.input.value : this.historyView.elements[this.historyView.index].query]); - this.input.blur(); + statehandler.replace(this.historyView.index === -1 ? this.input.value : this.historyView.elements[this.historyView.index].query); event.preventDefault(); break; case "Escape": this.input.blur(); + this.historyView.resetNavigation(); event.preventDefault(); break; } diff --git a/res/js/component/urlbar.js b/res/js/component/urlbar.js deleted file mode 100644 index 76108a0..0000000 --- a/res/js/component/urlbar.js +++ /dev/null @@ -1,24 +0,0 @@ -class UrlBar extends Component { - constructor() { - super(); - window.addEventListener("hashchange", (e) => { - this.sendEvent("search", [this.get()]); - }); - } - - set(value) { - window.location.hash = value; - } - - init() { - this.sendEvent("search", [this.get()]); - } - - get() { - return decodeURIComponent(window.location.hash.substr(1)); - } - - clear() { - this.set(""); - } -} \ No newline at end of file diff --git a/res/js/util/statehandler.js b/res/js/util/statehandler.js new file mode 100644 index 0000000..3115fd9 --- /dev/null +++ b/res/js/util/statehandler.js @@ -0,0 +1,34 @@ +class StateHandler extends Component { + constructor() { + super(); + window.addEventListener("hashchange", () => { + this.sendEvent("update", [this.state]); + }); + } + + init() { + this.update(); + } + + replace(value) { + history.replaceState(null, null, "#"+encodeURIComponent(value)); + this.update(); + } + + push(value) { + history.pushState(null, null, "#"+encodeURIComponent(value)); + this.update(); + } + + update() { + const oldState = this.state; + this.state = decodeURIComponent(window.location.hash.substr(1)); + + if (this.state !== oldState) + this.sendEvent("update", [this.state]); + } + + clear() { + this.replace(""); + } +} \ No newline at end of file diff --git a/res/search.js b/res/search.js deleted file mode 100644 index 6091cae..0000000 --- a/res/search.js +++ /dev/null @@ -1,441 +0,0 @@ -/* -var state = { - query: "", - selected_history_entry: -1, - buffers: {}, - open: [] -}; - -var bind_click = function (elem, handler) { - elem.unbind("mousedown"); - elem.unbind("mouseup"); - - elem.mousedown(function (e) { - getSelection().removeAllRanges(); - }); - - elem.mouseup(function (e) { - if (e.which === 1 && getSelection().isCollapsed) - handler(e); - }); -}; - -var make_select_buffer = function (buffer, id) { - state.buffers[buffer].selected = true; - apply_selection(); -}; - -var make_select_context = function (buffer, id) { - state.buffers[buffer].selected = true; - state.buffers[buffer].contexts[id].selected = true; - apply_selection(); -}; - -var search_history = { - max_size: 8, - get: function () { - return (JSON.parse(localStorage.getItem('history')) || []).reverse(); - }, - clear: function () { - localStorage.removeItem('history'); - }, - push: function (query) { - if (!query) - return; - - var tmp = search_history.get().filter(function (x) { - return x != query; - }).reverse(); - tmp.push(query); - localStorage.setItem('history', JSON.stringify(tmp.slice(Math.max(0, tmp.length - search_history.max_size)))); - } -}; - -var render = { - overview: function (ids) { - $("#results").children().remove(); - - for (var i = 0; i < ids.length; i++) { - var buffer = ids[i]; - - if (!state.buffers.hasOwnProperty(buffer.bufferid)) { - var ctx = 0; - state.buffers[buffer.bufferid] = { - id: buffer.bufferid, - name: buffer.buffername, - network: buffer.networkname, - selected: false, - contexts: buffer.messages.map(function (message) { - return { - "selected": false, - "original": message, - "before": [], - "after": [], - "buffer": buffer.bufferid, - "id": ctx++ - }; - }), - offset: 0 - } - } - - render.buffer.update(buffer.bufferid); - } - - if (ids.length == 0) - render.no_more(); - }, - buffer: { - full: function (buffer) { - return ( - "<buffer id='buffer" + buffer.id + "' data-bufferid='" + buffer.id + "'>" + ( - "<h2>" + buffer.network + " – " + buffer.name + "</h2>" + - "<article>" + ( - buffer.contexts.map(render.context.full).join("") + - "<inline-button class='load_more'>" + translation.results.load_more + "</inline-button>" - ) + "</article>" - ) + "</buffer>" - ) - }, - update: function (id) { - $("#buffer" + id).unbind(); - var renderedBuffer = render.buffer.full(state.buffers[id]); - if ($("#buffer" + id).length) - $("#buffer" + id).replaceWith(renderedBuffer); - else - $("#results").append(renderedBuffer); - - render.buffer.attach($("#buffer" + id)); - }, - attach: function (elem) { - elem.unbind(); - var id = elem.data("bufferid"); - bind_click(elem, make_toggle_buffer(id)); - bind_click(elem.find(".load_more"), function (e) { - e.stopPropagation(); - - if (state.buffers[id].selected || state.buffers[id].contexts.length <= 4) - load.buffer.more(id); - - deselect_buffers(id); - state.open.push(make_toggle_buffer(id)); - state.buffers[id].selected = true; - }); - state.buffers[id].contexts.forEach(function (context) { - var ctx = elem.find("#context" + context.id); - if (ctx.length) { - ctx.unbind(); - render.context.attach(ctx); - } - }) - } - }, - context: { - full: function (context) { - return ( - "<context id='context" + context.id + "' data-contextid='" + context.id + "' data-bufferid='" + context.buffer + "'>" + ( - "<div class='before'>" +( - "<inline-button class='load_before'>" + translation.context.load_earlier + "</inline-button>" + - context.before.map(render.message).join("") - ) + "</div>" + - render.message(context.original, true) + - "<div class='after'>" +( - context.after.map(render.message).join("") - + "<inline-button class='load_after'>" + translation.context.load_later + "</inline-button>" - ) + "</div>" - ) + "</context>" - ) - }, - attach: function (elem) { - elem.unbind(); - var id = elem.data("contextid"); - var bufferid = elem.data("bufferid"); - if (state.buffers[bufferid] === undefined) { - console.log("Undefined buffer: " + bufferid); - } - - bind_click(elem, function (e) { - e.stopPropagation(); - }); - $("#message" + state.buffers[bufferid].contexts[id].original.messageid).unbind(); - bind_click($("#message" + state.buffers[bufferid].contexts[id].original.messageid), make_toggle_context(bufferid, id)); - bind_click(elem.find(".load_before"), function (e) { - e.stopPropagation(); - - load.context.earlier(bufferid, id, 5); - }); - bind_click(elem.find(".load_after"), function (e) { - e.stopPropagation(); - - load.context.later(bufferid, id, 5); - }); - } - }, - message: function (message, highlight, preview) { - var content = preview === true ? message.preview : message.message; - return ( - "<message id='message" + message.messageid + "' data-messageid='" + message.messageid + "' " + (highlight === true ? "class='original'" : "") + ">" + ( - "<time>" + new Date(message.time.replace(" ", "T") + "Z").toLocaleString() + "</time>" + - "<div class='container'>" + ( - "<sender style='color: " + sendercolor(message.sender.split("!")[0]) + "'>" + message.sender.split("!")[0] + "</sender>" + - "<content>" + content + "</content>" - ) + "</div>" - ) + "</message>" - ) - }, - history: { - all: function (history) { - var container = $("#autocomplete ul"); - container.children().remove(); - - for (var i = 0; i < history.length; i++) { - container.append(render.history.item(i, history[i])); - render.history.attach($("#history" + i)); - } - if (history.length == 0) { - container.append("<p>" + translation.history.error_unavailable + "</p>"); - } - "<li id='history" + id + "' data-query='" + btoa(query) + "'>" + ( - "<span class='icon'>history</span>" + - query - ) + "</li>" - }, - item: function (id, query) { - return ( - "<li id='history" + id + "' data-query='" + btoa(query) + "'>" + ( - "<span class='icon'>history</span>" + - query - ) + "</li>" - ) - }, - attach: function (elem) { - elem.unbind(); - var query = atob(elem.data("query")); - bind_click(elem, function (e) { - e.stopPropagation(); - - $("#q").val(query); - search(); - }); - } - }, - loader: function () { - $("#results").append(" <div class='loader'><svg class='circular' viewBox='25 25 50 50'><circle class='path' cx='50' cy='50' r='20' fill='none' stroke-width='4' stroke-miterlimit='10'/></svg></div>"); - }, - no_more: function () { - $("#results").append("<div id='no_more'><img src='res/error.png'><h2>No results</h2></div>"); - } -}; - -var load = { - overview: function (query, callback) { - $.post("web/search/?" + $.param({"query": query}), callback, "json"); - }, - buffer: { - raw: function (query, buffer, offset, limit, callback) { - $.post("web/searchbuffer/?" + $.param({ - "query": query, - "buffer": buffer, - "offset": offset, - "limit": limit - }), callback, "json"); - }, - more: function (id, limit) { - if (limit === undefined) - limit = 10; - - load.buffer.raw(state.query, id, state.buffers[id].contexts.length, limit, function (data) { - var ctx = state.buffers[id].contexts.length; - state.buffers[id].contexts = state.buffers[id].contexts.concat(data.map(function (message) { - return { - "selected": false, - "original": message, - "before": [], - "after": [], - "buffer": id, - "id": ctx++ - }; - })); - }); - } - }, - context: { - raw: function (msg, buffer, before, after, callback) { - $.post("web/backlog/?" + $.param({ - "anchor": msg, - "buffer": buffer, - "before": before, - "after": after - }), callback, "json"); - }, - earlier: function (bufferid, contextid, amount) { - var buffer = state.buffers[bufferid]; - var context = buffer.contexts[contextid]; - var earliest = (context.before[0] || context.original).messageid; - load.context.raw(earliest, bufferid, amount, 0, function (messages) { - var newmsgs = messages.slice(0, messages.length - 1); - context.before = newmsgs.concat(context.before); - $("#buffer"+bufferid+" #context"+contextid+" .before .load_before").after(newmsgs.map(render.message).join("")) - }) - }, - later: function (bufferid, contextid, amount) { - var buffer = state.buffers[bufferid]; - var context = buffer.contexts[contextid]; - var latest = (context.after[context.after.length - 1] || context.original).messageid; - load.context.raw(latest, bufferid, 0, amount, function (messages) { - var newmsgs = messages.slice(1); - context.after = context.after.concat(newmsgs); - $("#buffer"+bufferid+" #context"+contextid+" .after .load_after").before(newmsgs.map(render.message).join("")) - }) - } - } -}; - -var search = function () { - var results = $("#results"); - results.children().remove(); - $("#q").blur(); - bind_click(results, deselect_buffers); - state = { - "query": $("#q").val(), - "selected_history_entry": -1, - "buffers": {}, - "open": [] - }; - window.location = "#" + encodeURIComponent(state.query); - if (state.query) { - render.loader(); - load.overview(state.query, render.overview); - search_history.push(state.query); - render.history.all(search_history.get()); - } -}; - -var deselect_buffers = function (except) { - $.each(state.buffers, function (key, buffer) { - if (key !== except && buffer.selected) { - buffer.selected = false; - unselect_contexts(key); - } - }); - state.open = []; -}; - -var unselect_contexts = function (bufferid) { - state.buffers[bufferid].contexts.forEach(function (context) { - context.selected = false; - }) -}; - -var make_toggle_buffer = function (id) { - return function (e) { - console.log("toggle buffer " + id); - - e.stopPropagation(); - - if (state.buffers[id].selected) { - deselect_buffers(); - state.open.pop(); - state.buffers[id].selected = false; - } else { - deselect_buffers(id); - state.open.push(make_toggle_buffer(id)); - state.buffers[id].selected = true; - } - apply_selection(); - } -}; - -var make_toggle_context = function (buffer, id) { - return function (e) { - console.log("toggle_context " + buffer + " " + id); - - e.stopPropagation(); - - var context = state.buffers[buffer].contexts[id]; - if (context.selected) { - unselect_contexts(buffer); - context.selected = false; - state.open.pop(); - } else { - deselect_buffers(buffer); - unselect_contexts(buffer); - if (!state.buffers[buffer].selected) { - state.open.push(make_toggle_buffer(buffer)); - state.buffers[buffer].selected = true; - } - context.selected = true; - state.open.push(make_toggle_context(buffer, id)); - if (context.before.length === 0) load.context.earlier(buffer, id, 5); - if (context.after.length === 0) load.context.later(buffer, id, 5); - } - apply_selection(); - } -}; - -var apply_selection = function () { - $.each(state.buffers, function (key, buffer) { - $("#buffer"+key).toggleClass("selected", state.buffers[key].selected); - state.buffers[key].contexts.map(function (ctx) { - $("#buffer"+key+" #context"+ctx.id).toggleClass("selected", ctx.selected); - }) - }); -}; - -var hashChange = function () { - var input = $("#q"); - var newquery = decodeURIComponent(location.hash.substr(1)); - if (input.val() != newquery) { - input.val(newquery); - search(); - } -}; - -var init = function () { - $("body").on("click", function (e) { - if (state.open.length) - state.open[state.open.length - 1](e); - }); - - $("nav").on("click", function (e) { - e.stopPropagation(); - }); - - $(window).on("hashchange", hashChange); - - - - $("#q").on("focus", function () { - $("#autocomplete").addClass("active"); - $("#results").addClass("hidden"); - $("nav").addClass("search"); - }); - $("#q").on("blur", function () { - $("#autocomplete").removeClass("active"); - $("#results").removeClass("hidden"); - $("nav").removeClass("search"); - }); - - hashChange(); - render.history.all(search_history.get()); -}; -init(); - - $("#q").on("keypress", function (e) { - const key = e.which || e.keyCode; - if (key === 13) { - search(); - } - - const index_before = historyHandler.index; - if (key === 40) { - historyHandler.navigateBefore(); - } else if (key === 38) { - historyHandler.navigateLater(); - } - if (index_before != historyHandler.index) { - $("[data-history="+index_before+"]").removeClass("selected"); - $("[data-history="+historyHandler.index+"]").addClass("selected"); - } - }); -*/ \ No newline at end of file diff --git a/templates/search.phtml b/templates/search.phtml index 0491b77..6ee22ff 100644 --- a/templates/search.phtml +++ b/templates/search.phtml @@ -24,6 +24,7 @@ <script src="res/js/util/component.js"></script> <script src="res/js/util/mirccolorhandler.js"></script> <script src="res/js/util/sendercolorhandler.js"></script> +<script src="res/js/util/statehandler.js"></script> <script src="res/js/component/nohistoryelement.js"></script> <script src="res/js/component/historyelement.js"></script> <script src="res/js/component/history.js"></script> @@ -33,7 +34,6 @@ <script src="res/js/component/loadmore.js"></script> <script src="res/js/component/context.js"></script> <script src="res/js/component/buffer.js"></script> -<script src="res/js/component/urlbar.js"></script> <script src="res/js/app.js"></script> </body> </html> diff --git a/translations/de.json b/translations/de.json index 190ad83..f093b2c 100644 --- a/translations/de.json +++ b/translations/de.json @@ -1,24 +1,28 @@ { + "buffer": { + "open": "Öffnen", + "close": "Schließen" + }, "results": { - "show_more": "Show More Results", - "load_more": "Load More Results" + "show_more": "Mehr Suchergebnisse anzeigen", + "load_more": "Mehr Suchergebnisse laden" }, "context": { - "load_later": "Load Later Context", - "load_earlier": "Load Earlier Context" + "load_later": "Ältere Nachrichten Laden", + "load_earlier": "Neuere Nachrichten Laden" }, "history": { - "error_unavailable": "No search history available" + "error_unavailable": "Keine vorherigen Suchbegriffe vorhanden" }, "login": { - "description": "You have to login to access this page", + "description": "Sie müssen sich einloggen, um diese Seite zu nutzen", "username": "Benutzername", "password": "Passwort", "submit": "Anmelden", "message": { - "success_logout": "You have successfully logged out.", - "error_invalid": "Invalid username/password combination.", - "error_unauthed": "You need to be logged in to access this page." + "success_logout": "Sie haben sich erfolgreich abgemeldet.", + "error_invalid": "Falsche Benutzername/Passwort Kombination", + "error_unauthed": "Sie müssen angemeldet sein, um diese Seite zu nutzen." } }, "search": "Suchen", diff --git a/translations/en.json b/translations/en.json index 1d63a05..f115dba 100644 --- a/translations/en.json +++ b/translations/en.json @@ -1,4 +1,8 @@ { + "buffer": { + "open": "Open", + "close": "Close" + }, "results": { "show_more": "Show More Results", "load_more": "Load More Results" -- GitLab