Parcourir la source

Fix column header scrolling with the page (#11458)

Regression from aa22b38
master^2
Eugen Rochko il y a 4 ans
committed by GitHub
Parent
révision
706a48ee1f
Aucune clé connue n'a été trouvée dans la base pour cette signature ID de la clé GPG: 4AEE18F83AFDEB23
6 fichiers modifiés avec 53 ajouts et 15 suppressions
  1. +10
    -2
      app/javascript/mastodon/components/column_header.js
  2. +4
    -2
      app/javascript/mastodon/features/status/index.js
  3. +1
    -1
      app/javascript/mastodon/features/ui/components/column_loading.js
  4. +7
    -3
      app/javascript/mastodon/features/ui/components/tabs_bar.js
  5. +1
    -1
      app/javascript/styles/mastodon/basics.scss
  6. +30
    -6
      app/javascript/styles/mastodon/components.scss

+ 10
- 2
app/javascript/mastodon/components/column_header.js Voir le fichier

@@ -1,5 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { createPortal } from 'react-dom';
import classNames from 'classnames';
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
import Icon from 'mastodon/components/icon';
@@ -28,6 +29,7 @@ class ColumnHeader extends React.PureComponent {
showBackButton: PropTypes.bool,
children: PropTypes.node,
pinned: PropTypes.bool,
placeholder: PropTypes.bool,
onPin: PropTypes.func,
onMove: PropTypes.func,
onClick: PropTypes.func,
@@ -79,7 +81,7 @@ class ColumnHeader extends React.PureComponent {
}

render () {
const { title, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage } } = this.props;
const { title, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage }, placeholder } = this.props;
const { collapsed, animating } = this.state;

const wrapperClassName = classNames('column-header__wrapper', {
@@ -146,7 +148,7 @@ class ColumnHeader extends React.PureComponent {

const hasTitle = icon && title;

return (
const component = (
<div className={wrapperClassName}>
<h1 className={buttonClassName}>
{hasTitle && (
@@ -172,6 +174,12 @@ class ColumnHeader extends React.PureComponent {
</div>
</div>
);

if (multiColumn || placeholder) {
return component;
} else {
return createPortal(component, document.getElementById('tabs-bar__portal'));
}
}

}

+ 4
- 2
app/javascript/mastodon/features/status/index.js Voir le fichier

@@ -146,6 +146,7 @@ class Status extends ImmutablePureComponent {
descendantsIds: ImmutablePropTypes.list,
intl: PropTypes.object.isRequired,
askReplyConfirmation: PropTypes.bool,
multiColumn: PropTypes.bool,
domain: PropTypes.string.isRequired,
};

@@ -437,13 +438,13 @@ class Status extends ImmutablePureComponent {

render () {
let ancestors, descendants;
const { shouldUpdateScroll, status, ancestorsIds, descendantsIds, intl, domain } = this.props;
const { shouldUpdateScroll, status, ancestorsIds, descendantsIds, intl, domain, multiColumn } = this.props;
const { fullscreen } = this.state;

if (status === null) {
return (
<Column>
<ColumnBackButton />
<ColumnBackButton multiColumn={multiColumn} />
<MissingIndicator />
</Column>
);
@@ -473,6 +474,7 @@ class Status extends ImmutablePureComponent {
<Column label={intl.formatMessage(messages.detailedStatus)}>
<ColumnHeader
showBackButton
multiColumn={multiColumn}
extraButton={(
<button className='column-header__button' title={intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll)} aria-label={intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll)} onClick={this.handleToggleAll} aria-pressed={status.get('hidden') ? 'false' : 'true'}><Icon id={status.get('hidden') ? 'eye-slash' : 'eye'} /></button>
)}


+ 1
- 1
app/javascript/mastodon/features/ui/components/column_loading.js Voir le fichier

@@ -21,7 +21,7 @@ export default class ColumnLoading extends ImmutablePureComponent {
let { title, icon } = this.props;
return (
<Column>
<ColumnHeader icon={icon} title={title} multiColumn={false} focusable={false} />
<ColumnHeader icon={icon} title={title} multiColumn={false} focusable={false} placeholder />
<div className='scrollable' />
</Column>
);


+ 7
- 3
app/javascript/mastodon/features/ui/components/tabs_bar.js Voir le fichier

@@ -73,9 +73,13 @@ class TabsBar extends React.PureComponent {
const { intl: { formatMessage } } = this.props;

return (
<nav className='tabs-bar' ref={this.setRef}>
{links.map(link => React.cloneElement(link, { key: link.props.to, onClick: this.handleClick, 'aria-label': formatMessage({ id: link.props['data-preview-title-id'] }) }))}
</nav>
<div className='tabs-bar__wrapper'>
<nav className='tabs-bar' ref={this.setRef}>
{links.map(link => React.cloneElement(link, { key: link.props.to, onClick: this.handleClick, 'aria-label': formatMessage({ id: link.props['data-preview-title-id'] }) }))}
</nav>

<div id='tabs-bar__portal' />
</div>
);
}



+ 1
- 1
app/javascript/styles/mastodon/basics.scss Voir le fichier

@@ -39,7 +39,7 @@ body {

&.layout-single-column {
height: auto;
min-height: 100%;
min-height: 100vh;
overflow-y: scroll;
}



+ 30
- 6
app/javascript/styles/mastodon/components.scss Voir le fichier

@@ -1852,6 +1852,26 @@ a.account__display-name {
}
}

.tabs-bar__wrapper {
background: darken($ui-base-color, 8%);
position: sticky;
top: 0;
z-index: 2;
padding-top: 0;

@media screen and (min-width: $no-gap-breakpoint) {
padding-top: 10px;
}

.tabs-bar {
margin-bottom: 0;

@media screen and (min-width: $no-gap-breakpoint) {
margin-bottom: 10px;
}
}
}

.react-swipeable-view-container {
&,
.columns-area,
@@ -1949,9 +1969,6 @@ a.account__display-name {
background: lighten($ui-base-color, 8%);
flex: 0 0 auto;
overflow-y: auto;
position: sticky;
top: 0;
z-index: 3;
}

.tabs-bar__link {
@@ -2014,6 +2031,14 @@ a.account__display-name {
padding: 0;
}

//.column {
// margin-top: 0;

// @media screen and (min-width: $no-gap-breakpoint) {
// margin-top: 10px;
// }
//}

.autosuggest-textarea__textarea {
font-size: 16px;
}
@@ -2039,6 +2064,7 @@ a.account__display-name {

@media screen and (min-width: $no-gap-breakpoint) {
padding: 10px 0;
padding-top: 0;
}

@media screen and (min-width: 630px) {
@@ -2153,13 +2179,11 @@ a.account__display-name {

@media screen and (min-width: $no-gap-breakpoint) {
.tabs-bar {
margin: 10px auto;
margin-bottom: 0;
width: 100%;
}

.react-swipeable-view-container .columns-area--mobile {
height: calc(100% - 20px) !important;
height: calc(100% - 10px) !important;
}

.getting-started__wrapper,


Chargement…
Annuler
Enregistrer