Skip to content

Commit a7044d6

Browse files
committed
fix: update dependencies, use react 18 types in tests
1 parent b44d8d4 commit a7044d6

11 files changed

+702
-310
lines changed

Diff for: package.json

+20-20
Original file line numberDiff line numberDiff line change
@@ -45,36 +45,36 @@
4545
"zoom-level": "^2.5.0"
4646
},
4747
"devDependencies": {
48-
"@babel/core": "^7.18.10",
49-
"@babel/preset-env": "^7.18.10",
48+
"@babel/core": "^7.20.12",
49+
"@babel/preset-env": "^7.20.2",
5050
"@jamesacarr/eslint-formatter-github-actions": "^0.1.0",
51-
"@react-hookz/eslint-config": "^1.7.1",
52-
"@semantic-release/changelog": "^6.0.1",
51+
"@react-hookz/eslint-config": "^1.7.6",
52+
"@semantic-release/changelog": "^6.0.2",
5353
"@semantic-release/git": "^10.0.1",
54-
"@semantic-release/github": "^8.0.5",
55-
"@types/jasmine": "^4.0.3",
54+
"@semantic-release/github": "^8.0.7",
55+
"@types/jasmine": "^4.3.1",
5656
"@types/karma": "^6.3.3",
57-
"@types/react": "^17",
58-
"@types/react-dom": "^17",
57+
"@types/react": "^18.0.27",
58+
"@types/react-dom": "^18.0.10",
5959
"cross-env": "^7.0.3",
60-
"jasmine-core": "^4.3.0",
61-
"karma": "^6.4.0",
60+
"jasmine-core": "^4.5.0",
61+
"karma": "^6.4.1",
6262
"karma-chrome-launcher": "^3.1.1",
6363
"karma-coverage": "^2.2.0",
6464
"karma-jasmine": "^5.1.0",
6565
"karma-typescript": "^5.5.3",
66-
"lint-staged": "^13.0.3",
67-
"prettier": "^2.7.1",
68-
"react": "^17",
69-
"react-dom": "^17",
70-
"rimraf": "^4.0.0",
71-
"rollup": "^2.77.0",
66+
"lint-staged": "^13.1.0",
67+
"prettier": "^2.8.3",
68+
"react": "^18.2.0",
69+
"react-dom": "^18.2.0",
70+
"rimraf": "^4.1.2",
71+
"rollup": "^3.14.0",
7272
"rollup-plugin-babel": "^4.4.0",
73-
"rollup-plugin-typescript2": "^0.34.0",
74-
"semantic-release": "^19.0.3",
73+
"rollup-plugin-typescript2": "^0.34.1",
74+
"semantic-release": "^20.1.0",
7575
"simulant": "^0.2.2",
76-
"tslib": "^2.4.0",
77-
"typescript": "^4.7.4"
76+
"tslib": "^2.5.0",
77+
"typescript": "^4.9.5"
7878
},
7979
"lint-staged": {
8080
"*.{js,jsx,ts,tsx,md,mdx}": "eslint --fix"

Diff for: rollup.config.js

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import babel from 'rollup-plugin-babel';
2-
import ts from 'rollup-plugin-typescript2';
3-
import pkg from './package.json';
1+
const babelPlugin = require('rollup-plugin-babel');
2+
const tsPlugin = require('rollup-plugin-typescript2');
3+
const pkg = require('./package.json');
44

55
const ownKeys = Object.getOwnPropertyNames;
66
const externalDependencies = [
77
...new Set([...ownKeys(pkg.peerDependencies), ...ownKeys(pkg.dependencies)]),
88
];
99

10-
export default [
10+
module.exports = [
1111
{
1212
input: './src/index.ts',
1313
external: externalDependencies,
@@ -21,14 +21,12 @@ export default [
2121
],
2222

2323
plugins: [
24-
ts({
24+
tsPlugin({
2525
clean: true,
2626
useTsconfigDeclarationDir: true,
2727
tsconfigOverride: {
2828
compilerOptions: {
2929
module: 'esnext',
30-
// ToDo: FIXME! sadly rollup do not handle optional chaining yet
31-
target: 'es2019',
3230
declaration: true,
3331
declarationDir: `${__dirname}/dist/types`,
3432
},
@@ -55,7 +53,7 @@ export default [
5553
],
5654

5755
plugins: [
58-
ts({
56+
tsPlugin({
5957
clean: true,
6058
tsconfigOverride: {
6159
compilerOptions: {
@@ -65,7 +63,7 @@ export default [
6563
},
6664
},
6765
}),
68-
babel({
66+
babelPlugin({
6967
babelrc: false,
7068
exclude: 'node_modules/**',
7169
extensions: ['.ts', '.tsx', '.js', '.jsx'],

Diff for: src/Scrollbar.tsx

+10-7
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,10 @@ export const ScrollbarContext: React.Context<ScrollbarContextValue> = React.crea
109109
parentScrollbar: null,
110110
} as ScrollbarContextValue);
111111

112-
export default class Scrollbar extends React.Component<ScrollbarProps, ScrollbarState> {
112+
export default class Scrollbar extends React.Component<
113+
React.PropsWithChildren<ScrollbarProps>,
114+
ScrollbarState
115+
> {
113116
// eslint-disable-next-line react/static-property-placement
114117
static contextType = ScrollbarContext;
115118

@@ -649,7 +652,9 @@ export default class Scrollbar extends React.Component<ScrollbarProps, Scrollbar
649652

650653
let bitmask = 0;
651654

652-
if (!force) {
655+
if (force) {
656+
bitmask = 0b111_1111_1111_1111;
657+
} else {
653658
if (prevScrollState.clientHeight !== scrollState.clientHeight) bitmask |= Math.trunc(1);
654659
if (prevScrollState.clientWidth !== scrollState.clientWidth) bitmask |= 1 << 1;
655660
if (prevScrollState.scrollHeight !== scrollState.scrollHeight) bitmask |= 1 << 2;
@@ -674,8 +679,6 @@ export default class Scrollbar extends React.Component<ScrollbarProps, Scrollbar
674679
if (bitmask === 0) {
675680
return prevScrollState;
676681
}
677-
} else {
678-
bitmask = 0b111_1111_1111_1111;
679682
}
680683

681684
if (!props.native && this.holderElement) {
@@ -839,9 +842,9 @@ export default class Scrollbar extends React.Component<ScrollbarProps, Scrollbar
839842
...propsHolderProps
840843
} = this.props as ScrollbarProps;
841844

842-
const scrollbarWidth = !util.isUndef(propsScrollbarWidth)
843-
? propsScrollbarWidth
844-
: util.getScrollbarWidth() || 0;
845+
const scrollbarWidth = util.isUndef(propsScrollbarWidth)
846+
? util.getScrollbarWidth() || 0
847+
: propsScrollbarWidth;
845848

846849
if (native || (!scrollbarWidth && mobileNative)) {
847850
this.elementRefHolder(null);

Diff for: src/ScrollbarThumb.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -152,17 +152,17 @@ export default class ScrollbarThumb extends React.Component<ScrollbarThumbProps,
152152
ev.preventDefault();
153153
ev.stopPropagation();
154154

155-
if (!isUndef(ev.offsetX)) {
156-
/* istanbul ignore next */
157-
this.initialOffsetX = ev.offsetX;
158-
/* istanbul ignore next */
159-
this.initialOffsetY = ev.offsetY;
160-
} else {
155+
if (isUndef(ev.offsetX)) {
161156
const rect: ClientRect = this.element.getBoundingClientRect();
162157
this.initialOffsetX =
163158
(ev.clientX || (ev as unknown as TouchEvent).touches[0].clientX) - rect.left;
164159
this.initialOffsetY =
165160
(ev.clientY || (ev as unknown as TouchEvent).touches[0].clientY) - rect.top;
161+
} else {
162+
/* istanbul ignore next */
163+
this.initialOffsetX = ev.offsetX;
164+
/* istanbul ignore next */
165+
this.initialOffsetY = ev.offsetY;
166166
}
167167
};
168168

Diff for: src/ScrollbarTrack.tsx

+10-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ export type ScrollbarTrackProps = ElementPropsWithElementRefAndRenderer & {
1616
ref?: (ref: ScrollbarTrack | null) => void;
1717
};
1818

19-
export default class ScrollbarTrack extends React.Component<ScrollbarTrackProps, unknown> {
19+
export default class ScrollbarTrack extends React.Component<
20+
React.PropsWithChildren<ScrollbarTrackProps>,
21+
unknown
22+
> {
2023
public element: HTMLDivElement | null = null;
2124

2225
public componentDidMount(): void {
@@ -52,12 +55,7 @@ export default class ScrollbarTrack extends React.Component<ScrollbarTrackProps,
5255
}
5356

5457
if (isFun(this.props.onClick) && ev.target === this.element) {
55-
if (!isUndef(ev.offsetX)) {
56-
this.props.onClick(ev, {
57-
axis: this.props.axis,
58-
offset: this.props.axis === AXIS_DIRECTION.X ? ev.offsetX : ev.offsetY,
59-
});
60-
} else {
58+
if (isUndef(ev.offsetX)) {
6159
// support for old browsers
6260
/* istanbul ignore next */
6361
const rect: ClientRect = this.element.getBoundingClientRect();
@@ -69,6 +67,11 @@ export default class ScrollbarTrack extends React.Component<ScrollbarTrackProps,
6967
? (ev.clientX || (ev as unknown as TouchEvent).touches[0].clientX) - rect.left
7068
: (ev.clientY || (ev as unknown as TouchEvent).touches[0].clientY) - rect.top,
7169
});
70+
} else {
71+
this.props.onClick(ev, {
72+
axis: this.props.axis,
73+
offset: this.props.axis === AXIS_DIRECTION.X ? ev.offsetX : ev.offsetY,
74+
});
7275
}
7376
}
7477

Diff for: src/util.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const isBrowser =
99
typeof document !== 'undefined';
1010

1111
export const isUndef = (v: any): v is Exclude<typeof v, undefined> => {
12-
return typeof v === 'undefined';
12+
return v === undefined;
1313
};
1414

1515
export const isFun = (v: any): v is CallableFunction => {

Diff for: tests/Scrollbar.spec.tsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// eslint-disable-next-line max-classes-per-file
22
import { cnb } from 'cnbuilder';
33
import * as React from 'react';
4+
import { Context, PropsWithChildren } from 'react';
45
import * as ReactDOM from 'react-dom';
56
import * as simulant from 'simulant';
67
import { Scrollbar, ScrollbarContext, ScrollbarProps, ScrollbarState } from '../src';
@@ -9,7 +10,7 @@ import { ScrollState, TRACK_CLICK_BEHAVIOR } from '../src/types';
910
import { getScrollbarWidth, shouldReverseRtlScroll } from '../src/util';
1011

1112
class ScrollbarPropsUpdater extends React.Component<
12-
{ scrollbarProps: ScrollbarProps },
13+
React.PropsWithChildren & { scrollbarProps: ScrollbarProps },
1314
{ scrollbarProps: ScrollbarProps }
1415
> {
1516
scrollbar: Scrollbar;
@@ -338,7 +339,7 @@ describe('Scrollbar', () => {
338339
);
339340
};
340341

341-
class ErrorBoundary extends React.Component<unknown, { [key: string]: any }> {
342+
class ErrorBoundary extends React.Component<PropsWithChildren, { [key: string]: any }> {
342343
constructor(props) {
343344
super(props);
344345
this.state = { error: null, errorInfo: null };
@@ -1129,12 +1130,12 @@ describe('Scrollbar', () => {
11291130
it('should create context if createContext is passed', (done) => {
11301131
let consumedContext: ScrollbarContextValue;
11311132

1132-
class ScrollbarContextConsumer extends React.Component<unknown, unknown> {
1133+
class ScrollbarContextConsumer extends React.Component<PropsWithChildren, unknown> {
11331134
// eslint-disable-next-line react/static-property-placement
11341135
static contextType = ScrollbarContext;
11351136

11361137
public componentDidMount(): void {
1137-
consumedContext = this.context;
1138+
consumedContext = this.context as ScrollbarContextValue;
11381139
}
11391140

11401141
render() {

Diff for: tests/ScrollbarThumb.spec.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { PropsWithChildren } from 'react';
12
import * as React from 'react';
23
import * as ReactDOM from 'react-dom';
34
import * as simulant from 'simulant';
@@ -111,7 +112,7 @@ describe('ScrollbarThumb', () => {
111112
);
112113
};
113114

114-
class ErrorBoundary extends React.Component<Record<string, unknown>, { [key: string]: any }> {
115+
class ErrorBoundary extends React.Component<PropsWithChildren, { [key: string]: any }> {
115116
constructor(props) {
116117
super(props);
117118
this.state = { error: null, errorInfo: null };

Diff for: tests/ScrollbarTrack.spec.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as React from 'react';
2+
import { PropsWithChildren } from 'react';
23
import * as ReactDOM from 'react-dom';
34
import * as simulant from 'simulant';
45
import ScrollbarTrack from '../src/ScrollbarTrack';
@@ -111,7 +112,7 @@ describe('ScrollbarTrack', () => {
111112
);
112113
};
113114

114-
class ErrorBoundary extends React.Component<unknown, { [key: string]: any }> {
115+
class ErrorBoundary extends React.Component<PropsWithChildren, { [key: string]: any }> {
115116
constructor(props) {
116117
super(props);
117118
this.state = { error: null, errorInfo: null };

Diff for: tests/util.spec.tsx

+4-8
Original file line numberDiff line numberDiff line change
@@ -419,14 +419,10 @@ describe('util', () => {
419419

420420
it('should pass elementRef as ref if renderer not presented', (done) => {
421421
const ref = jasmine.createSpy();
422-
ReactDOM.render(
423-
renderDivWithRenderer({ elementRef: undefined, className: 'tests' }, ref),
424-
node,
425-
() => {
426-
expect(ref).toHaveBeenCalled();
427-
done();
428-
}
429-
);
422+
ReactDOM.render(renderDivWithRenderer({ className: 'tests' }, ref)!, node, () => {
423+
expect(ref).toHaveBeenCalled();
424+
done();
425+
});
430426
});
431427

432428
it("should not leak renderer prop if it's passed", () => {

0 commit comments

Comments
 (0)