From 8c08e0c6c7bdf0d96b9ec224451c023deca0b8c2 Mon Sep 17 00:00:00 2001 From: Dmitry Lekomtsev Date: Wed, 16 Feb 2022 09:15:23 +0300 Subject: [PATCH 1/2] chore(plasma-b2c): add typecoverage script --- packages/plasma-b2c/package-lock.json | 303 ++++++++++++++++++++++++++ packages/plasma-b2c/package.json | 30 +-- 2 files changed, 313 insertions(+), 20 deletions(-) diff --git a/packages/plasma-b2c/package-lock.json b/packages/plasma-b2c/package-lock.json index a07b26c05..cb14be357 100644 --- a/packages/plasma-b2c/package-lock.json +++ b/packages/plasma-b2c/package-lock.json @@ -5324,6 +5324,16 @@ "@hapi/hoek": "^8.3.0" } }, + "@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "dev": true, + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -7689,6 +7699,16 @@ "storeon": "3.1.4" } }, + "@semantic-ui-react/event-stack": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.2.tgz", + "integrity": "sha512-Yd0Qf7lPCIjzJ9bZYfurlNu2RDXT6KKSyubHfYK3WjRauhxCsq6Fk2LMRI9DEvShoEU+AsLSv3NGkqXAcVp0zg==", + "dev": true, + "requires": { + "exenv": "^1.2.2", + "prop-types": "^15.6.2" + } + }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -7707,6 +7727,27 @@ "@sinonjs/commons": "^1.7.0" } }, + "@stardust-ui/react-component-event-listener": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-event-listener/-/react-component-event-listener-0.38.0.tgz", + "integrity": "sha512-sIP/e0dyOrrlb8K7KWumfMxj/gAifswTBC4o68Aa+C/GA73ccRp/6W1VlHvF/dlOR4KLsA+5SKnhjH36xzPsWg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2" + } + }, + "@stardust-ui/react-component-ref": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-ref/-/react-component-ref-0.38.0.tgz", + "integrity": "sha512-xjs6WnvJVueSIXMWw0C3oWIgAPpcD03qw43oGOjUXqFktvpNkB73JoKIhS4sCrtQxBdct75qqr4ZL6JiyPcESw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2", + "react-is": "^16.6.3" + } + }, "@storybook/addon-actions": { "version": "6.3.8", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.3.8.tgz", @@ -13584,6 +13625,12 @@ } } }, + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==", + "dev": true + }, "clean-css": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", @@ -16251,6 +16298,12 @@ "strip-eof": "^1.0.0" } }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=", + "dev": true + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -23778,6 +23831,12 @@ "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", "dev": true }, + "keyboard-key": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", + "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==", + "dev": true + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -24648,6 +24707,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -25579,6 +25644,12 @@ } } }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -30683,6 +30754,42 @@ "node-forge": "^0.10.0" } }, + "semantic-ui-react": { + "version": "0.88.2", + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz", + "integrity": "sha512-+02kN2z8PuA/cMdvDUsHhbJmBzxxgOXVHMFr9XK7zGb0wkW9A6OPQMFokWz7ozlVtKjN6r7zsb+Qvjk/qq1OWw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "@semantic-ui-react/event-stack": "^3.1.0", + "@stardust-ui/react-component-event-listener": "~0.38.0", + "@stardust-ui/react-component-ref": "~0.38.0", + "classnames": "^2.2.6", + "keyboard-key": "^1.0.4", + "lodash": "^4.17.15", + "prop-types": "^15.7.2", + "react-is": "^16.8.6", + "react-popper": "^1.3.4", + "shallowequal": "^1.1.0" + }, + "dependencies": { + "react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + } + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -32595,6 +32702,65 @@ "prelude-ls": "~1.1.2" } }, + "type-coverage-core": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.21.0.tgz", + "integrity": "sha512-VNC7Ig0KAzpYjWvxQ1SaMufEqSm4GPSsdVaCWA5fRHSjSvkXbPVK+C6H0lIq2t8brkrvnXk7iDs9g4sjux6JQw==", + "dev": true, + "requires": { + "fast-glob": "3", + "minimatch": "3", + "normalize-path": "3", + "tslib": "1 || 2", + "tsutils": "3" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + } + } + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -32617,6 +32783,12 @@ "mime-types": "~2.1.24" } }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -32638,6 +32810,137 @@ "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", "dev": true }, + "typescript-coverage-report": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/typescript-coverage-report/-/typescript-coverage-report-0.6.4.tgz", + "integrity": "sha512-G+0OFYxwN5oRbORlU1nKYtO00G567lcl4+nbg3MU3Y9ayFnh677dMHmAL4JGP/4Cb1IBN5h/DUQDr/z9X+9lag==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.1", + "commander": "^5.0.0", + "ncp": "^2.0.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "rimraf": "^3.0.2", + "semantic-ui-react": "^0.88.2", + "type-coverage-core": "^2.17.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "dev": true, + "requires": { + "colors": "1.4.0", + "string-width": "^4.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", diff --git a/packages/plasma-b2c/package.json b/packages/plasma-b2c/package.json index 6160229f2..de5205f70 100644 --- a/packages/plasma-b2c/package.json +++ b/packages/plasma-b2c/package.json @@ -24,7 +24,12 @@ "build:esm": "BABEL_ENV=esm SC_NAMESPACE=plasma-b2c babel ./src --out-dir ./es --source-maps --extensions .ts,.tsx", "storybook": "start-storybook -s .storybook/public -p ${PORT:-7007} -c .storybook", "storybook:build": "build-storybook -s .storybook/public -c .storybook -o build-sb", - "test": "jest" + "test": "jest", + "typescript-coverage": "npx typescript-coverage-report || echo 'See artifacts'" + }, + "typeCoverage": { + "ignoreFiles": ["src/**/*component-test.tsx", "src/**/*stories.tsx", "src/**/*test.*"], + "atLeast": 100 }, "dependencies": { "@popperjs/core": "2.9.2", @@ -78,25 +83,10 @@ "styled-components": "5.3.1", "ts-jest": "27.0.6", "ts-node": "10.3.0", - "typescript": "3.9.10" + "typescript": "3.9.10", + "typescript-coverage-report": "0.6.4" }, - "keywords": [ - "design-system", - "react-components", - "ui-kit", - "react" - ], - "files": [ - "components", - "es", - "hocs", - "hooks", - "mixins", - "tokens", - "types", - "utils", - "index.d.ts", - "index.js" - ], + "keywords": ["design-system", "react-components", "ui-kit", "react"], + "files": ["components", "es", "hocs", "hooks", "mixins", "tokens", "types", "utils", "index.d.ts", "index.js"], "sideEffects": false } From 35076aced82b0a038a7f3a4914a8fa4824787dbd Mon Sep 17 00:00:00 2001 From: Dmitry Lekomtsev Date: Wed, 16 Feb 2022 09:15:33 +0300 Subject: [PATCH 2/2] feat(plasma-b2c): increase type coverage --- packages/plasma-b2c/package.json | 2 +- .../plasma-b2c/src/components/Editable/Editable.tsx | 4 ++-- packages/plasma-b2c/src/components/Slider/Double.tsx | 11 ++++++----- packages/plasma-b2c/src/components/Slider/Handle.tsx | 6 +++--- packages/plasma-b2c/src/components/Slider/Single.tsx | 7 ++++--- packages/plasma-b2c/src/utils/selectText.ts | 5 ++++- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/plasma-b2c/package.json b/packages/plasma-b2c/package.json index de5205f70..7f46a1cae 100644 --- a/packages/plasma-b2c/package.json +++ b/packages/plasma-b2c/package.json @@ -25,7 +25,7 @@ "storybook": "start-storybook -s .storybook/public -p ${PORT:-7007} -c .storybook", "storybook:build": "build-storybook -s .storybook/public -c .storybook -o build-sb", "test": "jest", - "typescript-coverage": "npx typescript-coverage-report || echo 'See artifacts'" + "typescript-coverage": "npx typescript-coverage-report" }, "typeCoverage": { "ignoreFiles": ["src/**/*component-test.tsx", "src/**/*stories.tsx", "src/**/*test.*"], diff --git a/packages/plasma-b2c/src/components/Editable/Editable.tsx b/packages/plasma-b2c/src/components/Editable/Editable.tsx index 65dc8ecff..c87664ff7 100644 --- a/packages/plasma-b2c/src/components/Editable/Editable.tsx +++ b/packages/plasma-b2c/src/components/Editable/Editable.tsx @@ -48,7 +48,7 @@ type RefElement = HTMLDivElement | HTMLSpanElement; export interface EditableProps { value?: string; - onChange?: React.ChangeEventHandler; + onChange?: React.FormEventHandler; onBlur?: React.FocusEventHandler; onPaste?: React.ClipboardEventHandler; spellCheck?: 'true' | 'false'; @@ -144,7 +144,7 @@ export const Editable: React.FC = ({ [maxLength], ); - const handleChange = useCallback( + const handleChange = useCallback>( (e) => { if (!inputRef.current) return; diff --git a/packages/plasma-b2c/src/components/Slider/Double.tsx b/packages/plasma-b2c/src/components/Slider/Double.tsx index 1f8444254..4e9c03934 100644 --- a/packages/plasma-b2c/src/components/Slider/Double.tsx +++ b/packages/plasma-b2c/src/components/Slider/Double.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { DraggableData } from 'react-draggable'; import { SliderBase } from './SliderBase'; import { Handle } from './Handle'; @@ -65,7 +66,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha })); }, [value, state.stepSize, min]); - const setStepSize = React.useCallback((newStepSize) => { + const setStepSize = React.useCallback((newStepSize: number) => { setState((prevState) => ({ ...prevState, stepSize: newStepSize, @@ -73,7 +74,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha }, []); const onFirstHandleChange = React.useCallback( - (handleValue, data) => { + (handleValue: number, data: DraggableData) => { if (secondHandleRef?.current) { const newHandleXPosition = data.x; const secondHandleXPosition = getXCenterHandle(secondHandleRef.current); @@ -95,7 +96,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha ); const onFirstHandleChangeCommited = React.useCallback( - (handleValue, data) => { + (handleValue: number, data: DraggableData) => { onChangeCommitted([handleValue, value[1]]); setState((prevState) => ({ @@ -108,7 +109,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha ); const onSecondHandleChange = React.useCallback( - (handleValue, data) => { + (handleValue: number, data: DraggableData) => { if (firstHandleRef?.current) { const firstXHandleXPosition = getXCenterHandle(firstHandleRef.current); @@ -131,7 +132,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha ); const onSecondHandleChangeCommited = React.useCallback( - (handleValue, data) => { + (handleValue: number, data: DraggableData) => { onChangeCommitted([value[0], handleValue]); setState((prevState) => ({ ...prevState, diff --git a/packages/plasma-b2c/src/components/Slider/Handle.tsx b/packages/plasma-b2c/src/components/Slider/Handle.tsx index 3d49e775a..aa98be090 100644 --- a/packages/plasma-b2c/src/components/Slider/Handle.tsx +++ b/packages/plasma-b2c/src/components/Slider/Handle.tsx @@ -1,6 +1,6 @@ import React from 'react'; import styled from 'styled-components'; -import Draggable, { DraggableData } from 'react-draggable'; +import Draggable, { DraggableData, DraggableEventHandler } from 'react-draggable'; import { surfaceLiquid03, white } from '@sberdevices/plasma-core'; import { handleDiameter, handleBorderWidth } from './SliderBase'; @@ -77,7 +77,7 @@ export const Handle = React.forwardRef( ({ stepSize, onChangeCommitted, onChange, xPosition, min, max, bounds = [], zIndex, disabled, side }, ref) => { const lastOnChangeValue = React.useRef(null); - const onDrag = React.useCallback( + const onDrag = React.useCallback( (_, data) => { const newHandleXPosition = data.lastX; @@ -92,7 +92,7 @@ export const Handle = React.forwardRef( [onChange, stepSize, min, max], ); - const onStop = React.useCallback( + const onStop = React.useCallback( (_, data) => { const newHandleXPosition = data.lastX; const newValue = getValue(newHandleXPosition, stepSize, min, max); diff --git a/packages/plasma-b2c/src/components/Slider/Single.tsx b/packages/plasma-b2c/src/components/Slider/Single.tsx index 893ea6601..8a8fe7624 100644 --- a/packages/plasma-b2c/src/components/Slider/Single.tsx +++ b/packages/plasma-b2c/src/components/Slider/Single.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { DraggableData } from 'react-draggable'; import { SliderBase } from './SliderBase'; import { Handle } from './Handle'; @@ -48,7 +49,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha })); }, [value, state.stepSize, min]); - const setStepSize = React.useCallback((newStepSize) => { + const setStepSize = React.useCallback((newStepSize: number) => { setState((prevState) => ({ ...prevState, stepSize: newStepSize, @@ -56,7 +57,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha }, []); const onHandleChange = React.useCallback( - (handleValue, data) => { + (handleValue: number, data: DraggableData) => { const newHandleXPosition = data.x; setState((prevState) => ({ @@ -72,7 +73,7 @@ export const Slider: React.FC = ({ min, max, value, disabled, onCha ); const onHandleChangeCommited = React.useCallback( - (handleValue, data) => { + (handleValue: number, data: { lastX: number }) => { onChangeCommitted(handleValue); setState((prevState) => ({ ...prevState, diff --git a/packages/plasma-b2c/src/utils/selectText.ts b/packages/plasma-b2c/src/utils/selectText.ts index 7b3c5142c..96a500dc9 100644 --- a/packages/plasma-b2c/src/utils/selectText.ts +++ b/packages/plasma-b2c/src/utils/selectText.ts @@ -1,5 +1,8 @@ interface Body extends HTMLElement { - createTextRange: () => any; + createTextRange: () => { + moveToElementText: (node: Node) => void; + select: () => void; + }; } export function selectText(node: Node) {