Hide list panel from nav bar in mobile layout (#19337)

pull/19339/head
Yamagishi Kazutoshi 2022-10-11 04:41:25 +09:00 committed by GitHub
parent 05148e2c77
commit d787343325
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 26 additions and 11 deletions

View File

@ -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>
); );

View File

@ -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' },

View File

@ -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);
}; };

View File

@ -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 {

View File

@ -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;