diff options
Diffstat (limited to 'app/javascript/flavours/glitch/features')
8 files changed, 31 insertions, 9 deletions
diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.js b/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.js index 1c0e081cc..280389bba 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.js +++ b/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.js @@ -34,7 +34,7 @@ export default class MovedNote extends ImmutablePureComponent { <div className='account__moved-note'> <div className='account__moved-note__message'> <div className='account__moved-note__icon-wrapper'><i className='fa fa-fw fa-suitcase account__moved-note__icon' /></div> - <FormattedMessage id='account.moved_to' defaultMessage='{name} has moved to:' values={{ name: <strong dangerouslySetInnerHTML={displayNameHtml} /> }} /> + <FormattedMessage id='account.moved_to' defaultMessage='{name} has moved to:' values={{ name: <bdi><strong dangerouslySetInnerHTML={displayNameHtml} /></bdi> }} /> </div> <a href={to.get('url')} onClick={this.handleAccountClick} className='detailed-status__display-name'> diff --git a/app/javascript/flavours/glitch/features/composer/index.js b/app/javascript/flavours/glitch/features/composer/index.js index 257797047..029b11a36 100644 --- a/app/javascript/flavours/glitch/features/composer/index.js +++ b/app/javascript/flavours/glitch/features/composer/index.js @@ -437,6 +437,7 @@ class Composer extends React.Component { intl={intl} onChange={handleChangeSpoiler} onSubmit={handleSubmit} + onSecondarySubmit={handleSecondarySubmit} text={spoilerText} ref={handleRefSpoilerText} /> diff --git a/app/javascript/flavours/glitch/features/composer/options/dropdown/index.js b/app/javascript/flavours/glitch/features/composer/options/dropdown/index.js index 8cfbac1bb..7817cc964 100644 --- a/app/javascript/flavours/glitch/features/composer/options/dropdown/index.js +++ b/app/javascript/flavours/glitch/features/composer/options/dropdown/index.js @@ -131,7 +131,7 @@ export default class ComposerOptionsDropdown extends React.PureComponent { this.state = { needsModalUpdate: false, open: false, - placement: null, + placement: 'bottom', }; } diff --git a/app/javascript/flavours/glitch/features/composer/spoiler/index.js b/app/javascript/flavours/glitch/features/composer/spoiler/index.js index a7fecbcf5..1c3c962f0 100644 --- a/app/javascript/flavours/glitch/features/composer/spoiler/index.js +++ b/app/javascript/flavours/glitch/features/composer/spoiler/index.js @@ -25,18 +25,31 @@ const handlers = { ctrlKey, keyCode, metaKey, + altKey, }) { - const { onSubmit } = this.props; + const { onSubmit, onSecondarySubmit } = this.props; // We submit the status on control/meta + enter. if (onSubmit && keyCode === 13 && (ctrlKey || metaKey)) { onSubmit(); } + + // Submit the status with secondary visibility on alt + enter. + if (onSecondarySubmit && keyCode === 13 && altKey) { + onSecondarySubmit(); + } }, handleRefSpoilerText (spoilerText) { this.spoilerText = spoilerText; }, + + // When the escape key is released, we focus the UI. + handleKeyUp ({ key }) { + if (key === 'Escape') { + document.querySelector('.ui').parentElement.focus(); + } + }, }; // The component. @@ -50,7 +63,7 @@ export default class ComposerSpoiler extends React.PureComponent { // Rendering. render () { - const { handleKeyDown, handleRefSpoilerText } = this.handlers; + const { handleKeyDown, handleKeyUp, handleRefSpoilerText } = this.handlers; const { hidden, intl, @@ -69,6 +82,7 @@ export default class ComposerSpoiler extends React.PureComponent { id='glitch.composer.spoiler.input' onChange={onChange} onKeyDown={handleKeyDown} + onKeyUp={handleKeyUp} placeholder={intl.formatMessage(messages.placeholder)} type='text' value={text} @@ -87,5 +101,6 @@ ComposerSpoiler.propTypes = { intl: PropTypes.object.isRequired, onChange: PropTypes.func, onSubmit: PropTypes.func, + onSecondarySubmit: PropTypes.func, text: PropTypes.string, }; diff --git a/app/javascript/flavours/glitch/features/composer/upload_form/item/index.js b/app/javascript/flavours/glitch/features/composer/upload_form/item/index.js index 5addccfb1..93fa4e39e 100644 --- a/app/javascript/flavours/glitch/features/composer/upload_form/item/index.js +++ b/app/javascript/flavours/glitch/features/composer/upload_form/item/index.js @@ -14,6 +14,7 @@ import IconButton from 'flavours/glitch/components/icon_button'; // Utils. import Motion from 'flavours/glitch/util/optional_motion'; import { assignHandlers } from 'flavours/glitch/util/react_helpers'; +import { isUserTouching } from 'flavours/glitch/util/is_mobile'; // Messages. const messages = defineMessages({ @@ -130,7 +131,7 @@ export default class ComposerUploadFormItem extends React.PureComponent { hovered, dirtyDescription, } = this.state; - const active = hovered || focused; + const active = hovered || focused || isUserTouching(); const computedClass = classNames('composer--upload_form--item', { active }); const x = ((focusX / 2) + .5) * 100; const y = ((focusY / -2) + .5) * 100; diff --git a/app/javascript/flavours/glitch/features/notifications/components/follow.js b/app/javascript/flavours/glitch/features/notifications/components/follow.js index 54506f67c..ea81d9ab4 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/follow.js +++ b/app/javascript/flavours/glitch/features/notifications/components/follow.js @@ -63,13 +63,13 @@ export default class NotificationFollow extends ImmutablePureComponent { // Links to the display name. const displayName = account.get('display_name_html') || account.get('username'); const link = ( - <Permalink + <bdi><Permalink className='notification__display-name' href={account.get('url')} title={account.get('acct')} to={`/accounts/${account.get('id')}`} dangerouslySetInnerHTML={{ __html: displayName }} - /> + /></bdi> ); // Renders. diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js index 4382748d5..cfa1450f6 100644 --- a/app/javascript/flavours/glitch/features/status/index.js +++ b/app/javascript/flavours/glitch/features/status/index.js @@ -127,7 +127,7 @@ export default class Status extends ImmutablePureComponent { if (status.get('favourited')) { this.props.dispatch(unfavourite(status)); } else { - if (e.shiftKey || !favouriteModal) { + if ((e && e.shiftKey) || !favouriteModal) { this.handleModalFavourite(status); } else { this.props.dispatch(openModal('FAVOURITE', { status, onFavourite: this.handleModalFavourite })); @@ -164,7 +164,7 @@ export default class Status extends ImmutablePureComponent { if (status.get('reblogged')) { this.props.dispatch(unreblog(status)); } else { - if (e.shiftKey || !boostModal) { + if ((e && e.shiftKey) || !boostModal) { this.handleModalReblog(status); } else { this.props.dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog })); diff --git a/app/javascript/flavours/glitch/features/video/index.js b/app/javascript/flavours/glitch/features/video/index.js index 227f298e4..4f95aea96 100644 --- a/app/javascript/flavours/glitch/features/video/index.js +++ b/app/javascript/flavours/glitch/features/video/index.js @@ -220,6 +220,11 @@ export default class Video extends React.PureComponent { } componentDidUpdate (prevProps) { + if (this.player && this.player.offsetWidth && !this.state.fullscreen) { + this.setState({ + containerWidth: this.player.offsetWidth, + }); + } if (this.video && this.state.revealed && this.props.preventPlayback && !prevProps.preventPlayback) { this.video.pause(); } |