Skip to content

Commit 55e47af

Browse files
[COM-3545]: apply new linter rules and fix some code
1 parent f89bb4c commit 55e47af

File tree

115 files changed

+1146
-411
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+1146
-411
lines changed

.eslintrc.js

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,30 @@
11
module.exports = {
2-
env: {
3-
browser: true,
4-
node: true,
5-
es6: true,
2+
parser: '@babel/eslint-parser',
3+
parserOptions: {
4+
requireConfigFile: false,
65
},
7-
extends: '@csssr/eslint-config-core',
8-
plugins: ['react-hooks', '@emotion'],
6+
extends: [
7+
require.resolve('@csssr/linters/eslint/base'),
8+
require.resolve('@csssr/linters/eslint/react'),
9+
],
10+
plugins: ['@emotion'],
911
rules: {
10-
'prettier/prettier': [
12+
// Отключения
13+
'react/prop-types': 'off', // потому что много где нет
14+
'react/forbid-prop-types': 'off', // чтобы можно было оставить object и не уточнять до shape
15+
'jsx-a11y/anchor-is-valid': 'off', // потому что Next
16+
'react/no-danger': 'off', // потому что много где используется
17+
'no-nested-ternary': 'off',
18+
19+
// Донастройка
20+
camelcase: [
1121
'error',
1222
{
13-
useTabs: false,
14-
printWidth: 100,
15-
semi: false,
16-
singleQuote: true,
17-
jsxSingleQuote: false,
18-
trailingComma: 'all',
19-
bracketSpacing: true,
23+
properties: 'never',
2024
},
2125
],
22-
'react/react-in-jsx-scope': 'off',
23-
'react/prop-types': 'off',
24-
'react/jsx-no-target-blank': 'off',
25-
'react-hooks/rules-of-hooks': 'error',
26-
'react-hooks/exhaustive-deps': 'warn',
26+
27+
// Доп. правила
2728
'@emotion/pkg-renaming': 'error',
2829
},
29-
settings: {
30-
react: {
31-
version: 'detect',
32-
},
33-
},
3430
}

.prettierrc.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module.exports = {
2+
useTabs: false,
3+
printWidth: 100,
4+
semi: false,
5+
singleQuote: true,
6+
jsxSingleQuote: false,
7+
trailingComma: 'all',
8+
bracketSpacing: true,
9+
}

components/BenchmarkEmail/BenchmarkEmail.jsx

Lines changed: 56 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,98 @@
1-
import styled from '@emotion/styled'
2-
import styles from './BenchmarkEmail.styles'
1+
/* eslint-disable camelcase */
32
import { Heading, SubHeading } from '@csssr/core-design'
43
import { PictureSmart } from '@csssr/csssr.images/dist/react'
4+
import styled from '@emotion/styled'
5+
6+
import styles from './BenchmarkEmail.styles'
57
import TextField from './TextField'
68

79
const BenchmarkEmail = ({ className }) => {
810
const isWindowContext = typeof window !== 'undefined'
911

1012
function rmspaces(x) {
11-
var leftx = 0
12-
var rightx = x.length - 1
13-
while (x.charAt(leftx) == ' ') {
13+
let leftx = 0
14+
let rightx = x.length - 1
15+
while (x.charAt(leftx) === ' ') {
1416
leftx++
1517
}
16-
while (x.charAt(rightx) == ' ') {
18+
while (x.charAt(rightx) === ' ') {
1719
--rightx
1820
}
19-
var q = x.substr(leftx, rightx - leftx + 1)
20-
if (leftx == x.length && rightx == -1) {
21+
let q = x.substr(leftx, rightx - leftx + 1)
22+
if (leftx === x.length && rightx === -1) {
2123
q = ''
2224
}
2325
return q
2426
}
2527
function checkfield(data) {
26-
if (rmspaces(data) == '') {
28+
if (rmspaces(data) === '') {
2729
return false
2830
} else {
2931
return true
3032
}
3133
}
3234
function isemail(data) {
33-
var flag = false
35+
let flag = false
3436
if (
35-
data.indexOf('@', 0) == -1 ||
36-
data.indexOf('\\', 0) != -1 ||
37-
data.indexOf('/', 0) != -1 ||
37+
data.indexOf('@', 0) === -1 ||
38+
data.indexOf('\\', 0) !== -1 ||
39+
data.indexOf('/', 0) !== -1 ||
3840
!checkfield(data) ||
39-
data.indexOf('.', 0) == -1 ||
40-
data.indexOf('@') == 0 ||
41+
data.indexOf('.', 0) === -1 ||
42+
data.indexOf('@') === 0 ||
4143
data.lastIndexOf('.') < data.lastIndexOf('@') ||
42-
data.lastIndexOf('.') == data.length - 1 ||
43-
data.lastIndexOf('@') != data.indexOf('@') ||
44-
data.indexOf(',', 0) != -1 ||
45-
data.indexOf(':', 0) != -1 ||
46-
data.indexOf(';', 0) != -1
44+
data.lastIndexOf('.') === data.length - 1 ||
45+
data.lastIndexOf('@') !== data.indexOf('@') ||
46+
data.indexOf(',', 0) !== -1 ||
47+
data.indexOf(':', 0) !== -1 ||
48+
data.indexOf(';', 0) !== -1
4749
) {
4850
return flag
4951
} else {
50-
var temp = rmspaces(data)
51-
if (temp.indexOf(' ', 0) != -1) {
52+
const temp = rmspaces(data)
53+
if (temp.indexOf(' ', 0) !== -1) {
5254
flag = true
5355
}
54-
var e2 = temp.length - temp.lastIndexOf('.') - 1
55-
var i1 = temp.indexOf('@')
56-
if (temp.charAt(i1 + 1) == '.' || e2 < 1) {
56+
const e2 = temp.length - temp.lastIndexOf('.') - 1
57+
const i1 = temp.indexOf('@')
58+
if (temp.charAt(i1 + 1) === '.' || e2 < 1) {
5759
flag = true
5860
}
5961
return !flag
6062
}
6163
}
6264

6365
function submit_LY6HHClick() {
64-
var retVal = true
65-
var frm = isWindowContext && document.getElementById('formbox_screen_subscribe_LY6HH')
66+
let retVal = true
67+
let frm = isWindowContext && document.getElementById('formbox_screen_subscribe_LY6HH')
6668
if (!isemail(isWindowContext && document.getElementsByName('fldemail_LY6HH')[0].value)) {
6769
alert('Please enter the Email Address')
6870
isWindowContext && document.getElementsByName('fldemail_LY6HH')[0].classList.add('error')
6971
retVal = false
7072
}
71-
if (retVal == true) {
73+
if (retVal === true) {
7274
frm = '_LY6HH'
73-
var f = isWindowContext && document.createElement('form')
75+
const f = isWindowContext && document.createElement('form')
7476
f.setAttribute('accept-charset', 'UTF-8')
7577
f.setAttribute('method', 'post')
7678
f.setAttribute('action', 'https://lb.benchmarkemail.com//code/lbform')
77-
var elms =
79+
const elms =
7880
isWindowContext && document.getElementsByName('frmLB' + frm)[0].getElementsByTagName('*')
79-
var ty = ''
80-
for (var ei = 0; ei < elms.length; ei++) {
81+
let ty = ''
82+
for (let ei = 0; ei < elms.length; ei++) {
8183
ty = elms[ei].type
8284
if (
83-
ty == 'hidden' ||
84-
ty == 'text' ||
85-
(ty == 'checkbox' && elms[ei].checked) ||
86-
(ty == 'radio' && elms[ei].checked) ||
87-
ty == 'textarea' ||
88-
ty == 'select-one' ||
89-
ty == 'button'
85+
ty === 'hidden' ||
86+
ty === 'text' ||
87+
(ty === 'checkbox' && elms[ei].checked) ||
88+
(ty === 'radio' && elms[ei].checked) ||
89+
ty === 'textarea' ||
90+
ty === 'select-one' ||
91+
ty === 'button'
9092
) {
91-
var elm = elms[ei]
92-
if (elm.id != '') {
93-
var i = document.createElement('input')
93+
const elm = elms[ei]
94+
if (elm.id !== '') {
95+
const i = document.createElement('input')
9496
i.type = 'hidden'
9597
i.name = elm.name.replace('_LY6HH', '')
9698
i.id = elm.id
@@ -119,18 +121,18 @@ const BenchmarkEmail = ({ className }) => {
119121
}
120122

121123
function debounce_LY6HH(func, wait, immediate) {
122-
var timeout
124+
let timeout
123125

124126
return function () {
125-
var context = this,
126-
args = arguments
127-
var later = function () {
127+
const context = this
128+
const args = arguments
129+
const later = function () {
128130
timeout = null
129131
if (!immediate) {
130132
func.apply(context, args)
131133
}
132134
}
133-
var callNow = immediate && !timeout
135+
const callNow = immediate && !timeout
134136
clearTimeout(timeout)
135137
timeout = setTimeout(later, wait)
136138
if (callNow) {
@@ -139,7 +141,7 @@ const BenchmarkEmail = ({ className }) => {
139141
}
140142
}
141143

142-
var hasVerticalCenter_LY6HH =
144+
const hasVerticalCenter_LY6HH =
143145
isWindowContext && document.getElementsByClassName('position-centered')
144146
function verticalCenter_LY6HH(element) {
145147
if (element) {
@@ -148,15 +150,15 @@ const BenchmarkEmail = ({ className }) => {
148150
}
149151
setTimeout(function () {
150152
if (hasVerticalCenter_LY6HH.length > 0) {
151-
var windowHeight = Math.max(
153+
const windowHeight = Math.max(
152154
isWindowContext && document.documentElement.clientHeight,
153155
window.innerHeight || 0,
154156
)
155-
var formElement_LY6HH =
157+
const formElement_LY6HH =
156158
isWindowContext && document.getElementsByClassName('formbox-editor_LY6HH')[0]
157-
var formHeight_LY6HH = formElement_LY6HH.clientHeight
159+
const formHeight_LY6HH = formElement_LY6HH.clientHeight
158160
if (formHeight_LY6HH < windowHeight) {
159-
var newPosition = 0
161+
let newPosition = 0
160162
newPosition = (windowHeight - formHeight_LY6HH) / 2
161163
formElement_LY6HH.style.top = newPosition + 'px'
162164
} else {
@@ -170,7 +172,7 @@ const BenchmarkEmail = ({ className }) => {
170172
}
171173

172174
if (hasVerticalCenter_LY6HH.length > 0) {
173-
var resizeEvent_LY6HH = debounce_LY6HH(function () {
175+
const resizeEvent_LY6HH = debounce_LY6HH(function () {
174176
verticalCenter_LY6HH()
175177
}, 250)
176178
window.addEventListener('resize', resizeEvent_LY6HH)
@@ -236,6 +238,7 @@ const BenchmarkEmail = ({ className }) => {
236238
/>
237239
</fieldset>
238240
<fieldset className="fieldset">
241+
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}
239242
<div
240243
id="btnSubmit_LY6HH"
241244
className="formbox-button_LY6HH"

components/BenchmarkEmail/BenchmarkEmail.styles.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { css, keyframes } from '@emotion/react'
2+
23
import { calcRem } from '../../utils/style/calcRem'
34

45
const base = ({ breakpoints: { mobile, tablet }, colors }) => css`

components/BenchmarkEmail/TextField/TextField.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import React, { useState } from 'react'
2-
import { string } from 'prop-types'
3-
import cn from 'classnames'
41
import styled from '@emotion/styled'
2+
import cn from 'classnames'
3+
import { string } from 'prop-types'
4+
import React, { useState } from 'react'
5+
56
import styles from './TextField.styles'
67

78
const TextField = ({ className, id, name, label, testId, autocomplete, type = 'text' }) => {

components/BenchmarkEmail/TextField/TextField.styles.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { css } from '@emotion/react'
2+
23
import calcRem from '../../../utils/style/calcRem'
34

45
const base = ({ colors }) => css`

components/ContactForm/ContactForm.jsx

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
import { useState } from 'react'
2-
import { string } from 'prop-types'
3-
import Fade from 'react-reveal/Fade'
1+
import { AnimatedButton } from '@csssr/core-design'
2+
import styled from '@emotion/styled'
43
import cn from 'classnames'
5-
import { Field, Form as ReactFinalForm } from 'react-final-form'
64
import { FORM_ERROR } from 'final-form'
7-
import styled from '@emotion/styled'
8-
import styles from './ContactForm.styles'
9-
import { AnimatedButton } from '@csssr/core-design'
10-
import TextField from './TextField'
11-
import FormStateMessage from './FormStateMessage'
5+
import { string } from 'prop-types'
6+
import { useState } from 'react'
7+
import { Field, Form as ReactFinalForm } from 'react-final-form'
8+
import Fade from 'react-reveal/Fade'
9+
1210
import testEmails from '../../utils/testEmails'
1311
import rateFormValidationRules from '../../utils/validators/rateFormValidationRules'
1412

13+
import styles from './ContactForm.styles'
14+
import FormStateMessage from './FormStateMessage'
15+
import TextField from './TextField'
16+
1517
const Component = ({
1618
className,
1719
kind,
@@ -80,7 +82,7 @@ const Component = ({
8082

8183
return (
8284
<div
83-
className={cn(`${className}`, {
85+
className={cn(String(className), {
8486
news: kind === 'news',
8587
post: kind === 'post',
8688
mainPage: kind !== 'news' && kind !== 'post',
@@ -133,13 +135,14 @@ const Component = ({
133135
</div>
134136
<Fade duration={400} collapse when={isMobile || !isMessageHidden}>
135137
<p className="policy">
136-
Отправляя данную форму, я&nbsp;подтверждаю своё согласие на&nbsp;получение рекламных и&nbsp;информационных материалов,
137-
а&nbsp;также факт своего ознакомления и согласия с
138+
Отправляя данную форму, я&nbsp;подтверждаю своё согласие на&nbsp;получение рекламных
139+
и&nbsp;информационных материалов, а&nbsp;также факт своего ознакомления и согласия с
138140
<a
139141
className="subscribe-policy-link"
140142
href="https://csssr.com/ru/privacy-policy"
141143
target="_blank"
142144
data-testid={`${formName}:link:privacyPolicy`}
145+
rel="noreferrer"
143146
>
144147
{' '}
145148
Политикой конфиденциальности

components/ContactForm/ContactForm.styles.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { css } from '@emotion/react'
2+
23
import { calcRem } from '../../utils/style/calcRem'
34

45
const base = ({ breakpoints: { tablet, mobile }, colors }) => css`

components/ContactForm/FormStateMessage/FormStateMessage.jsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import React from 'react'
2-
import cn from 'classnames'
1+
import { Text } from '@csssr/core-design'
32
import styled from '@emotion/styled'
4-
import styles from './FormStateMessage.styles'
3+
import cn from 'classnames'
54
import { func, oneOf, string } from 'prop-types'
6-
import { Text } from '@csssr/core-design'
5+
import React from 'react'
6+
7+
import styles from './FormStateMessage.styles'
78

89
const FormStateMessage = ({ className, kind, status, testId, onTryAgain }) => {
910
const getMessage = () => {
@@ -41,6 +42,7 @@ const FormStateMessage = ({ className, kind, status, testId, onTryAgain }) => {
4142
</span>
4243
{status === 'fail' && (
4344
<>
45+
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}
4446
<span className="reset-button" onClick={onTryAgain}>
4547
Попробуйте
4648
<br /> еще раз

components/ContactForm/FormStateMessage/FormStateMessage.styles.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { css } from '@emotion/react'
2+
23
import { calcRem } from '../../../utils/style/calcRem'
34

45
const base = ({ breakpoints: { mobile }}) => css`
@@ -86,4 +87,5 @@ const StyledFormStateMessage = (props) => {
8687
${base({ breakpoints })}
8788
`
8889
}
90+
8991
export default StyledFormStateMessage

0 commit comments

Comments
 (0)