mirror of https://github.com/vector-im/riot-web
Merge remote-tracking branch 'origin/develop' into develop
commit
2f8814d1c5
|
@ -25,26 +25,29 @@ limitations under the License.
|
||||||
background-color: $event-selected-color;
|
background-color: $event-selected-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_PinnedEventTile .mx_PinnedEventTile_sender {
|
.mx_PinnedEventTile .mx_PinnedEventTile_sender,
|
||||||
|
.mx_PinnedEventTile .mx_PinnedEventTile_timestamp {
|
||||||
color: #868686;
|
color: #868686;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
display: block;
|
display: inline-block;
|
||||||
padding-bottom: 3px;
|
padding-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_PinnedEventTile .mx_EventTile_content {
|
.mx_PinnedEventTile .mx_PinnedEventTile_timestamp {
|
||||||
margin-left: 50px;
|
padding-left: 15px;
|
||||||
position: relative;
|
display: none;
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_PinnedEventTile .mx_BaseAvatar {
|
.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar {
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions {
|
.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
@ -63,5 +66,12 @@ limitations under the License.
|
||||||
|
|
||||||
.mx_PinnedEventTile_gotoButton {
|
.mx_PinnedEventTile_gotoButton {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 0.8em;
|
font-size: 0.7em; // Smaller text to avoid conflicting with the layout
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx_PinnedEventTile_message {
|
||||||
|
margin-left: 50px;
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
}
|
}
|
|
@ -40,6 +40,9 @@ export default class extends React.Component {
|
||||||
|
|
||||||
/* called when the image has loaded */
|
/* called when the image has loaded */
|
||||||
onWidgetLoad: PropTypes.func.isRequired,
|
onWidgetLoad: PropTypes.func.isRequired,
|
||||||
|
|
||||||
|
/* the maximum image height to use */
|
||||||
|
maxImageHeight: PropTypes.number,
|
||||||
}
|
}
|
||||||
|
|
||||||
static contextTypes = {
|
static contextTypes = {
|
||||||
|
@ -249,8 +252,9 @@ export default class extends React.Component {
|
||||||
|
|
||||||
const content = this.props.mxEvent.getContent();
|
const content = this.props.mxEvent.getContent();
|
||||||
const timelineWidth = this.refs.body.offsetWidth;
|
const timelineWidth = this.refs.body.offsetWidth;
|
||||||
const maxHeight = 600; // let images take up as much width as they can so long as the height doesn't exceed 600px.
|
const maxHeight = this.props.maxImageHeight || 600; // let images take up as much width as they can so long
|
||||||
// the alternative here would be 600*timelineWidth/800; to scale them down to fit inside a 4:3 bounding box
|
// as the height doesn't exceed 600px. The alternative here would be 600*timelineWidth/800; to scale them down
|
||||||
|
// to fit inside a 4:3 bounding box
|
||||||
|
|
||||||
// FIXME: this will break on clientside generated thumbnails (as per e2e rooms)
|
// FIXME: this will break on clientside generated thumbnails (as per e2e rooms)
|
||||||
// which may well be much smaller than the 800x600 bounding box.
|
// which may well be much smaller than the 800x600 bounding box.
|
||||||
|
|
|
@ -39,8 +39,11 @@ module.exports = React.createClass({
|
||||||
/* callback called when dynamic content in events are loaded */
|
/* callback called when dynamic content in events are loaded */
|
||||||
onWidgetLoad: PropTypes.func,
|
onWidgetLoad: PropTypes.func,
|
||||||
|
|
||||||
/* the shsape of the tile, used */
|
/* the shape of the tile, used */
|
||||||
tileShape: PropTypes.string,
|
tileShape: PropTypes.string,
|
||||||
|
|
||||||
|
/* the maximum image height to use, if the event is an image */
|
||||||
|
maxImageHeight: PropTypes.number,
|
||||||
},
|
},
|
||||||
|
|
||||||
getEventTileOps: function() {
|
getEventTileOps: function() {
|
||||||
|
@ -78,6 +81,7 @@ module.exports = React.createClass({
|
||||||
highlightLink={this.props.highlightLink}
|
highlightLink={this.props.highlightLink}
|
||||||
showUrlPreview={this.props.showUrlPreview}
|
showUrlPreview={this.props.showUrlPreview}
|
||||||
tileShape={this.props.tileShape}
|
tileShape={this.props.tileShape}
|
||||||
|
maxImageHeight={this.props.maxImageHeight}
|
||||||
onWidgetLoad={this.props.onWidgetLoad} />;
|
onWidgetLoad={this.props.onWidgetLoad} />;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -22,6 +22,7 @@ import AccessibleButton from "../elements/AccessibleButton";
|
||||||
import MessageEvent from "../messages/MessageEvent";
|
import MessageEvent from "../messages/MessageEvent";
|
||||||
import MemberAvatar from "../avatars/MemberAvatar";
|
import MemberAvatar from "../avatars/MemberAvatar";
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
|
import {formatFullDate} from '../../../DateUtils';
|
||||||
|
|
||||||
module.exports = React.createClass({
|
module.exports = React.createClass({
|
||||||
displayName: 'PinnedEventTile',
|
displayName: 'PinnedEventTile',
|
||||||
|
@ -80,11 +81,20 @@ module.exports = React.createClass({
|
||||||
{ unpinButton }
|
{ unpinButton }
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<span className="mx_PinnedEventTile_senderAvatar">
|
||||||
<MemberAvatar member={sender} width={avatarSize} height={avatarSize} />
|
<MemberAvatar member={sender} width={avatarSize} height={avatarSize} />
|
||||||
|
</span>
|
||||||
<span className="mx_PinnedEventTile_sender">
|
<span className="mx_PinnedEventTile_sender">
|
||||||
{ sender.name }
|
{ sender.name }
|
||||||
</span>
|
</span>
|
||||||
<MessageEvent mxEvent={this.props.mxEvent} className="mx_PinnedEventTile_body" />
|
<span className="mx_PinnedEventTile_timestamp">
|
||||||
|
{ formatFullDate(new Date(this.props.mxEvent.getTs())) }
|
||||||
|
</span>
|
||||||
|
<div className="mx_PinnedEventTile_message">
|
||||||
|
<MessageEvent mxEvent={this.props.mxEvent} className="mx_PinnedEventTile_body" maxImageHeight={150}
|
||||||
|
onWidgetLoad={() => {}} // we need to give this, apparently
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue