diff --git a/client/coral-embed-stream/src/components/Comment.css b/client/coral-embed-stream/src/components/Comment.css index 143577cf6f..9a176534d1 100644 --- a/client/coral-embed-stream/src/components/Comment.css +++ b/client/coral-embed-stream/src/components/Comment.css @@ -2,24 +2,23 @@ margin-left: 20px; margin-bottom: 16px; position: relative; - border-top: 1px solid rgba(0, 0, 0, 0.1); padding-top: 12px; } .rootLevel0:first-child { padding-top: 0; -} - -.root:first-child { border: 0; } .rootLevel0 { margin-left: 0px; + border-top: 1px solid rgba(0, 0, 0, 0.1); } .comment { - padding-left: 20px; + padding-left: 15px; + display: flex; + flex-flow: row; } .commentLevel0 { @@ -43,7 +42,7 @@ } .highlightedComment { - padding-left: 20px; + padding-left: 15px; border-left: 3px solid rgb(35,118,216); } @@ -158,6 +157,18 @@ animation: enter 1000ms; } +.commentContainer { + flex: auto; +} + +.commentAvatar { + max-width: 60px; +} + +.commentAvatar:empty { + display: none; +} + .timerIcon { vertical-align: middle; font-size: 14px; diff --git a/client/coral-embed-stream/src/components/Comment.js b/client/coral-embed-stream/src/components/Comment.js index 0cd37a92a9..9e6a70efe9 100644 --- a/client/coral-embed-stream/src/components/Comment.js +++ b/client/coral-embed-stream/src/components/Comment.js @@ -430,26 +430,10 @@ export default class Comment extends React.Component { id={`c_${comment.id}`} >
- - {isStaff(comment.tags) ? Staff : null} - - {commentIsBest(comment) - ? - : null } - - - - { - (comment.editing && comment.editing.edited) - ?  ({t('comment.edited')}) - : null - } - - { (currentUser && (comment.user.id === currentUser.id)) && +
+ + + {isStaff(comment.tags) ? Staff : null} - /* User can edit/delete their own comment for a short window after posting */ - + {commentIsBest(comment) + ? + : null } + + + { - commentIsStillEditable(comment) && - Edit + (comment.editing && comment.editing.edited) + ?  ({t('comment.edited')}) + : null } - } - { (currentUser && (comment.user.id !== currentUser.id)) && - - /* TopRightMenu allows currentUser to ignore other users' comments */ - - - - } - { - this.state.isEditing - ? - :
- -
- } -
- - - - - - {!disableReply && - - - } -
-
- - - + { + commentIsStillEditable(comment) && + Edit + } + + } + { (currentUser && (comment.user.id !== currentUser.id)) && + + /* TopRightMenu allows currentUser to ignore other users' comments */ + + + + } + { + this.state.isEditing + ? + :
+ +
+ } + +
+ + + + + + + {!disableReply && + + + } +
+
+ - + + + +
- {activeReplyBox === comment.id - ? { - setActiveReplyBox(''); - }} - charCountEnable={charCountEnable} - maxCharCount={maxCharCount} - setActiveReplyBox={setActiveReplyBox} - parentId={(depth < THREADING_LEVEL) ? comment.id : parentId} - addNotification={addNotification} - postComment={postComment} - currentUser={currentUser} - assetId={asset.id} - /> - : null} - - {view.map((reply) => { - return commentIsIgnored(reply) - ? - : { + setActiveReplyBox(''); + }} + charCountEnable={charCountEnable} + maxCharCount={maxCharCount} setActiveReplyBox={setActiveReplyBox} - disableReply={disableReply} - activeReplyBox={activeReplyBox} + parentId={(depth < THREADING_LEVEL) ? comment.id : parentId} addNotification={addNotification} - parentId={comment.id} postComment={postComment} - editComment={this.props.editComment} - depth={depth + 1} - asset={asset} - highlighted={highlighted} currentUser={currentUser} - postFlag={postFlag} - deleteAction={deleteAction} - addTag={addTag} - removeTag={removeTag} - loadMore={loadMore} - ignoreUser={ignoreUser} - charCountEnable={charCountEnable} - maxCharCount={maxCharCount} - showSignInDialog={showSignInDialog} - commentIsIgnored={commentIsIgnored} - liveUpdates={liveUpdates} - key={reply.id} - comment={reply} - />; - })} - -
- + assetId={asset.id} + /> + : null} + + + {view.map((reply) => { + return commentIsIgnored(reply) + ? + : ; + })} + +
+
); diff --git a/client/coral-embed-stream/src/containers/Comment.js b/client/coral-embed-stream/src/containers/Comment.js index 040d1a83eb..1ffac82cf6 100644 --- a/client/coral-embed-stream/src/containers/Comment.js +++ b/client/coral-embed-stream/src/containers/Comment.js @@ -10,7 +10,8 @@ const pluginFragments = getSlotsFragments([ 'commentInfoBar', 'commentActions', 'commentContent', - 'commentReactions' + 'commentReactions', + 'commentAvatar' ]); export default withFragments({ diff --git a/client/coral-framework/helpers/plugins.js b/client/coral-framework/helpers/plugins.js index d93bb30f95..625a0ee3f4 100644 --- a/client/coral-framework/helpers/plugins.js +++ b/client/coral-framework/helpers/plugins.js @@ -16,10 +16,10 @@ export function getSlotComponents(slot) { return flatten(plugins // Filter out components that have slots and have been disabled in `plugin_config` - .filter((o) => o.module.slots && (!pluginConfig || !pluginConfig[o.name] || !pluginConfig[o.name].disable_components)) + .filter((o) => o.module.slots && (!pluginConfig || !pluginConfig[o.name] || !pluginConfig[o.name].disable_components)) - .filter((o) => o.module.slots[slot]) - .map((o) => o.module.slots[slot]) + .filter((o) => o.module.slots[slot]) + .map((o) => o.module.slots[slot]) ); } @@ -78,8 +78,8 @@ export function getSlotsFragments(slots) { } const components = uniq(flattenDeep(slots.map((slot) => { return plugins - .filter((o) => o.module.slots ? o.module.slots[slot] : false) - .map((o) => o.module.slots[slot]); + .filter((o) => o.module.slots ? o.module.slots[slot] : false) + .map((o) => o.module.slots[slot]); }))); const fragments = getComponentFragments(components); diff --git a/package.json b/package.json index 34e069c0f2..71a07f4da2 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "env-rewrite": "^1.0.2", "express": "^4.15.2", "express-session": "^1.15.1", + "file-loader": "^0.11.2", "form-data": "^2.1.2", "fs-extra": "^3.0.1", "gql-merge": "^0.0.4", @@ -209,6 +210,7 @@ "style-loader": "^0.16.0", "supertest": "^2.0.1", "timeago.js": "^2.0.3", + "url-loader": "^0.5.9", "webpack": "^2.3.1" }, "engines": { diff --git a/plugin-api/beta/client/hocs/index.js b/plugin-api/beta/client/hocs/index.js index 7be6826704..7f3476cfd1 100644 --- a/plugin-api/beta/client/hocs/index.js +++ b/plugin-api/beta/client/hocs/index.js @@ -1 +1,2 @@ export {default as withReaction} from './withReaction'; +export {default as withFragments} from 'coral-framework/hocs/withFragments'; diff --git a/webpack.config.js b/webpack.config.js index c397268820..5c6655d17a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -70,10 +70,6 @@ const config = { ], test: /.css$/, }, - { - loader: 'url-loader?limit=100000', - test: /\.png$/ - }, { loader: 'file-loader', test: /\.(jpg|png|gif|svg)$/ diff --git a/yarn.lock b/yarn.lock index c536e29014..b2b169db23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3119,6 +3119,12 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" +file-loader@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34" + dependencies: + loader-utils "^1.0.2" + file-uri-to-path@0: version "0.0.2" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-0.0.2.tgz#37cdd1b5b905404b3f05e1b23645be694ff70f82" @@ -5245,7 +5251,7 @@ mime-types@~2.0.3: dependencies: mime-db "~1.12.0" -mime@1.3.4, mime@^1.3.4: +mime@1.3.4, mime@1.3.x, mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" @@ -8305,6 +8311,13 @@ urijs@1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.16.1.tgz#859ad31890f5f9528727be89f1932c94fb4731e2" +url-loader@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295" + dependencies: + loader-utils "^1.0.2" + mime "1.3.x" + url-search-params@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/url-search-params/-/url-search-params-0.9.0.tgz#e71d7764a6503533cbfe9771b2963cb61ea1c225"