Hide list panel from nav bar in mobile layout (#19337)
parent
05148e2c77
commit
d787343325
|
@ -1,12 +1,12 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import { createSelector } from 'reselect';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
import { fetchLists } from 'mastodon/actions/lists';
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { createSelector } from 'reselect';
|
import { withRouter } from 'react-router-dom';
|
||||||
import { NavLink, withRouter } from 'react-router-dom';
|
import { fetchLists } from 'mastodon/actions/lists';
|
||||||
import Icon from 'mastodon/components/icon';
|
import ColumnLink from './column_link';
|
||||||
|
|
||||||
const getOrderedLists = createSelector([state => state.get('lists')], lists => {
|
const getOrderedLists = createSelector([state => state.get('lists')], lists => {
|
||||||
if (!lists) {
|
if (!lists) {
|
||||||
|
@ -42,11 +42,11 @@ class ListPanel extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div className='list-panel'>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
{lists.map(list => (
|
{lists.map(list => (
|
||||||
<NavLink key={list.get('id')} className='column-link column-link--transparent' strict to={`/lists/${list.get('id')}`}><Icon className='column-link__icon' id='list-ul' fixedWidth />{list.get('title')}</NavLink>
|
<ColumnLink icon='list-ul' key={list.get('id')} strict text={list.get('title')} to={`/lists/${list.get('id')}`} transparent />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -5,11 +5,11 @@ import { Link } from 'react-router-dom';
|
||||||
import Logo from 'mastodon/components/logo';
|
import Logo from 'mastodon/components/logo';
|
||||||
import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container';
|
import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container';
|
||||||
import { showTrends, timelinePreview } from 'mastodon/initial_state';
|
import { showTrends, timelinePreview } from 'mastodon/initial_state';
|
||||||
|
import ColumnLink from './column_link';
|
||||||
import FollowRequestsColumnLink from './follow_requests_column_link';
|
import FollowRequestsColumnLink from './follow_requests_column_link';
|
||||||
import ListPanel from './list_panel';
|
import ListPanel from './list_panel';
|
||||||
import NotificationsCounterIcon from './notifications_counter_icon';
|
import NotificationsCounterIcon from './notifications_counter_icon';
|
||||||
import SignInBanner from './sign_in_banner';
|
import SignInBanner from './sign_in_banner';
|
||||||
import ColumnLink from 'mastodon/features/ui/components/column_link';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
home: { id: 'tabs_bar.home', defaultMessage: 'Home' },
|
home: { id: 'tabs_bar.home', defaultMessage: 'Home' },
|
||||||
|
|
|
@ -1,10 +1,19 @@
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
import { supportsPassiveEvents } from 'detect-passive-events';
|
import { supportsPassiveEvents } from 'detect-passive-events';
|
||||||
import { forceSingleColumn } from 'mastodon/initial_state';
|
import { forceSingleColumn } from 'mastodon/initial_state';
|
||||||
|
|
||||||
const LAYOUT_BREAKPOINT = 630;
|
const LAYOUT_BREAKPOINT = 630;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} width
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
export const isMobile = width => width <= LAYOUT_BREAKPOINT;
|
export const isMobile = width => width <= LAYOUT_BREAKPOINT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
export const layoutFromWindow = () => {
|
export const layoutFromWindow = () => {
|
||||||
if (isMobile(window.innerWidth)) {
|
if (isMobile(window.innerWidth)) {
|
||||||
return 'mobile';
|
return 'mobile';
|
||||||
|
@ -17,11 +26,13 @@ export const layoutFromWindow = () => {
|
||||||
|
|
||||||
const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
||||||
|
|
||||||
|
const listenerOptions = supportsPassiveEvents ? { passive: true } : false;
|
||||||
|
|
||||||
let userTouching = false;
|
let userTouching = false;
|
||||||
let listenerOptions = supportsPassiveEvents ? { passive: true } : false;
|
|
||||||
|
|
||||||
const touchListener = () => {
|
const touchListener = () => {
|
||||||
userTouching = true;
|
userTouching = true;
|
||||||
|
|
||||||
window.removeEventListener('touchstart', touchListener, listenerOptions);
|
window.removeEventListener('touchstart', touchListener, listenerOptions);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -163,8 +163,8 @@ $small-breakpoint: 960px;
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
align-self: start;
|
align-self: flex-start;
|
||||||
align-items: start;
|
align-items: flex-start;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
|
|
||||||
&.nowrap {
|
&.nowrap {
|
||||||
|
|
|
@ -2673,6 +2673,10 @@ $ui-header-height: 55px;
|
||||||
.column-link span {
|
.column-link span {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.list-panel {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2755,7 +2759,7 @@ $ui-header-height: 55px;
|
||||||
|
|
||||||
.column-actions {
|
.column-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: start;
|
align-items: flex-start;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 40px;
|
padding: 40px;
|
||||||
padding-top: 40px;
|
padding-top: 40px;
|
||||||
|
|
Loading…
Reference in New Issue