Rewrite <LoadingIndicator/> as FC and TS  (#25364)
				
					
				
			This commit is contained in:
		
							parent
							
								
									72590e601a
								
							
						
					
					
						commit
						a86886b1fd
					
				
					 24 changed files with 55 additions and 53 deletions
				
			
		
							
								
								
									
										27
									
								
								app/javascript/mastodon/components/circular_progress.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								app/javascript/mastodon/components/circular_progress.tsx
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
interface Props {
 | 
			
		||||
  size: number;
 | 
			
		||||
  strokeWidth: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const CircularProgress: React.FC<Props> = ({ size, strokeWidth }) => {
 | 
			
		||||
  const viewBox = `0 0 ${size} ${size}`;
 | 
			
		||||
  const radius = (size - strokeWidth) / 2;
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <svg
 | 
			
		||||
      width={size}
 | 
			
		||||
      height={size}
 | 
			
		||||
      viewBox={viewBox}
 | 
			
		||||
      className='circular-progress'
 | 
			
		||||
      role='progressbar'
 | 
			
		||||
    >
 | 
			
		||||
      <circle
 | 
			
		||||
        fill='none'
 | 
			
		||||
        cx={size / 2}
 | 
			
		||||
        cy={size / 2}
 | 
			
		||||
        r={radius}
 | 
			
		||||
        strokeWidth={`${strokeWidth}px`}
 | 
			
		||||
      />
 | 
			
		||||
    </svg>
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -8,8 +8,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 | 
			
		|||
import { supportsPassiveEvents } from 'detect-passive-events';
 | 
			
		||||
import Overlay from 'react-overlays/Overlay';
 | 
			
		||||
 | 
			
		||||
import { CircularProgress } from 'mastodon/components/loading_indicator';
 | 
			
		||||
 | 
			
		||||
import { CircularProgress } from "./circular_progress";
 | 
			
		||||
import { IconButton } from './icon_button';
 | 
			
		||||
 | 
			
		||||
const listenerOptions = supportsPassiveEvents ? { passive: true, capture: true } : true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,31 +0,0 @@
 | 
			
		|||
import PropTypes from 'prop-types';
 | 
			
		||||
 | 
			
		||||
export const CircularProgress = ({ size, strokeWidth }) => {
 | 
			
		||||
  const viewBox = `0 0 ${size} ${size}`;
 | 
			
		||||
  const radius  = (size - strokeWidth) / 2;
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <svg width={size} height={size} viewBox={viewBox} className='circular-progress' role='progressbar'>
 | 
			
		||||
      <circle
 | 
			
		||||
        fill='none'
 | 
			
		||||
        cx={size / 2}
 | 
			
		||||
        cy={size / 2}
 | 
			
		||||
        r={radius}
 | 
			
		||||
        strokeWidth={`${strokeWidth}px`}
 | 
			
		||||
      />
 | 
			
		||||
    </svg>
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
CircularProgress.propTypes = {
 | 
			
		||||
  size: PropTypes.number.isRequired,
 | 
			
		||||
  strokeWidth: PropTypes.number.isRequired,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const LoadingIndicator = () => (
 | 
			
		||||
  <div className='loading-indicator'>
 | 
			
		||||
    <CircularProgress size={50} strokeWidth={6} />
 | 
			
		||||
  </div>
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
export default LoadingIndicator;
 | 
			
		||||
							
								
								
									
										7
									
								
								app/javascript/mastodon/components/loading_indicator.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/javascript/mastodon/components/loading_indicator.tsx
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
import { CircularProgress } from './circular_progress';
 | 
			
		||||
 | 
			
		||||
export const LoadingIndicator: React.FC = () => (
 | 
			
		||||
  <div className='loading-indicator'>
 | 
			
		||||
    <CircularProgress size={50} strokeWidth={6} />
 | 
			
		||||
  </div>
 | 
			
		||||
);
 | 
			
		||||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ import IntersectionObserverWrapper from '../features/ui/util/intersection_observ
 | 
			
		|||
 | 
			
		||||
import { LoadMore } from './load_more';
 | 
			
		||||
import { LoadPending } from './load_pending';
 | 
			
		||||
import LoadingIndicator from './loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from './loading_indicator';
 | 
			
		||||
 | 
			
		||||
const MOUSE_IDLE_DELAY = 300;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ import { lookupAccount, fetchAccount } from 'mastodon/actions/accounts';
 | 
			
		|||
import { openModal } from 'mastodon/actions/modal';
 | 
			
		||||
import ColumnBackButton from 'mastodon/components/column_back_button';
 | 
			
		||||
import { LoadMore } from 'mastodon/components/load_more';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import ScrollContainer from 'mastodon/containers/scroll_container';
 | 
			
		||||
import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 | 
			
		||||
import { normalizeForLookup } from 'mastodon/reducers/accounts_map';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ import { lookupAccount, fetchAccount } from '../../actions/accounts';
 | 
			
		|||
import { fetchFeaturedTags } from '../../actions/featured_tags';
 | 
			
		||||
import { expandAccountFeaturedTimeline, expandAccountTimeline, connectTimeline, disconnectTimeline } from '../../actions/timelines';
 | 
			
		||||
import ColumnBackButton from '../../components/column_back_button';
 | 
			
		||||
import LoadingIndicator from '../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../components/loading_indicator';
 | 
			
		||||
import StatusList from '../../components/status_list';
 | 
			
		||||
import Column from '../ui/components/column';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ import { debounce } from 'lodash';
 | 
			
		|||
 | 
			
		||||
import { fetchBlocks, expandBlocks } from '../../actions/blocks';
 | 
			
		||||
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
 | 
			
		||||
import LoadingIndicator from '../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../components/loading_indicator';
 | 
			
		||||
import ScrollableList from '../../components/scrollable_list';
 | 
			
		||||
import AccountContainer from '../../containers/account_container';
 | 
			
		||||
import Column from '../ui/components/column';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ import { fetchDirectory, expandDirectory } from 'mastodon/actions/directory';
 | 
			
		|||
import Column from 'mastodon/components/column';
 | 
			
		||||
import ColumnHeader from 'mastodon/components/column_header';
 | 
			
		||||
import { LoadMore } from 'mastodon/components/load_more';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { RadioButton } from 'mastodon/components/radio_button';
 | 
			
		||||
import ScrollContainer from 'mastodon/containers/scroll_container';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { debounce } from 'lodash';
 | 
			
		|||
 | 
			
		||||
import { fetchDomainBlocks, expandDomainBlocks } from '../../actions/domain_blocks';
 | 
			
		||||
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
 | 
			
		||||
import LoadingIndicator from '../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../components/loading_indicator';
 | 
			
		||||
import ScrollableList from '../../components/scrollable_list';
 | 
			
		||||
import DomainContainer from '../../containers/domain_container';
 | 
			
		||||
import Column from '../ui/components/column';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ import { connect } from 'react-redux';
 | 
			
		|||
 | 
			
		||||
import { fetchTrendingLinks } from 'mastodon/actions/trends';
 | 
			
		||||
import DismissableBanner from 'mastodon/components/dismissable_banner';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
 | 
			
		||||
import Story from './components/story';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { connect } from 'react-redux';
 | 
			
		|||
import { expandSearch } from 'mastodon/actions/search';
 | 
			
		||||
import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag';
 | 
			
		||||
import { LoadMore } from 'mastodon/components/load_more';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import Account from 'mastodon/containers/account_container';
 | 
			
		||||
import Status from 'mastodon/containers/status_container';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 | 
			
		|||
import { connect } from 'react-redux';
 | 
			
		||||
 | 
			
		||||
import { fetchSuggestions } from 'mastodon/actions/suggestions';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import AccountCard from 'mastodon/features/directory/components/account_card';
 | 
			
		||||
 | 
			
		||||
const mapStateToProps = state => ({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ import { connect } from 'react-redux';
 | 
			
		|||
import { fetchTrendingHashtags } from 'mastodon/actions/trends';
 | 
			
		||||
import DismissableBanner from 'mastodon/components/dismissable_banner';
 | 
			
		||||
import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
 | 
			
		||||
const mapStateToProps = state => ({
 | 
			
		||||
  hashtags: state.getIn(['trends', 'tags', 'items']),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ import { connect } from 'react-redux';
 | 
			
		|||
import { fetchFavourites } from 'mastodon/actions/interactions';
 | 
			
		||||
import ColumnHeader from 'mastodon/components/column_header';
 | 
			
		||||
import { Icon }  from 'mastodon/components/icon';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import ScrollableList from 'mastodon/components/scrollable_list';
 | 
			
		||||
import AccountContainer from 'mastodon/containers/account_container';
 | 
			
		||||
import Column from 'mastodon/features/ui/components/column';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ import {
 | 
			
		|||
  expandFollowers,
 | 
			
		||||
} from '../../actions/accounts';
 | 
			
		||||
import ColumnBackButton from '../../components/column_back_button';
 | 
			
		||||
import LoadingIndicator from '../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../components/loading_indicator';
 | 
			
		||||
import ScrollableList from '../../components/scrollable_list';
 | 
			
		||||
import AccountContainer from '../../containers/account_container';
 | 
			
		||||
import LimitedAccountHint from '../account_timeline/components/limited_account_hint';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ import {
 | 
			
		|||
  expandFollowing,
 | 
			
		||||
} from '../../actions/accounts';
 | 
			
		||||
import ColumnBackButton from '../../components/column_back_button';
 | 
			
		||||
import LoadingIndicator from '../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../components/loading_indicator';
 | 
			
		||||
import ScrollableList from '../../components/scrollable_list';
 | 
			
		||||
import AccountContainer from '../../containers/account_container';
 | 
			
		||||
import LimitedAccountHint from '../account_timeline/components/limited_account_hint';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ import { expandListTimeline } from 'mastodon/actions/timelines';
 | 
			
		|||
import Column from 'mastodon/components/column';
 | 
			
		||||
import ColumnHeader from 'mastodon/components/column_header';
 | 
			
		||||
import { Icon }  from 'mastodon/components/icon';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { RadioButton } from 'mastodon/components/radio_button';
 | 
			
		||||
import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 | 
			
		||||
import StatusListContainer from 'mastodon/features/ui/containers/status_list_container';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { createSelector } from 'reselect';
 | 
			
		|||
import { fetchLists } from 'mastodon/actions/lists';
 | 
			
		||||
import Column from 'mastodon/components/column';
 | 
			
		||||
import ColumnHeader from 'mastodon/components/column_header';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import ScrollableList from 'mastodon/components/scrollable_list';
 | 
			
		||||
import ColumnLink from 'mastodon/features/ui/components/column_link';
 | 
			
		||||
import ColumnSubheading from 'mastodon/features/ui/components/column_subheading';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { debounce } from 'lodash';
 | 
			
		|||
 | 
			
		||||
import { fetchMutes, expandMutes } from '../../actions/mutes';
 | 
			
		||||
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
 | 
			
		||||
import LoadingIndicator from '../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../components/loading_indicator';
 | 
			
		||||
import ScrollableList from '../../components/scrollable_list';
 | 
			
		||||
import AccountContainer from '../../containers/account_container';
 | 
			
		||||
import Column from '../ui/components/column';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { Icon }  from 'mastodon/components/icon';
 | 
			
		|||
 | 
			
		||||
import { fetchReblogs } from '../../actions/interactions';
 | 
			
		||||
import ColumnHeader from '../../components/column_header';
 | 
			
		||||
import LoadingIndicator from '../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../components/loading_indicator';
 | 
			
		||||
import ScrollableList from '../../components/scrollable_list';
 | 
			
		||||
import AccountContainer from '../../containers/account_container';
 | 
			
		||||
import Column from '../ui/components/column';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 | 
			
		|||
import { connect } from 'react-redux';
 | 
			
		||||
 | 
			
		||||
import Button from 'mastodon/components/button';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import StatusCheckBox from 'mastodon/features/report/containers/status_check_box_container';
 | 
			
		||||
 | 
			
		||||
const mapStateToProps = (state, { accountId }) => ({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ import { createSelector } from 'reselect';
 | 
			
		|||
import { HotKeys } from 'react-hotkeys';
 | 
			
		||||
 | 
			
		||||
import { Icon }  from 'mastodon/components/icon';
 | 
			
		||||
import LoadingIndicator from 'mastodon/components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
 | 
			
		||||
import ScrollContainer from 'mastodon/containers/scroll_container';
 | 
			
		||||
import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
import LoadingIndicator from '../../../components/loading_indicator';
 | 
			
		||||
import { LoadingIndicator } from '../../../components/loading_indicator';
 | 
			
		||||
 | 
			
		||||
// Keep the markup in sync with <BundleModalError />
 | 
			
		||||
// (make sure they have the same dimensions)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue