Skip to content

Commit f761011

Browse files
committed
Merge branch 'develop'
2 parents 5ba97b2 + c4ca300 commit f761011

File tree

10 files changed

+2294
-2352
lines changed

10 files changed

+2294
-2352
lines changed

.github/workflows/ci.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: CI
2+
on: [push]
3+
jobs:
4+
ci:
5+
name: CI - OS ${{ matrix.os }}, Node.js ${{ matrix.node-version }}
6+
runs-on: ${{ matrix.os }}
7+
strategy:
8+
matrix:
9+
os: [ubuntu-latest, macos-latest, windows-latest]
10+
node-version: [14.x, 16.x]
11+
steps:
12+
- name: Check out repository code
13+
uses: actions/checkout@v3
14+
- name: Use Node.js ${{ matrix.node-version }}
15+
uses: actions/setup-node@v3
16+
with:
17+
node-version: ${{ matrix.node-version }}
18+
cache: 'npm'
19+
- name: Install
20+
run: npm ci
21+
- name: Lint
22+
run: npm run lint
23+
- name: Build
24+
run: npm run prod
25+
- name: Test
26+
run: npm run test
27+
- name: Upload coverage report
28+
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node-version == '16.x' }}
29+
uses: codecov/codecov-action@v3
30+
- name: SonarCloud Scan
31+
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node-version == '16.x' }}
32+
uses: sonarsource/sonarcloud-github-action@master
33+
env:
34+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

.prettierrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ module.exports = {
44
singleQuote: true,
55
printWidth: 120,
66
tabWidth: 4,
7+
endOfLine: 'auto',
78
};

.travis.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

__tests__/SignaturePad.test.tsx

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,43 +43,51 @@ describe('Component', () => {
4343

4444
render(<SignaturePad ref={instance} redrawOnResize />);
4545

46-
instance.current!.clear();
46+
const signaturePad = instance.current as SignaturePad;
4747

48-
expect(instance.current!.isEmpty()).toBeTruthy();
48+
signaturePad.clear();
4949

50-
instance.current!.fromDataURL(signature);
50+
expect(signaturePad.isEmpty()).toBeTruthy();
5151

52-
expect(instance.current!.isEmpty()).toBeFalsy();
52+
signaturePad.fromDataURL(signature);
53+
54+
expect(signaturePad.isEmpty()).toBeFalsy();
5355
});
5456

5557
it('clears the signature pad', () => {
5658
const instance = React.createRef<SignaturePad>();
5759

5860
render(<SignaturePad ref={instance} redrawOnResize />);
5961

60-
instance.current!.fromDataURL(signature);
62+
const signaturePad = instance.current as SignaturePad;
63+
64+
signaturePad.fromDataURL(signature);
6165

62-
expect(instance.current!.isEmpty()).toBeFalsy();
66+
expect(signaturePad.isEmpty()).toBeFalsy();
6367

64-
instance.current!.clear();
68+
signaturePad.clear();
6569

66-
expect(instance.current!.isEmpty()).toBeTruthy();
70+
expect(signaturePad.isEmpty()).toBeTruthy();
6771
});
6872

6973
it('returns the underlying signature pad instance', () => {
7074
const instance = React.createRef<SignaturePad>();
7175

7276
render(<SignaturePad ref={instance} redrawOnResize />);
7377

74-
expect(instance.current!.instance).toBeInstanceOf(SigPad);
78+
const signaturePad = instance.current as SignaturePad;
79+
80+
expect(signaturePad.instance).toBeInstanceOf(SigPad);
7581
});
7682

7783
it('returns a ref to the underlying HTML canvas element', () => {
7884
const instance = React.createRef<SignaturePad>();
7985

8086
render(<SignaturePad ref={instance} redrawOnResize />);
8187

82-
expect(instance.current!.canvas).toBeInstanceOf(Object);
88+
const signaturePad = instance.current as SignaturePad;
89+
90+
expect(signaturePad.canvas).toBeInstanceOf(Object);
8391
});
8492

8593
[
@@ -107,22 +115,27 @@ describe('Component', () => {
107115

108116
render(<SignaturePad ref={instance} redrawOnResize />);
109117

110-
expect(instance.current!.toDataURL()).toContain('data:image/png;base64');
118+
const signaturePad = instance.current as SignaturePad;
119+
120+
expect(signaturePad.toDataURL()).toContain('data:image/png;base64');
111121
});
112122

113123
it('returns a signature as an array of data points', () => {
114124
const instance = React.createRef<SignaturePad>();
115125

116126
render(<SignaturePad ref={instance} redrawOnResize />);
117127

118-
expect(instance.current!.toData()).toHaveLength(0);
128+
const signaturePad = instance.current as SignaturePad;
129+
130+
expect(signaturePad.toData()).toHaveLength(0);
119131
});
120132

121133
it('draws a signature from an array of data points', () => {
122134
const instance = React.createRef<SignaturePad>();
123135

124136
render(<SignaturePad ref={instance} redrawOnResize />);
125137

138+
const signaturePad = instance.current as SignaturePad;
126139
const data = [
127140
{
128141
dotSize: 0,
@@ -133,19 +146,20 @@ describe('Component', () => {
133146
},
134147
];
135148

136-
instance.current!.fromData(data);
149+
signaturePad.fromData(data);
137150

138-
expect(instance.current!.toData()).toStrictEqual(data);
151+
expect(signaturePad.toData()).toStrictEqual(data);
139152
});
140153

141154
it('unbinds all event handlers', () => {
142155
const instance = React.createRef<SignaturePad>();
143156

144157
render(<SignaturePad ref={instance} redrawOnResize />);
145158

146-
const spy = jest.spyOn(instance.current!.instance, 'off');
159+
const signaturePad = instance.current as SignaturePad;
160+
const spy = jest.spyOn(signaturePad.instance, 'off');
147161

148-
instance.current!.off();
162+
signaturePad.off();
149163

150164
expect(spy).toHaveBeenCalled();
151165

@@ -157,9 +171,10 @@ describe('Component', () => {
157171

158172
render(<SignaturePad ref={instance} redrawOnResize />);
159173

160-
const spy = jest.spyOn(instance.current!.instance, 'on');
174+
const signaturePad = instance.current as SignaturePad;
175+
const spy = jest.spyOn(signaturePad.instance, 'on');
161176

162-
instance.current!.on();
177+
signaturePad.on();
163178

164179
expect(spy).toHaveBeenCalled();
165180

@@ -171,11 +186,12 @@ describe('Component', () => {
171186

172187
render(<SignaturePad ref={instance} />);
173188

174-
const spy = jest.spyOn(instance.current!.instance, 'clear');
189+
const signaturePad = instance.current as SignaturePad;
190+
const spy = jest.spyOn(signaturePad.instance, 'clear');
175191

176192
scaleCanvas(768, 768);
177193
act(() => {
178-
instance.current!.handleResize();
194+
signaturePad.handleResize();
179195
});
180196

181197
expect(spy).toHaveBeenCalled();
@@ -186,11 +202,12 @@ describe('Component', () => {
186202

187203
render(<SignaturePad ref={instance} redrawOnResize />);
188204

189-
const spy = jest.spyOn(instance.current!.instance, 'toDataURL');
205+
const signaturePad = instance.current as SignaturePad;
206+
const spy = jest.spyOn(signaturePad.instance, 'toDataURL');
190207

191208
scaleCanvas(768, 768);
192209
act(() => {
193-
instance.current!.handleResize();
210+
signaturePad.handleResize();
194211
});
195212

196213
expect(spy).toHaveBeenCalled();
@@ -201,9 +218,10 @@ describe('Component', () => {
201218

202219
render(<SignaturePad ref={instance} redrawOnResize />);
203220

204-
const spy = jest.spyOn(instance.current!.instance, 'toDataURL');
221+
const signaturePad = instance.current as SignaturePad;
222+
const spy = jest.spyOn(signaturePad.instance, 'toDataURL');
205223

206-
instance.current!.handleResize();
224+
signaturePad.handleResize();
207225

208226
expect(spy).not.toHaveBeenCalled();
209227
});

example/app.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,8 @@ import { createRoot } from 'react-dom/client';
33

44
import Layout from './Layout';
55

6-
createRoot(document.getElementById('root')!).render(<Layout />);
6+
const element = document.getElementById('root');
7+
8+
if (element) {
9+
createRoot(element).render(<Layout />);
10+
}

0 commit comments

Comments
 (0)