Commit dc06cb1de81eb3375ac9fa5e35df122d752f81d8
Merge pull request #202 from ssbc/styles_remix
styles remixmix irving authored on 6/23/2018, 12:06:32 AM
GitHub committed on 6/23/2018, 12:06:32 AM
Parent: b755e93b29216ff4f3cc1b14472292cca8524023
Parent: d07e0d2417f507c7cffdae3ae46476122eaba98b
Files changed
app/html/app.mcss | changed |
app/html/scroller.mcss | changed |
app/page/public.js | changed |
app/page/settings.js | changed |
app/styles/mcss/hypertabs.mcss | changed |
app/styles/mcss/markdown.mcss | changed |
app/styles/mcss/app-theme-vars.mcss | added |
app/styles/mcss/scrollbar.mcss | added |
app/styles/mixins.js | changed |
message/html/layout/default.js | changed |
message/html/layout/default.mcss | changed |
message/html/layout/mini.mcss | changed |
message/html/meta/likes.js | deleted |
message/html/action/likes.js | added |
package-lock.json | changed |
package.json | changed |
app/html/app.mcss | ||
---|---|---|
@@ -1,11 +1,13 @@ | ||
1 | 1 … | App { |
2 … | + background: var(--app-border-background) | |
2 | 3 … | position: absolute |
3 | 4 … | |
4 | 5 … | top: 0 |
5 | 6 … | bottom: 0 |
6 | 7 … | left: 0 |
7 | 8 … | right: 0 |
9 … | + | |
8 | 10 … | overflow: hidden |
9 | 11 … | min-height: 0px |
10 | 12 … | } |
11 | 13 … |
app/html/scroller.mcss | ||
---|---|---|
@@ -5,9 +5,8 @@ | ||
5 | 5 … | |
6 | 6 … | overflow-y: scroll |
7 | 7 … | overflow-x: auto |
8 | 8 … | |
9 | - padding-top: 1rem | |
10 | 9 … | |
11 | 10 … | display: grid |
12 | 11 … | justify-content: stretch |
13 | 12 … | align-content: start |
@@ -18,8 +17,12 @@ | ||
18 | 17 … | |
19 | 18 … | box-sizing: border-box |
20 | 19 … | } |
21 | 20 … | |
21 … | + section.top { | |
22 … | + margin-top: 1rem | |
23 … | + } | |
24 … | + | |
22 | 25 … | section.content { |
23 | 26 … | div { |
24 | 27 … | border-bottom: solid 1px gainsboro |
25 | 28 … | } |
app/page/public.js | ||
---|---|---|
@@ -1,11 +1,11 @@ | ||
1 | 1 … | const nest = require('depnest') |
2 | 2 … | const { h } = require('mutant') |
3 | 3 … | const pull = require('pull-stream') |
4 | 4 … | const Scroller = require('pull-scroll') |
5 … | +const next = require('pull-next-query') | |
6 … | +const merge = require('lodash/merge') | |
5 | 7 … | |
6 | -const next = require('../../junk/next-stepper') | |
7 | - | |
8 | 8 … | exports.gives = nest({ |
9 | 9 … | 'app.html.menuItem': true, |
10 | 10 … | 'app.page.public': true |
11 | 11 … | }) |
@@ -13,9 +13,10 @@ | ||
13 | 13 … | exports.needs = nest({ |
14 | 14 … | 'app.html.filter': 'first', |
15 | 15 … | 'app.html.scroller': 'first', |
16 | 16 … | 'app.sync.goTo': 'first', |
17 | - 'feed.pull.public': 'first', | |
17 … | + // 'feed.pull.public': 'first', | |
18 … | + 'sbot.pull.stream': 'first', | |
18 | 19 … | 'message.html.compose': 'first', |
19 | 20 … | 'message.html.render': 'first' |
20 | 21 … | }) |
21 | 22 … | |
@@ -40,8 +41,16 @@ | ||
40 | 41 … | }) |
41 | 42 … | const { filterMenu, filterDownThrough, filterUpThrough, resetFeed } = api.app.html.filter(draw) |
42 | 43 … | const { container, content } = api.app.html.scroller({ prepend: [composer, filterMenu] }) |
43 | 44 … | |
45 … | + const createStream = (opts) => api.sbot.pull.stream(server => { | |
46 … | + const _opts = merge({}, opts, { | |
47 … | + query: [{$filter: { timestamp: {$gt: 0} }}] | |
48 … | + }) | |
49 … | + | |
50 … | + return next(server.query.read, _opts, ['timestamp']) | |
51 … | + }) | |
52 … | + | |
44 | 53 … | // TODO : build a pull-stream which has seperate state + rendering |
45 | 54 … | function draw () { |
46 | 55 … | resetFeed({ container, content }) |
47 | 56 … | |
@@ -51,15 +60,15 @@ | ||
51 | 60 … | } |
52 | 61 … | |
53 | 62 … | // TODO - change to use ssb-query, streamed by publish time |
54 | 63 … | pull( |
55 | - next(api.feed.pull.public, {old: false, limit: 100, live: true}, ['timestamp']), | |
64 … | + createStream({old: false, limit: 100, live: true}), | |
56 | 65 … | filterUpThrough(), |
57 | 66 … | Scroller(container, content, render, true, false) |
58 | 67 … | ) |
59 | 68 … | |
60 | 69 … | pull( |
61 | - next(api.feed.pull.public, {reverse: true, limit: 100, live: false}, ['timestamp']), | |
70 … | + createStream({reverse: true, limit: 100, live: false}), | |
62 | 71 … | filterDownThrough(), |
63 | 72 … | Scroller(container, content, render, false, false) |
64 | 73 … | ) |
65 | 74 … | } |
app/page/settings.js | ||
---|---|---|
@@ -24,9 +24,8 @@ | ||
24 | 24 … | 'ev-click': () => api.app.sync.goTo({ page: 'settings' }) |
25 | 25 … | }, '/settings') |
26 | 26 … | } |
27 | 27 … | |
28 | - | |
29 | 28 … | function settingsPage (location) { |
30 | 29 … | var page = h('SettingsPage', { title: '/settings' }, [ |
31 | 30 … | h('div.container', [ |
32 | 31 … | h('h1', 'Settings'), |
@@ -40,9 +39,9 @@ | ||
40 | 39 … | }) |
41 | 40 … | ]) |
42 | 41 … | ]) |
43 | 42 … | |
44 | - var { container, content } = api.app.html.scroller({ prepend: page }) | |
45 | - container.title = 'Settings' | |
43 … | + var { container } = api.app.html.scroller({ prepend: page }) | |
44 … | + container.title = '/settings' | |
46 | 45 … | return container |
47 | 46 … | } |
48 | 47 … | } |
app/styles/mcss/hypertabs.mcss | ||
---|---|---|
@@ -1,73 +1,47 @@ | ||
1 | 1 … | Hypertabs { |
2 | 2 … | display: flex |
3 | 3 … | flex-direction: column |
4 | 4 … | |
5 | - height: 100% /* needed to stop scroller blowing out */ | |
5 … | + top: var(--app-border-width) | |
6 … | + bottom: var(--app-border-width) | |
7 … | + left: var(--app-border-width) | |
8 … | + right: var(--app-border-width) | |
6 | 9 … | |
10 … | + height: initial | |
11 … | + | |
7 | 12 … | nav { |
8 | 13 … | display: flex |
9 | 14 … | |
10 | - background: linear-gradient(to bottom, #efefef, #e5e5e5) | |
15 … | + background: none | |
11 | 16 … | |
12 | 17 … | section.tabs { |
13 | - padding: .5rem 0 0 .5rem | |
18 … | + min-width: 0 | |
14 | 19 … | |
15 | 20 … | flex-grow: 1 |
16 | 21 … | display: flex |
17 | - min-width: 0 | |
18 | 22 … | |
19 | 23 … | div.tab { |
20 | 24 … | flex-grow: 1 |
21 | 25 … | |
22 | - display: flex | |
23 | - align-items: center | |
24 | - justify-content: space-between | |
25 | - | |
26 | 26 … | min-width: 3.5rem |
27 | 27 … | font-size: .9rem |
28 | - background-color: #efefef | |
28 … | + background: rgba(0, 0, 0, 0) | |
29 … | + | |
29 | 30 … | overflow: hidden |
30 | 31 … | |
31 | 32 … | padding: 0 |
32 | - margin-left: .3rem | |
33 | 33 … | border: none |
34 … | + margin: 0 .3rem 0 0 | |
34 | 35 … | |
35 | - :hover { | |
36 | - background-color: #f8f8f8 | |
37 | - a.close { | |
38 | - visibility: visible | |
39 | - } | |
40 | - } | |
36 … | + display: flex | |
37 … | + align-items: center | |
38 … | + justify-content: space-between | |
41 | 39 … | |
42 | - -selected { | |
43 | - color: #222 | |
44 | - background-color: #fff | |
45 | - | |
46 | - :hover { | |
47 | - background-color: #fff | |
48 | - } | |
49 | - | |
50 | - a.link { | |
51 | - text-decoration: none | |
52 | - max-width: calc(100% - 2rem) | |
53 | - } | |
54 | - a.close { | |
55 | - visibility: visible | |
56 | - } | |
57 | - } | |
58 | - | |
59 | - -notify { | |
60 | - background-color: orange; | |
61 | - } | |
62 | - | |
63 | - | |
64 | 40 … | a { |
65 | - color: #666 | |
66 | - | |
67 | - :hover { | |
68 | - text-decoration: none | |
69 | - } | |
41 … | + color: var(--app-border-color) | |
42 … | + outline: none | |
43 … | + :hover { text-decoration: none } | |
70 | 44 … | } |
71 | 45 … | |
72 | 46 … | a.link { |
73 | 47 … | flex-grow: 1 |
@@ -78,14 +52,17 @@ | ||
78 | 52 … | white-space: nowrap |
79 | 53 … | text-overflow: ellipsis |
80 | 54 … | |
81 | 55 … | padding: .45rem 0 .45rem .6rem |
56 … | + /* padding: 0 0 var(--app-border-width) .6rem */ | |
82 | 57 … | } |
83 | 58 … | |
84 | 59 … | a.close { |
85 | 60 … | visibility: hidden |
86 | 61 … | font-family: monospace |
62 … | + font-weight: 600 | |
87 | 63 … | line-height: 1rem |
64 … | + | |
88 | 65 … | width: .9rem |
89 | 66 … | height: .9rem |
90 | 67 … | /* border-radius: 1rem */ |
91 | 68 … | |
@@ -94,30 +71,69 @@ | ||
94 | 71 … | display: flex |
95 | 72 … | justify-content: center |
96 | 73 … | |
97 | 74 … | :hover { |
98 | - background: #aaaaaa | |
99 | - color: #fff | |
100 | - font-weight: 600 | |
75 … | + background: var(--page-background) | |
76 … | + color: var(--page-color) | |
101 | 77 … | } |
102 | 78 … | } |
103 | 79 … | |
80 … | + :hover { | |
81 … | + background: var(--app-border-background-mid) | |
82 … | + a.link { color: var(--app-border-color) } | |
83 … | + a.close { visibility: visible } | |
84 … | + transition: all .2s ease-in | |
85 … | + } | |
86 … | + | |
87 … | + -selected { | |
88 … | + color: var(--page-color) | |
89 … | + background: var(--page-background) | |
90 … | + | |
91 … | + a.link { | |
92 … | + color: var(--page-color) | |
93 … | + text-decoration: none | |
94 … | + max-width: calc(100% - 2rem) | |
95 … | + cursor: default | |
96 … | + } | |
97 … | + a.close { | |
98 … | + visibility: visible | |
99 … | + color: var(--page-color) | |
100 … | + | |
101 … | + :hover { | |
102 … | + } | |
103 … | + } | |
104 … | + | |
105 … | + :hover { | |
106 … | + background: var(--page-background) | |
107 … | + a.link { color: var(--page-color) } | |
108 … | + transition: none | |
109 … | + } | |
110 … | + } | |
111 … | + | |
112 … | + -notify { | |
113 … | + background-color: orange; | |
114 … | + } | |
115 … | + | |
104 | 116 … | } |
105 | 117 … | |
106 | 118 … | } |
107 | 119 … | |
108 | 120 … | div.navExtra { |
109 | - padding-top: .2rem | |
121 … | + padding-bottom: var(--app-border-width) | |
110 | 122 … | display: flex |
111 | 123 … | align-items: center |
112 | 124 … | } |
113 | 125 … | } |
114 | 126 … | |
115 | 127 … | section.content { |
116 | - display: flex | |
128 … | + background-color: var(--page-background) | |
129 … | + // this brings the scroll-bar in | |
130 … | + padding: .5rem .4rem | |
117 | 131 … | |
118 | 132 … | height: 100% /* needed to stop making nav weird */ |
119 | 133 … | |
134 … | + display: flex | |
135 … | + | |
120 | 136 … | div.page { |
121 | 137 … | flex-grow: 1 |
122 | 138 … | |
123 | 139 … | display: flex /*hack to get give Scroller context it needs */ |
app/styles/mcss/markdown.mcss | ||
---|---|---|
@@ -1,18 +1,21 @@ | ||
1 | 1 … | Markdown { |
2 | 2 … | p, ul, ol { |
3 | 3 … | } |
4 | 4 … | |
5 | - // center images (non-emoji) | |
6 | - // p { | |
7 | - // a { | |
8 | - // img { | |
9 | - // display: block | |
10 | - // margin: auto | |
11 | - // } | |
12 | - // } | |
13 | - // } | |
5 … | + p { | |
6 … | + a { | |
7 … | + img { margin 0 .5rem } | |
14 | 8 … | |
9 … | + :only-of-type { | |
10 … | + img { | |
11 … | + display: block | |
12 … | + margin: auto | |
13 … | + } | |
14 … | + } | |
15 … | + } | |
16 … | + } | |
17 … | + | |
15 | 18 … | hr { |
16 | 19 … | height: 0 |
17 | 20 … | border: solid #ddd |
18 | 21 … | border-width: 1px 0 0 |
app/styles/mcss/app-theme-vars.mcss | ||
---|---|---|
@@ -1,0 +1,12 @@ | ||
1 … | +App { | |
2 … | + --app-border-background: rgb(0, 0, 0) | |
3 … | + --app-border-background-mid: rgba(218, 139, 255, 0.47) | |
4 … | + --app-border-width: .3rem | |
5 … | + --app-border-color: rgb(255, 255, 255) | |
6 … | + | |
7 … | + --page-background: rgb(255, 255, 255) | |
8 … | + --page-color: #222 | |
9 … | + | |
10 … | + --scrollbar-color: rgba(65, 3, 82, 0.48) | |
11 … | + --scrollbar-color-hover: rgba(65, 3, 82, 0.55) | |
12 … | +} |
app/styles/mcss/scrollbar.mcss | ||
---|---|---|
@@ -1,0 +1,19 @@ | ||
1 … | +/* reference: https://css-tricks.com/custom-scrollbars-in-webkit/ */ | |
2 … | + | |
3 … | +::-webkit-scrollbar { | |
4 … | + width: 8px | |
5 … | + height: 8px | |
6 … | +} | |
7 … | + | |
8 … | +::-webkit-scrollbar-thumb { | |
9 … | + background-color: var(--scrollbar-color) | |
10 … | + | |
11 … | + :hover { | |
12 … | + background-color: var(--scrollbar-color-hover) | |
13 … | + } | |
14 … | +} | |
15 … | + | |
16 … | +::-webkit-scrollbar-track { | |
17 … | + background-color: rgba(0,0,0,0.1) | |
18 … | + margin: .5rem | |
19 … | +} |
app/styles/mixins.js | ||
---|---|---|
@@ -14,9 +14,9 @@ | ||
14 | 14 … | } |
15 | 15 … | |
16 | 16 … | const mainMixins = ` |
17 | 17 … | $textPrimary { |
18 | - color: #222 | |
18 … | + color: var(--page-color) | |
19 | 19 … | } |
20 | 20 … | |
21 | 21 … | $textSubtle { |
22 | 22 … | color: gray |
message/html/layout/default.js | ||
---|---|---|
@@ -25,21 +25,23 @@ | ||
25 | 25 … | if (!isMsg(msg.key)) action = () => {} |
26 | 26 … | |
27 | 27 … | var rawMessage = Value(null) |
28 | 28 … | |
29 | - return h('Message', { | |
30 | - attributes: { | |
31 | - tabindex: '0' // needed to be able to navigate and show focus() | |
32 | - } | |
29 … | + return h('Message -default', { | |
30 … | + attributes: { tabindex: '0' } // needed to be able to navigate and show focus() | |
33 | 31 … | }, [ |
34 | 32 … | h('section.avatar', {}, api.about.html.avatar(msg.value.author)), |
35 | - h('section.timestamp', {}, timestamp(msg)), | |
36 | - h('header.author', {}, author(msg)), | |
37 | - h('section.meta', {}, meta(msg, { rawMessage })), | |
38 | - h('section.title', {}, opts.title), | |
33 … | + h('section.top', [ | |
34 … | + h('div.author', {}, author(msg)), | |
35 … | + h('div.title', {}, opts.title), | |
36 … | + h('div.meta', {}, meta(msg, { rawMessage })) | |
37 … | + ]), | |
39 | 38 … | h('section.content', {}, opts.content), |
40 | 39 … | h('section.raw-content', rawMessage), |
41 | - h('section.actions', {}, action(msg)), | |
40 … | + h('section.bottom', [ | |
41 … | + h('div.timestamp', {}, timestamp(msg)), | |
42 … | + h('div.actions', {}, action(msg)) | |
43 … | + ]), | |
42 | 44 … | h('footer.backlinks', {}, backlinks(msg)) |
43 | 45 … | ]) |
44 | 46 … | } |
45 | 47 … | } |
message/html/layout/default.mcss | ||
---|---|---|
@@ -1,71 +1,54 @@ | ||
1 | -Message { | |
2 | - padding: 1rem .5rem 1rem 6rem | |
3 | - /* min-height: 5rem */ | |
1 … | +Message -default { | |
2 … | + padding: 1rem .5rem | |
4 | 3 … | |
5 | - position: relative | |
6 | - display: flex | |
7 | - flex-direction: row | |
8 | - flex-wrap: wrap | |
9 | - justify-content: flex-end | |
4 … | + display: grid | |
5 … | + grid-template-columns: 5rem auto | |
10 | 6 … | |
11 | 7 … | section.avatar { |
12 | - position: absolute | |
13 | - left: .5rem | |
14 | - | |
8 … | + grid-column: 1 / 2 | |
9 … | + grid-row: 1 / span 4 | |
15 | 10 … | a img { |
16 | 11 … | } |
17 | 12 … | } |
18 | 13 … | |
19 | - section.timestamp { | |
20 | - position: absolute | |
21 | - left: .5rem | |
22 | - top: 5rem | |
14 … | + section.top { | |
15 … | + grid-column: 2 / 3 | |
16 … | + grid-row: 1 / span 1 | |
23 | 17 … | |
24 | - a { | |
25 | - font-size: .8rem | |
26 | - $textSubtle | |
27 | - } | |
28 | - } | |
29 | - | |
30 | - header.author { | |
31 | - margin-right: .4rem | |
32 | - } | |
33 | - | |
34 | - section.meta { | |
35 | 18 … | display: flex |
36 | - flex-grow: 1 | |
37 | - justify-content: flex-end | |
38 | - align-items: center | |
39 | - * { | |
40 | - margin-left: .4rem | |
19 … | + align-items: baseline | |
20 … | + | |
21 … | + div.author { | |
22 … | + font-weight: 600 | |
23 … | + margin-right: .5rem | |
24 … | + (a) { color: #222 } | |
41 | 25 … | } |
42 | 26 … | |
43 | - a { | |
27 … | + div.title { | |
28 … | + flex-grow: 1 | |
29 … | + font-size: .9rem | |
44 | 30 … | $textSubtle |
31 … | + (a) { $textSubtle } | |
45 | 32 … | } |
46 | - | |
47 | - /* this is for private message_meta, TODO find a better home */ | |
48 | - (img) { | |
49 | - height: 1.8rem | |
50 | - width: 1.8rem | |
51 | - margin: 0 .2rem -.2rem | |
52 | - } | |
53 | - } | |
54 | 33 … | |
55 | - section.title { | |
56 | - flex-basis: 100% | |
57 | - font-size: .9rem | |
34 … | + div.meta { | |
35 … | + display: flex | |
36 … | + justify-content: flex-end | |
37 … | + align-items: center | |
58 | 38 … | |
59 | - span, span a { | |
60 | - $textSubtle | |
39 … | + a { | |
40 … | + $textSubtle | |
41 … | + margin-left: .5rem | |
42 … | + } | |
61 | 43 … | } |
62 | 44 … | } |
63 | 45 … | |
64 | 46 … | section.content { |
65 | - flex-basis: 100% | |
47 … | + grid-column: 2 / 3 | |
48 … | + grid-row: 2 / span 1 | |
66 | 49 … | |
67 | - margin-top: .4rem | |
50 … | + margin-bottom: .5rem | |
68 | 51 … | |
69 | 52 … | (img) { |
70 | 53 … | max-width: 100% |
71 | 54 … | } |
@@ -73,11 +56,43 @@ | ||
73 | 56 … | max-width: 100% |
74 | 57 … | } |
75 | 58 … | } |
76 | 59 … | |
60 … | + section.bottom { | |
61 … | + grid-column: 2 / 3 | |
62 … | + grid-row: 4 / span 1 | |
63 … | + | |
64 … | + display: flex | |
65 … | + align-items: center | |
66 … | + | |
67 … | + div.timestamp { | |
68 … | + flex-grow: 1 | |
69 … | + | |
70 … | + a { | |
71 … | + font-size: .9rem | |
72 … | + $textSubtle | |
73 … | + } | |
74 … | + } | |
75 … | + | |
76 … | + div.actions { | |
77 … | + display: flex | |
78 … | + justify-content: flex-end | |
79 … | + | |
80 … | + font-size: .9rem | |
81 … | + a { | |
82 … | + margin-left: .5em | |
83 … | + } | |
84 … | + | |
85 … | + a.unlike { | |
86 … | + $textSubtle | |
87 … | + } | |
88 … | + } | |
89 … | + } | |
90 … | + | |
77 | 91 … | section.raw-content { |
78 | - margin-left: -5.5rem | |
79 | - flex-basis: 118% | |
92 … | + grid-column: 2 / 3 | |
93 … | + grid-row: 3 / span 1 | |
94 … | + | |
80 | 95 … | pre { |
81 | 96 … | border: 1px gainsboro solid |
82 | 97 … | padding: .8rem |
83 | 98 … | background-color: #f5f5f5 |
@@ -94,25 +109,11 @@ | ||
94 | 109 … | } |
95 | 110 … | } |
96 | 111 … | } |
97 | 112 … | |
98 | - section.actions { | |
99 | - flex-basis: 100% | |
100 | - display: flex | |
101 | - justify-content: flex-end | |
113 … | + footer.backlinks { | |
114 … | + grid-row: 5 / span 1 | |
102 | 115 … | |
103 | - font-size: .9rem | |
104 | - a { | |
105 | - margin-left: .5em | |
106 | - } | |
107 | - | |
108 | - a.unlike { | |
109 | - $textSubtle | |
110 | - } | |
111 | - } | |
112 | - | |
113 | - footer.backlinks { | |
116 … | + grid-column: 2 / 3 | |
114 | 117 … | flex-basis: 100% |
115 | 118 … | } |
116 | - | |
117 | - | |
118 | 119 … | } |
message/html/layout/mini.mcss | ||
---|---|---|
@@ -1,42 +1,42 @@ | ||
1 | -Message { | |
2 | - -mini { | |
3 | - font-size: .9rem | |
4 | - justify-content: flex-start | |
5 | - padding: .25rem .5rem | |
6 | - min-height: inherit | |
1 … | +Message -mini { | |
2 … | + font-size: .9rem | |
3 … | + justify-content: flex-start | |
4 … | + padding: .25rem .5rem | |
5 … | + min-height: inherit | |
7 | 6 … | |
8 | - section.timestamp { | |
9 | - order: 0 | |
10 | - position: initial | |
11 | - left: initial | |
12 | - min-width: 5.5rem | |
13 | - } | |
7 … | + display: flex | |
14 | 8 … | |
15 | - header.author { | |
16 | - order: 1 | |
17 | - margin-right: .5rem | |
18 | - | |
19 | - position: initial | |
20 | - left: initial | |
21 | - top: initial | |
22 | - } | |
9 … | + section.timestamp { | |
10 … | + order: 0 | |
11 … | + position: initial | |
12 … | + left: initial | |
13 … | + min-width: 5.5rem | |
14 … | + } | |
23 | 15 … | |
16 … | + header.author { | |
17 … | + order: 1 | |
18 … | + margin-right: .5rem | |
19 … | + | |
20 … | + position: initial | |
21 … | + left: initial | |
22 … | + top: initial | |
23 … | + } | |
24 | 24 … | |
25 | - section.content { | |
26 | - order: 2 | |
27 | - flex-basis: initial | |
28 | - flex-grow: 1 | |
29 | 25 … | |
30 | - margin-top: 0 | |
31 | - } | |
26 … | + section.content { | |
27 … | + order: 2 | |
28 … | + flex-basis: initial | |
29 … | + flex-grow: 1 | |
32 | 30 … | |
33 | - section.meta { | |
34 | - order: 3 | |
35 | - } | |
31 … | + margin-top: 0 | |
32 … | + } | |
36 | 33 … | |
37 | - section.raw-content { | |
38 | - order: 4 | |
39 | - margin-left: 0 | |
40 | - } | |
34 … | + section.meta { | |
35 … | + order: 3 | |
41 | 36 … | } |
37 … | + | |
38 … | + section.raw-content { | |
39 … | + order: 4 | |
40 … | + margin-left: 0 | |
41 … | + } | |
42 | 42 … | } |
message/html/meta/likes.js | ||
---|---|---|
@@ -1,32 +1,0 @@ | ||
1 | -const nest = require('depnest') | |
2 | -const { h, computed, map } = require('mutant') | |
3 | -const ref = require('ssb-ref') | |
4 | - | |
5 | -exports.gives = nest('message.html.meta') | |
6 | - | |
7 | -exports.needs = nest({ | |
8 | - 'about.obs.name': 'first', | |
9 | - 'message.obs.likes': 'first' | |
10 | -}) | |
11 | - | |
12 | -exports.create = (api) => { | |
13 | - return nest('message.html.meta', likes) | |
14 | - | |
15 | - function likes (msg) { | |
16 | - if (!ref.isMsgId(msg.key)) return | |
17 | - | |
18 | - const symbol = '\u2713' // tick 🗸 | |
19 | - | |
20 | - var likes = api.message.obs.likes(msg.key) | |
21 | - | |
22 | - var body = computed(likes, likes => likes.length > 4 | |
23 | - ? likes.length + ' ' + symbol | |
24 | - : Array(likes.length).fill(symbol).join('') | |
25 | - ) | |
26 | - | |
27 | - var names = map(likes, id => api.about.obs.name(id)) | |
28 | - var title = computed(names, names => names.map(n => '@' + n).join('\n')) | |
29 | - | |
30 | - return h('a.likes', { title }, body) | |
31 | - } | |
32 | -} |
message/html/action/likes.js | ||
---|---|---|
@@ -1,0 +1,32 @@ | ||
1 … | +const nest = require('depnest') | |
2 … | +const { h, computed, map } = require('mutant') | |
3 … | +const ref = require('ssb-ref') | |
4 … | + | |
5 … | +exports.gives = nest('message.html.action') | |
6 … | + | |
7 … | +exports.needs = nest({ | |
8 … | + 'about.obs.name': 'first', | |
9 … | + 'message.obs.likes': 'first' | |
10 … | +}) | |
11 … | + | |
12 … | +exports.create = (api) => { | |
13 … | + return nest('message.html.action', likes) | |
14 … | + | |
15 … | + function likes (msg) { | |
16 … | + if (!ref.isMsgId(msg.key)) return | |
17 … | + | |
18 … | + const symbol = '\u2713' // tick 🗸 | |
19 … | + | |
20 … | + var likes = api.message.obs.likes(msg.key) | |
21 … | + | |
22 … | + var body = computed(likes, likes => likes.length > 4 | |
23 … | + ? likes.length + ' ' + symbol | |
24 … | + : Array(likes.length).fill(symbol).join('') | |
25 … | + ) | |
26 … | + | |
27 … | + var names = map(likes, id => api.about.obs.name(id)) | |
28 … | + var title = computed(names, names => names.map(n => '@' + n).join('\n')) | |
29 … | + | |
30 … | + return h('a.likes', { title }, body) | |
31 … | + } | |
32 … | +} |
package-lock.json | ||
---|---|---|
The diff is too large to show. Use a local git client to view these changes. Old file size: 360559 bytes New file size: 359889 bytes |
package.json | ||
---|---|---|
@@ -62,9 +62,9 @@ | ||
62 | 62 … | "patch-inbox": "^1.1.3", |
63 | 63 … | "patch-settings": "^1.1.1", |
64 | 64 … | "patch-suggest": "^2.0.2", |
65 | 65 … | "patchbay-book": "^1.0.6", |
66 | - "patchbay-gatherings": "^2.0.0", | |
66 … | + "patchbay-gatherings": "^2.0.1", | |
67 | 67 … | "patchbay-poll": "^1.0.5", |
68 | 68 … | "patchcore": "^1.27.2", |
69 | 69 … | "pull-abortable": "^4.1.1", |
70 | 70 … | "pull-cat": "^1.1.11", |
Built with git-ssb-web