Skip to content

Commit 335b526

Browse files
committed
fix dropzone numbers
1 parent 4a72cba commit 335b526

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

web_src/js/features/dropzone.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {clippie} from 'clippie';
44
import {showTemporaryTooltip} from '../modules/tippy.js';
55
import {GET, POST} from '../modules/fetch.js';
66
import {showErrorToast} from '../modules/toast.js';
7-
import {createElementFromHTML, createElement} from '../utils/dom.js';
7+
import {createElementFromHTML, createElement, elemGetAttributeNumber} from '../utils/dom.js';
88

99
const {csrfToken, i18n} = window.config;
1010

@@ -52,8 +52,8 @@ export async function initDropzone(dropzoneEl) {
5252
const dzInst = await createDropzone(dropzoneEl, {
5353
url: dropzoneEl.getAttribute('data-upload-url'),
5454
headers: {'X-Csrf-Token': csrfToken},
55-
maxFiles: dropzoneEl.getAttribute('data-max-file'),
56-
maxFilesize: dropzoneEl.getAttribute('data-max-size'),
55+
maxFiles: elemGetAttributeNumber('data-max-file', null), // match dropzone default value, no limit
56+
maxFilesize: elemGetAttributeNumber('data-max-size', 256), // match dropzone default value: 256 MiB
5757
acceptedFiles: ['*/*', ''].includes(dropzoneEl.getAttribute('data-accepts')) ? null : dropzoneEl.getAttribute('data-accepts'),
5858
addRemoveLinks: true,
5959
dictDefaultMessage: dropzoneEl.getAttribute('data-default-message'),

web_src/js/utils/dom.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,3 +318,10 @@ export function createElement(tagName, attrs) {
318318
}
319319
return el;
320320
}
321+
322+
export function elemGetAttributeNumber(el, attr, def) {
323+
if (!el.hasAttribute(attr)) return def;
324+
const v = parseInt(el.getAttribute(attr));
325+
if (Number.isNaN(v)) throw new Error(`Attribute "${attr}" is not a number`);
326+
return v;
327+
}

web_src/js/utils/dom.test.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {createElement, createElementFromHTML} from './dom.js';
1+
import {createElement, createElementFromHTML, elemGetAttributeNumber} from './dom.js';
22

33
test('createElementFromHTML', () => {
44
expect(createElementFromHTML('<a>foo<span>bar</span></a>').outerHTML).toEqual('<a>foo<span>bar</span></a>');
@@ -14,3 +14,13 @@ test('createElement', () => {
1414
});
1515
expect(el.outerHTML).toEqual('<button id="the-id" class="cls-1 cls-2" data-foo="the-data" disabled=""></button>');
1616
});
17+
18+
test('elemGetAttributeNumber', () => {
19+
expect(elemGetAttributeNumber(createElementFromHTML('<a>foo</a>'), `data-key`)).toEqual(undefined);
20+
expect(elemGetAttributeNumber(createElementFromHTML('<a>foo</a>'), `data-key`, null)).toEqual(null);
21+
expect(elemGetAttributeNumber(createElementFromHTML('<a>foo</a>'), `data-key`, 1)).toEqual(1);
22+
expect(elemGetAttributeNumber(createElementFromHTML('<a data-key="2">foo</a>'), `data-key`)).toEqual(2);
23+
expect(() => {
24+
elemGetAttributeNumber(createElementFromHTML('<a data-key="abc">foo</a>'), `data-key`);
25+
}).toThrowError('Attribute "data-key" is not a number');
26+
});

0 commit comments

Comments
 (0)