Skip to content

Commit 240af68

Browse files
committed
netteForms: added typehints to jsDoc
1 parent cee6166 commit 240af68

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

src/assets/netteForms.js

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
66
*/
77

8+
/**
9+
* @typedef {HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement|HTMLButtonElement} FormElement
10+
* @typedef {{op: string, neg: boolean, msg: string, arg: *, rules: ?Array<Rule>, control: string, toggle: ?Array<string>}} Rule
11+
*/
12+
813
(function (global, factory) {
914
if (!global.JSON) {
1015
return;
@@ -49,12 +54,14 @@
4954

5055
/**
5156
* Returns the value of form element.
57+
* @param {FormElement|RadioNodeList} elem
58+
* @return {*}
5259
*/
5360
Nette.getValue = function (elem) {
5461
if (!elem) {
5562
return null;
5663

57-
} else if (!elem.tagName) { // RadioNodeList, HTMLCollection, array
64+
} else if (!elem.tagName) { // RadioNodeList
5865
return elem[0] ? Nette.getValue(elem[0]) : null;
5966

6067
} else if (elem.type === 'radio') {
@@ -110,6 +117,9 @@
110117

111118
/**
112119
* Returns the effective value of form element.
120+
* @param {FormElement|RadioNodeList} elem
121+
* @param {boolean} filter
122+
* @return {*}
113123
*/
114124
Nette.getEffectiveValue = function (elem, filter) {
115125
let val = Nette.getValue(elem);
@@ -131,6 +141,12 @@
131141

132142
/**
133143
* Validates form element against given rules.
144+
* @param {FormElement|RadioNodeList} elem
145+
* @param {?Array<Rule>} rules
146+
* @param {boolean} onlyCheck
147+
* @param {?{value: *}} value
148+
* @param {?boolean} emptyOptional
149+
* @return {boolean}
134150
*/
135151
Nette.validateControl = function (elem, rules, onlyCheck, value, emptyOptional) {
136152
elem = elem.tagName ? elem : elem[0]; // RadioNodeList
@@ -188,6 +204,9 @@
188204

189205
/**
190206
* Validates whole form.
207+
* @param {HTMLFormElement} sender
208+
* @param {boolean} onlyCheck
209+
* @return {boolean}
191210
*/
192211
Nette.validateForm = function (sender, onlyCheck) {
193212
let form = sender.form || sender,
@@ -242,6 +261,8 @@
242261

243262
/**
244263
* Check if input is disabled.
264+
* @param {FormElement} elem
265+
* @return {boolean}
245266
*/
246267
Nette.isDisabled = function (elem) {
247268
if (elem.type === 'radio') {
@@ -258,6 +279,8 @@
258279

259280
/**
260281
* Adds error message to the queue.
282+
* @param {FormElement} elem
283+
* @param {string} message
261284
*/
262285
Nette.addError = function (elem, message) {
263286
Nette.formErrors.push({
@@ -269,6 +292,8 @@
269292

270293
/**
271294
* Display error messages.
295+
* @param {HTMLFormElement} form
296+
* @param {Array<{element: FormElement, message: string}>} errors
272297
*/
273298
Nette.showFormErrors = function (form, errors) {
274299
let messages = [],
@@ -299,6 +324,8 @@
299324

300325
/**
301326
* Display modal window.
327+
* @param {string} message
328+
* @param {function} onclose
302329
*/
303330
Nette.showModal = function (message, onclose) {
304331
let dialog = document.createElement('dialog');
@@ -329,6 +356,10 @@
329356

330357
/**
331358
* Validates single rule.
359+
* @param {FormElement|RadioNodeList} elem
360+
* @param {string} op
361+
* @param {*} arg
362+
* @param {?{value: *}} value
332363
*/
333364
Nette.validateRule = function (elem, op, arg, value) {
334365
if (elem.validity && elem.validity.badInput) {
@@ -562,6 +593,8 @@
562593

563594
/**
564595
* Process all toggles in form.
596+
* @param {HTMLFormElement} form
597+
* @param {?Event} event
565598
*/
566599
Nette.toggleForm = function (form, event) {
567600
formToggles = {};
@@ -579,6 +612,13 @@
579612

580613
/**
581614
* Process toggles on form element.
615+
* @param {FormElement} elem
616+
* @param {?Array<Rule>} rules
617+
* @param {?boolean} success
618+
* @param {boolean} firsttime
619+
* @param {?{value: *}} value
620+
* @param {?boolean} emptyOptional
621+
* @return {boolean}
582622
*/
583623
Nette.toggleControl = function (elem, rules, success, firsttime, value, emptyOptional) {
584624
rules = rules || JSON.parse(elem.getAttribute('data-nette-rules') || '[]');
@@ -643,6 +683,10 @@
643683

644684
/**
645685
* Displays or hides HTML element.
686+
* @param {string} selector
687+
* @param {boolean} visible
688+
* @param {FormElement} srcElement
689+
* @param {Event} event
646690
*/
647691
Nette.toggle = function (selector, visible, srcElement, event) { // eslint-disable-line no-unused-vars
648692
if (/^\w[\w.:-]*$/.test(selector)) { // id
@@ -657,6 +701,7 @@
657701

658702
/**
659703
* Compact checkboxes
704+
* @param {HTMLFormElement} form
660705
*/
661706
Nette.compactCheckboxes = function (form) {
662707
let values = {};
@@ -700,6 +745,7 @@
700745

701746
/**
702747
* Setup handlers.
748+
* @param {HTMLFormElement} form
703749
*/
704750
Nette.initForm = function (form) {
705751
if (form.method === 'get' && form.hasAttribute('data-nette-compact')) {
@@ -760,6 +806,8 @@
760806

761807
/**
762808
* Converts string to web safe characters [a-z0-9-] text.
809+
* @param {string} s
810+
* @return {string}
763811
*/
764812
Nette.webalize = function (s) {
765813
s = s.toLowerCase();

0 commit comments

Comments
 (0)