diff --git a/compiler/dist/discord/main.js b/compiler/dist/discord/main.js new file mode 100644 index 0000000..1024cf0 --- /dev/null +++ b/compiler/dist/discord/main.js @@ -0,0 +1 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=44)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){t.exports=!n(6)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){"use strict";var r=n(0),o=n(4),i=n(12),u=n(26),s=n(8),a=n(6),l=n(31).f,c=n(14).f,f=n(11).f,p=n(36).trim,d=r.Number,v=d,h=d.prototype,y="Number"==i(n(40)(h)),_="trim"in String.prototype,m=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,r,o,i=(e=_?e.trim():p(e,3)).charCodeAt(0);if(43===i||45===i){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var u,a=e.slice(2),l=0,c=a.length;lo)return NaN;return parseInt(a,r)}}return+e};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof d&&(y?a(function(){h.valueOf.call(n)}):"Number"!=i(n))?u(new v(m(e)),n,d):m(e)};for(var g,b=n(1)?l(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;b.length>w;w++)o(v,g=b[w])&&!o(d,g)&&f(d,g,c(v,g));d.prototype=h,h.constructor=d,n(25)(r,"Number",d)}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(2);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(30),o=n(16);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(2);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(5),o=n(17),i=n(8),u=Object.defineProperty;e.f=n(1)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(28);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(29),o=n(15),i=n(7),u=n(8),s=n(4),a=n(17),l=Object.getOwnPropertyDescriptor;e.f=n(1)?l:function(t,e){if(t=i(t),e=u(e,!0),a)try{return l(t,e)}catch(t){}if(s(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){t.exports=!n(1)&&!n(6)(function(){return 7!=Object.defineProperty(n(18)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(2),o=n(0).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e,n){var r=n(4),o=n(7),i=n(32)(!1),u=n(21)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),a=0,l=[];for(n in s)n!=u&&r(s,n)&&l.push(n);for(;e.length>a;)r(s,n=e[a++])&&(~i(l,n)||l.push(n));return l}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(22)("keys"),o=n(23);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(9),o=n(0),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(35)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){var r=n(11),o=n(15);t.exports=n(1)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(0),o=n(24),i=n(4),u=n(23)("src"),s=n(38),a=(""+s).split("toString");n(9).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var l="function"==typeof n;l&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(l&&(i(n,u)||o(n,u,t[e]?""+t[e]:a.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[u]||s.call(this)})},function(t,e,n){var r=n(2),o=n(27).set;t.exports=function(t,e,n){var i,u=e.constructor;return u!==n&&"function"==typeof u&&(i=u.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},function(t,e,n){var r=n(2),o=n(5),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(13)(Function.call,n(14).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(12);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(19),o=n(10).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){var r=n(7),o=n(33),i=n(34);t.exports=function(t){return function(e,n,u){var s,a=r(e),l=o(a.length),c=i(u,l);if(t&&n!=n){for(;l>c;)if((s=a[c++])!=s)return!0}else for(;l>c;c++)if((t||c in a)&&a[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var r=n(20),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(20),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},function(t,e){t.exports=!1},function(t,e,n){var r=n(37),o=n(16),i=n(6),u=n(39),s="["+u+"]",a=RegExp("^"+s+s+"*"),l=RegExp(s+s+"*$"),c=function(t,e,n){var o={},s=i(function(){return!!u[t]()||"​…"!="​…"[t]()}),a=o[t]=s?e(f):u[t];n&&(o[n]=a),r(r.P+r.F*s,"String",o)},f=c.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(a,"")),2&e&&(t=t.replace(l,"")),t};t.exports=c},function(t,e,n){var r=n(0),o=n(9),i=n(24),u=n(25),s=n(13),a=function(t,e,n){var l,c,f,p,d=t&a.F,v=t&a.G,h=t&a.S,y=t&a.P,_=t&a.B,m=v?r:h?r[e]||(r[e]={}):(r[e]||{}).prototype,g=v?o:o[e]||(o[e]={}),b=g.prototype||(g.prototype={});for(l in v&&(n=e),n)f=((c=!d&&m&&void 0!==m[l])?m:n)[l],p=_&&c?s(f,r):y&&"function"==typeof f?s(Function.call,f):f,m&&u(m,l,f,t&a.U),g[l]!=f&&i(g,l,p),y&&b[l]!=f&&(b[l]=f)};r.core=o,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e,n){t.exports=n(22)("native-function-to-string",Function.toString)},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,n){var r=n(5),o=n(41),i=n(10),u=n(21)("IE_PROTO"),s=function(){},a=function(){var t,e=n(18)("iframe"),r=i.length;for(e.style.display="none",n(43).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write(" diff --git a/compiler/src/core/loadable/Loadable.js b/compiler/src/core/loadable/Loadable.js new file mode 100644 index 0000000..92606b1 --- /dev/null +++ b/compiler/src/core/loadable/Loadable.js @@ -0,0 +1,50 @@ +export default class { + constructor() { + this.reset() + } + + get() { + return this.data + } + isSuccess() { + return this.loaded && this.error == undefined + } + display() { + return this.loaded ? (this.error || this.data) : 'Loading...' + } + + reset() { + this.loaded = false + this.data = undefined + this.error = undefined + this.loadingMore = false + } + success(data) { + this.loaded = true + this.data = data || {} + } + fail(error) { + this.loaded = true + this.error = error || 'Failed' + } + + load(promise, then, reset = true) { + if(reset) + this.reset() + + promise + .then(res => this.success(then(res))) + .catch(err => { + this.fail(err) + throw err + }) + } + + loadMore(promise, then) { + this.loadingMore = true + promise.then(res => { + then(res, this.data, this) + this.loadingMore = false + }) + } +} \ No newline at end of file diff --git a/compiler/src/core/loadable/loadableBlock.vue b/compiler/src/core/loadable/loadableBlock.vue new file mode 100644 index 0000000..afe3721 --- /dev/null +++ b/compiler/src/core/loadable/loadableBlock.vue @@ -0,0 +1,22 @@ + + + diff --git a/compiler/src/core/loadable/loadableInline.vue b/compiler/src/core/loadable/loadableInline.vue new file mode 100644 index 0000000..cf43ac1 --- /dev/null +++ b/compiler/src/core/loadable/loadableInline.vue @@ -0,0 +1,21 @@ + + + diff --git a/compiler/src/discord/client.vue b/compiler/src/discord/client.vue new file mode 100644 index 0000000..a99006f --- /dev/null +++ b/compiler/src/discord/client.vue @@ -0,0 +1,98 @@ + + + \ No newline at end of file diff --git a/compiler/src/discord/main.vue b/compiler/src/discord/main.vue new file mode 100644 index 0000000..07f5373 --- /dev/null +++ b/compiler/src/discord/main.vue @@ -0,0 +1,84 @@ + + + \ No newline at end of file diff --git a/compiler/src/discord/message.vue b/compiler/src/discord/message.vue new file mode 100644 index 0000000..3ea9988 --- /dev/null +++ b/compiler/src/discord/message.vue @@ -0,0 +1,22 @@ + + + diff --git a/compiler/src/mastodon/client.vue b/compiler/src/mastodon/client.vue index 3249981..a5b17ff 100644 --- a/compiler/src/mastodon/client.vue +++ b/compiler/src/mastodon/client.vue @@ -1,19 +1,19 @@ @@ -21,15 +21,21 @@ import { timerMinin } from '../core/fromNow.vue' import serviceEmiterVue from '../core/serviceEmiter.vue' +import Lists from '../core/Lists' + import statusVue from './status.vue' import notificationVue from './notification.vue' +import Loadable from '../core/loadable/Loadable' +import loadableBlockVue from '../core/loadable/loadableBlock.vue' + export default { extends: serviceEmiterVue, mixins: [ timerMinin ], components: { status: statusVue, - notification: notificationVue + notification: notificationVue, + loadableBlock: loadableBlockVue }, props: { server: String, @@ -45,62 +51,55 @@ export default { return { rest: axios.create({ baseURL: `https://${this.server}/api/v1/`, - timeout: this.timeout, - headers: { - Authorization: "Bearer " + this.token - } + headers: { Authorization: 'Bearer ' + this.token }, + timeout: this.timeout }), - statues: [], - notifications: [], - now: Date.now(), - loadingOlder: false + statues: new Loadable(), + notifications: new Loadable() }; }, + computed: { + hasNotifications() { + return this.notifications.isSuccess() && this.notifications.get().length > 0 + } + }, methods: { + get(path, options = {}) { + return this.catchEmit(this.rest.get(path, { params: { limit: this.buffer, ...options } })) + }, + post(path, options = {}) { + return this.catchEmit(this.rest.post(path, options)) + }, + getTimeline(options) { + return this.get('/timelines/home', options) + }, onScroll(event) { - if(!this.loadingOlder && event.target.scrollHeight - event.target.clientHeight - event.target.scrollTop - 100 < 0) { - this.loadingOlder = true - this.catchEmit(this.rest - .get("/timelines/home", { params: { limit: this.buffer, - max_id: this.statues[this.statues.length - 1].id } })) - .then(res => { - this.statues.push.apply(this.statues, res.data) - this.loadingOlder = false - }) + if(!this.statues.loadingMore && event.target.scrollHeight - event.target.clientHeight - event.target.scrollTop - 100 < 0) { + this.statues.loadMore( + this.getTimeline({ max_id: Lists.last(this.statues.get()).id }), + (res, statues) => Lists.pushAll(statues, res.data) + ) } else if(event.target.scrollTop < 20) { - this.statues.splice(this.buffer) + this.statues.get().splice(this.buffer) } }, - removeStatus(id) { - for (var i = this.statues.length - 1; i >= 0; i--) { - if (this.statues[i].id === id) { - this.statues.splice(i, 1) - break - } - } - }, - removeNotification(id) { - for (var i = this.notifications.length - 1; i >= 0; i--) { - if (this.notifications[i].id === id) { - this.notifications.splice(i, 1) - break - } - } + removeById(ls, id) { + Lists.removeFirst(ls, e => e.id === id) }, showStatus(status) { return (!status.in_reply_to_id || this.reply) && (!status.reblog || this.reblog) }, onStatusMark(action) { - this.catchEmit(this.rest.post(`/statuses/${action.id}/${action.type}`)) + this.post(`/statuses/${action.id}/${action.type}`) .then(action.callback) }, onNotificationDismiss(id) { - this.catchEmit(this.rest.post('/notifications/dismiss', { id: id })) - .then(() => this.removeNotification(id)) + this.post('/notifications/dismiss', { id: id }) + .then(() => this.removeById(this.notifications.get(), id)) }, onNotificationsClear() { - this.catchEmit(this.rest.post('/notifications/clear')) - .then(() => this.notifications.splice(0, this.notifications.length)) + this.post('/notifications/clear') + .then(() => Lists.clear(this.notifications.get())) }, setupStream() { const ws = new WebSocket( @@ -110,35 +109,37 @@ export default { event = JSON.parse(event.data) const payload = JSON.parse(event.payload) switch (event.event) { - case "update": - this.statues.unshift(payload) + case 'update': + this.statues.get().unshift(payload) break - case "notification": - this.notifications.unshift(payload) + case 'notification': + this.notifications.get().unshift(payload) break - case "delete": - this.removeStatus(payload) + case 'delete': + this.removeById(this.statues.get(), id) break } }; ws.onerror = this.emitError ws.onclose = () => { this.emitError( - "Mastodon stream disconnected !" + - (this.reconnect ? " Reconnecting..." : "") + 'Mastodon stream disconnected !' + + (this.reconnect ? ' Reconnecting...' : '') ) if (this.reconnect) setTimeout(() => this.setupStream(), this.timeout) } } }, created() { - this.catchEmit(this.rest.get("/timelines/home", { params: { limit: this.buffer } })) - .then(res => this.statues.push.apply(this.statues, res.data)) + this.statues.load( + this.getTimeline({}), + res => res.data) - this.catchEmit(this.rest.get("/notifications", { params: { limit: this.buffer } })) - .then(res => this.notifications.push.apply(this.notifications, res.data)) + this.notifications.load( + this.get('/notifications'), + res => res.data) this.setupStream() } diff --git a/compiler/src/mastodon/main.vue b/compiler/src/mastodon/main.vue index c71d32a..1272604 100644 --- a/compiler/src/mastodon/main.vue +++ b/compiler/src/mastodon/main.vue @@ -3,29 +3,32 @@ service-header(:emit="emit") template(#title) | Mastodon: - span(v-html="parseEmojis(account.display_name, account.emojis)") - | {{ server ? '@' + server : '' }} + loadable-inline(:loadable="account") + template(#success) + span(v-html="parseEmojis(account.data.display_name, account.data.emojis) + '@' + server") template(#settings) setting-boolean(:id="'reconnect'" :title="'Reconnect'" :value="reconnect" @change="saveOptionCouple") setting-boolean(:id="'reblog'" :title="'Show reblogs'" :value="reblog" @change="saveOptionCouple") setting-boolean(:id="'reply'" :title="'Show replies'" :value="reply" @change="saveOptionCouple") setting-int(:id="'buffer'" :title="'Buffer size'" :value="buffer" @change="saveOptionCouple") setting-boolean(:id="'showMedia'" :title="'Show medias'" :value="showMedia" @change="saveOptionCouple") - client(v-if="server && token" v-bind="$props") - .auth(v-else) - form(@submit.prevent="makeAuth") - p - label(for="server") Server: - input#server(v-model="newServer" required) - p - label(for="token") Token: - input#token(v-model="newToken" required) - p - input(type="submit" value="Connect") + loadable-block.service-content(:loadable="account") + template(#success) + client(v-bind="$props") + template(#error) + form(@submit.prevent="makeAuth") + p + label(for="server") Server: + input#server(v-model="newServer" required) + p + label(for="token") Token: + input#token(v-model="newToken" required) + p + input(type="submit" value="Connect") \ No newline at end of file diff --git a/compiler/src/nextcloud-news/main.vue b/compiler/src/nextcloud-news/main.vue index 81d9282..cd06e7d 100644 --- a/compiler/src/nextcloud-news/main.vue +++ b/compiler/src/nextcloud-news/main.vue @@ -1,39 +1,43 @@ \ No newline at end of file diff --git a/compiler/src/openweathermap/main.vue b/compiler/src/openweathermap/main.vue index 449209d..52ca132 100644 --- a/compiler/src/openweathermap/main.vue +++ b/compiler/src/openweathermap/main.vue @@ -3,40 +3,40 @@ service-header(:emit="emit") template(#title) OpenWeatherMap template(#settings) - setting-string(:id="'token'" :title="'Token'" :value="token" @change="saveOptionCouple") setting-int(:id="'update'" :title="'Update interval'" :value="update" @change="saveOptionCouple") setting-int(:id="'forecastLimit'" :title="'Forecast limit'" :value="forecastLimit" @change="saveOptionCouple") p.setting button(@click="showAdd = true") Add city - template(v-if="weathers.length > 0 || cities.length == 0") - .list - .weather(v-for="(city, id) in weathers" :class="{ selected: selected == id }" @click.stop.prevent="makeSelect(id)") - .main(v-for="main in city.weather") - p {{ main.description }} - .ic - img(:src="`https://openweathermap.org/img/w/${main.icon}.png`" :alt="main.main") - span.remove(@click.stop.prevent="removeCity(id)") ❌ - .header - | {{ city.name }}  - img.icon(:src="`https://openweathermap.org/images/flags/${city.sys.country.toLowerCase()}.png`" :alt="city.sys.country" :title="city.sys.country") - .data - | {{ city.main.temp }}°C ─ {{ city.main.humidity }}% - input.weather(v-show="showAdd" placeholder="city id" @keyup.enter="addCity(parseInt($event.target.value))") - .forecast - chart.chart(v-if="forecast" :chartData="forecastChart") - .service-loader(v-else) - .service-loader(v-else) + loadable-block(:loadable="weathers") + template(#success) + .list + weather(v-for="(city, id) in weathers.get()" :key="id" :selected="selectedId == id" + :city="city" @select="makeSelect(id)" @remove="removeCity(id)") + input.weather(v-show="showAdd" placeholder="city id" @keyup.enter="addCity(parseInt($event.target.value))") + loadable-block(:loadable="forecast").forecast + template(#success) + chart.chart(:chartData="forecastChart") + template(#error) + form(@submit.prevent="makeAuth") + p + label(for="token") Token: + input#token(v-model="newToken" required) + p + input(type="submit" value="Connect") \ No newline at end of file diff --git a/compiler/src/openweathermap/weather.vue b/compiler/src/openweathermap/weather.vue new file mode 100644 index 0000000..d54bebe --- /dev/null +++ b/compiler/src/openweathermap/weather.vue @@ -0,0 +1,22 @@ + + + diff --git a/index.html b/index.html index fcfd89a..1d3c686 100644 --- a/index.html +++ b/index.html @@ -13,6 +13,7 @@ + diff --git a/main.css b/main.css index 827c2ca..f1ab2d1 100644 --- a/main.css +++ b/main.css @@ -75,6 +75,13 @@ input, select, button { #services > div { overflow: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } #services > div .service-header .title, #services > div .service-header .settings { @@ -95,6 +102,10 @@ input, select, button { width: 1.2em; } +#services > div .service-content { + overflow: hidden; +} + #services .service-loader { display: inline-block; width: 64px; @@ -136,20 +147,11 @@ input, select, button { } } -.mastodon { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - .mastodon .client { display: -webkit-box; display: -ms-flexbox; display: flex; + height: 100%; overflow-y: auto; } @@ -251,10 +253,14 @@ input, select, button { float: right; } -.openweathermap { +.openweathermap .loadable-block { + overflow: hidden; display: -webkit-box; display: -ms-flexbox; display: flex; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; @@ -284,6 +290,7 @@ input, select, button { -ms-flex: 1; flex: 1; overflow: hidden; + height: 100%; } .openweathermap .forecast .chart { @@ -357,16 +364,6 @@ input, select, button { margin-top: -10px; } -.nextcloud-news { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - .nextcloud-news .unreaded { overflow-y: auto; } diff --git a/main.css.map b/main.css.map index 0a76904..6032ab8 100644 --- a/main.css.map +++ b/main.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "main.sass" ], diff --git a/main.sass b/main.sass index 8bcb933..5042522 100644 --- a/main.sass +++ b/main.sass @@ -70,6 +70,8 @@ input, select, button justify-items: stretch & > div overflow: auto + display: flex + flex-direction: column .service-header .title, .settings @include tile @@ -80,6 +82,8 @@ input, select, button .settings .position float: right width: 1.2em + .service-content + overflow: hidden .service-loader display: inline-block width: 64px @@ -101,10 +105,9 @@ input, select, button transform: rotate(360deg) .mastodon - display: flex - flex-direction: column .client display: flex + height: 100% overflow-y: auto .header @include tile @@ -167,8 +170,11 @@ input, select, button float: right .openweathermap - display: flex - flex-direction: column + .loadable-block + overflow: hidden + display: flex + flex: 1 + flex-direction: column .list display: flex flex-wrap: wrap @@ -178,6 +184,7 @@ input, select, button .forecast flex: 1 overflow: hidden + height: 100% .chart position: relative height: 100% @@ -216,8 +223,6 @@ input, select, button margin-top: -10px .nextcloud-news - display: flex - flex-direction: column .unreaded overflow-y: auto .news