From d8ae3efec39cc0d05410629a267b07295b93c59b Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Tue, 6 Jun 2017 20:20:07 +0900 Subject: [PATCH] Improve ESLint rules for JSX (#3608) * Add react/no-string-refs ESLint rule * Add react/jsx-boolean-value ESLint rule * Add react/jsx-closing-bracket-location ESLint rule * Add react/jsx-indent ESLint rule * Add react/jsx-curly-spacing ESLint rule * Add react/jsx-equals-spacing ESLint rule * Add react/jsx-first-prop-new-line ESLint rule * Add react/jsx-no-duplicate-props ESLint rule * Add react/jsx-tag-spacing ESLint rule --- .eslintrc.yml | 15 +++++++++++++++ app/javascript/mastodon/components/account.js | 6 +++--- .../mastodon/components/autosuggest_textarea.js | 3 ++- .../mastodon/components/column_back_button.js | 2 +- .../mastodon/components/dropdown_menu.js | 6 +++--- app/javascript/mastodon/components/icon_button.js | 3 ++- .../mastodon/components/media_gallery.js | 4 ++-- app/javascript/mastodon/components/status.js | 4 ++-- .../mastodon/components/status_action_bar.js | 4 ++-- .../mastodon/components/video_player.js | 2 +- .../features/account/components/header.js | 2 +- .../account_gallery/components/media_item.js | 3 ++- .../features/compose/components/compose_form.js | 2 +- .../compose/components/emoji_picker_dropdown.js | 10 ++++++---- .../compose/components/privacy_dropdown.js | 2 +- .../features/compose/components/upload_button.js | 4 ++-- .../mastodon/features/getting_started/index.js | 6 +++--- .../mastodon/features/hashtag_timeline/index.js | 2 +- .../notifications/components/notification.js | 6 +++--- .../features/status/components/action_bar.js | 2 +- .../mastodon/features/ui/components/column.js | 5 +++-- .../features/ui/components/media_modal.js | 2 +- .../mastodon/features/ui/components/modal_root.js | 3 ++- .../features/ui/components/onboarding_modal.js | 8 ++++---- .../features/ui/components/video_modal.js | 2 +- 25 files changed, 65 insertions(+), 43 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 2176618fa..049d4ecf3 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -64,9 +64,24 @@ rules: strict: off valid-typeof: error + react/jsx-boolean-value: error + react/jsx-closing-bracket-location: + - error + - line-aligned + react/jsx-curly-spacing: error + react/jsx-equals-spacing: error + react/jsx-first-prop-new-line: + - error + - multiline-multiprop + react/jsx-indent: + - error + - 2 react/jsx-no-bind: error + react/jsx-no-duplicate-props: error + react/jsx-tag-spacing: error react/jsx-wrap-multilines: error react/no-multi-comp: off + react/no-string-refs: error react/prop-types: error react/self-closing-comp: error diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 9d65af46c..960d136d3 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -55,11 +55,11 @@ class Account extends ImmutablePureComponent { const muting = account.getIn(['relationship', 'muting']); if (requested) { - buttons = ; + buttons = ; } else if (blocking) { - buttons = ; + buttons = ; } else if (muting) { - buttons = ; + buttons = ; } else { buttons = ; } diff --git a/app/javascript/mastodon/components/autosuggest_textarea.js b/app/javascript/mastodon/components/autosuggest_textarea.js index 10efd17fb..5bfc200a5 100644 --- a/app/javascript/mastodon/components/autosuggest_textarea.js +++ b/app/javascript/mastodon/components/autosuggest_textarea.js @@ -191,7 +191,8 @@ class AutosuggestTextarea extends ImmutablePureComponent { key={suggestion} data-index={suggestion} className={`autosuggest-textarea__suggestions__item ${i === selectedSuggestion ? 'selected' : ''}`} - onClick={this.onSuggestionClick}> + onClick={this.onSuggestionClick} + > ))} diff --git a/app/javascript/mastodon/components/column_back_button.js b/app/javascript/mastodon/components/column_back_button.js index 6c61ca6d4..3add65968 100644 --- a/app/javascript/mastodon/components/column_back_button.js +++ b/app/javascript/mastodon/components/column_back_button.js @@ -16,7 +16,7 @@ class ColumnBackButton extends React.PureComponent { render () { return (
- +
); diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js index e637c5f79..5712cffab 100644 --- a/app/javascript/mastodon/components/dropdown_menu.js +++ b/app/javascript/mastodon/components/dropdown_menu.js @@ -53,13 +53,13 @@ class DropdownMenu extends React.PureComponent { renderItem = (item, i) => { if (item === null) { - return
  • ; + return
  • ; } const { text, action, href = '#' } = item; return ( -
  • +
  • {text} @@ -81,7 +81,7 @@ class DropdownMenu extends React.PureComponent { return ( - + diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index c8df589b6..302e63df5 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -76,7 +76,8 @@ class IconButton extends React.PureComponent { title={this.props.title} className={classes.join(' ')} onClick={this.handleClick} - style={style}> + style={style} + >