react-dropzone 11.2.0 → 11.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -59,8 +59,8 @@ function isDefined(value) {
59
59
  return value !== undefined && value !== null
60
60
  }
61
61
 
62
- export function allFilesAccepted({ files, accept, minSize, maxSize, multiple }) {
63
- if (!multiple && files.length > 1) {
62
+ export function allFilesAccepted({ files, accept, minSize, maxSize, multiple, maxFiles }) {
63
+ if ((!multiple && files.length > 1) || (multiple && maxFiles >= 1 && files.length > maxFiles) ) {
64
64
  return false;
65
65
  }
66
66
 
@@ -230,6 +230,26 @@ it('rejects file when single accept criteria as array', () => {
230
230
 
231
231
  })
232
232
 
233
+ describe('allFilesAccepted()', () => {
234
+ let utils
235
+ beforeEach(async done => {
236
+ utils = await import('./index')
237
+ done()
238
+ })
239
+ it('rejects file when multiple accept criteria', () => {
240
+ const files = [createFile('hamster.pdf', 100, 'application/pdf'),createFile('fish.pdf', 100, 'application/pdf')];
241
+ const images = [createFile('cats.gif', 1234, 'image/gif'), createFile('dogs.gif', 2345, 'image/jpeg')]
242
+ expect(utils.allFilesAccepted({ files, multiple: true})).toEqual(true)
243
+ expect(utils.allFilesAccepted({ files, multiple: true, maxFiles: 10 })).toEqual(true)
244
+ expect(utils.allFilesAccepted({ files, multiple: false, maxFiles: 10 })).toEqual(false)
245
+ expect(utils.allFilesAccepted({ files, multiple: true, accept:'image/jpeg' })).toEqual(false)
246
+ expect(utils.allFilesAccepted({ files: images, multiple: true,accept:'image/*' })).toEqual(true)
247
+ expect(utils.allFilesAccepted({ files, multiple: true, minSize: 110 })).toEqual(false)
248
+ expect(utils.allFilesAccepted({ files, multiple: true, maxSize: 99 })).toEqual(false)
249
+ expect(utils.allFilesAccepted({ files, multiple: true, maxFiles: 1 })).toEqual(false)
250
+ })
251
+ })
252
+
233
253
  function createFile(name, size, type) {
234
254
  const file = new File([], name, { type })
235
255
  Object.defineProperty(file, 'size', {
@@ -1,20 +1,30 @@
1
1
  /* eslint import/no-extraneous-dependencies: 0 */
2
2
  const path = require('path')
3
- const { createConfig, babel, css } = require('webpack-blocks')
3
+ const { createConfig, babel, css, devServer } = require('webpack-blocks')
4
4
 
5
5
  // https://react-styleguidist.js.org/docs/configuration.html
6
6
  module.exports = {
7
7
  title: 'react-dropzone',
8
8
  styleguideDir: path.join(__dirname, 'styleguide'),
9
- webpackConfig: createConfig([babel(), css()]),
9
+ template: {
10
+ favicon: 'https://github.com/react-dropzone/react-dropzone/raw/master/logo/logo.png'
11
+ },
12
+ webpackConfig: createConfig([babel(), css(), devServer({
13
+ disableHostCheck: true,
14
+ host: '0.0.0.0',
15
+ })]),
10
16
  exampleMode: 'expand',
11
17
  usageMode: 'expand',
12
- showSidebar: false,
18
+ showSidebar: true,
13
19
  serverPort: 8080,
14
20
  moduleAliases: {
15
- 'react-dropzone': path.resolve(__dirname, './src')
21
+ 'react-dropzone': path.resolve(__dirname, './src'),
22
+ 'doka': path.resolve(__dirname, './vendor/doka/doka.esm.min.js')
16
23
  },
17
- require: [path.join(__dirname, 'examples/theme.css')],
24
+ require: [
25
+ path.join(__dirname, 'examples/theme.css'),
26
+ path.join(__dirname, 'vendor/doka/doka.min.css'),
27
+ ],
18
28
  sections: [
19
29
  {
20
30
  name: '',
@@ -66,6 +76,15 @@ module.exports = {
66
76
  content: 'examples/plugins/README.md'
67
77
  }
68
78
  ]
79
+ },
80
+ {
81
+ name: 'Integrations',
82
+ sections: [
83
+ {
84
+ name: 'Doka',
85
+ content: 'examples/doka/README.md'
86
+ }
87
+ ]
69
88
  }
70
89
  ]
71
90
  }
package/testSetup.js CHANGED
@@ -1,8 +1,2 @@
1
1
  // https://www.npmjs.com/package/jest-dom
2
2
  require('@testing-library/jest-dom/extend-expect')
3
-
4
- // TODO: Ignore warnings about act(), it refers to having async side effects updating the state;
5
- // This happens because our async getFilesFromEvent() fn
6
- // See https://github.com/kentcdodds/react-testing-library/issues/281,
7
- // https://github.com/facebook/react/issues/14769
8
- jest.spyOn(console, 'error').mockImplementation(() => jest.fn())