form-payload 1.1.0 → 1.3.0
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.
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export type HTMLFormControlElement = import('../../libs/types/types.js').HTMLFormControlElement;
|
|
2
2
|
export type HTMLFormOperationalControlElement = import('../../libs/types/types.js').HTMLFormOperationalControlElement;
|
|
3
3
|
/**
|
|
4
|
+
* @template {unknown} T
|
|
4
5
|
* @param {HTMLFormOperationalControlElement} controlNode
|
|
5
|
-
* @returns {
|
|
6
|
+
* @returns {T}
|
|
6
7
|
* @throws {FormPayloadError}
|
|
7
8
|
*/
|
|
8
|
-
export function getFormControlPayload(controlNode: HTMLFormOperationalControlElement):
|
|
9
|
+
export function getFormControlPayload<T extends unknown>(controlNode: HTMLFormOperationalControlElement): T;
|
|
9
10
|
/** @typedef {import('../../libs/types/types.js').HTMLFormControlElement} HTMLFormControlElement */
|
|
10
11
|
/** @typedef {import('../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
|
|
11
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-form-control-payload.d.ts","sourceRoot":"","sources":["../../../../src/packages/get-form-control-payload/get-form-control-payload.js"],"names":[],"mappings":"qCAcc,OAAO,2BAA2B,EAAE,sBAAsB;gDAC1D,OAAO,2BAA2B,EAAE,iCAAiC;AA+BnF
|
|
1
|
+
{"version":3,"file":"get-form-control-payload.d.ts","sourceRoot":"","sources":["../../../../src/packages/get-form-control-payload/get-form-control-payload.js"],"names":[],"mappings":"qCAcc,OAAO,2BAA2B,EAAE,sBAAsB;gDAC1D,OAAO,2BAA2B,EAAE,iCAAiC;AA+BnF;;;;;GAKG;AACH,sEAJW,iCAAiC,KA6F3C;AA/HD,mGAAmG;AACnG,yHAAyH;AAEzH;;;;GAIG;AACH,8FAHc,sBAAsB,OAyBnC"}
|
|
@@ -45,11 +45,20 @@ const getFormControlsPayload = (...controlElements) => {
|
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
|
+
* @template {unknown} T
|
|
48
49
|
* @param {HTMLFormOperationalControlElement} controlNode
|
|
49
|
-
* @returns {
|
|
50
|
+
* @returns {T}
|
|
50
51
|
* @throws {FormPayloadError}
|
|
51
52
|
*/
|
|
52
53
|
const getFormControlPayload = (controlNode) => {
|
|
54
|
+
const hasType = 'type' in controlNode;
|
|
55
|
+
|
|
56
|
+
if (!hasType) {
|
|
57
|
+
throw new FormPayloadError({
|
|
58
|
+
message: 'Control element has no type attribute.',
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
53
62
|
switch (controlNode.type) {
|
|
54
63
|
case ControlType.TEXT:
|
|
55
64
|
case ControlType.PASSWORD:
|
|
@@ -63,47 +72,55 @@ const getFormControlPayload = (controlNode) => {
|
|
|
63
72
|
case ControlType.TEXTAREA:
|
|
64
73
|
case ControlType.SELECT_ONE:
|
|
65
74
|
case ControlType.OUTPUT: {
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
return /** @type {T} */ (
|
|
76
|
+
getFormControlValue(
|
|
77
|
+
/**
|
|
78
|
+
* @type {HTMLInputElement
|
|
79
|
+
* | HTMLOutputElement
|
|
80
|
+
* | HTMLTextAreaElement
|
|
81
|
+
* | HTMLSelectElement}
|
|
82
|
+
*/ (controlNode),
|
|
83
|
+
)
|
|
73
84
|
);
|
|
74
85
|
}
|
|
75
86
|
case ControlType.NUMBER:
|
|
76
87
|
case ControlType.RANGE: {
|
|
77
|
-
return
|
|
78
|
-
|
|
88
|
+
return /** @type {T} */ (
|
|
89
|
+
getInputNumericValue(
|
|
90
|
+
/** @type {HTMLInputElement} */ (controlNode),
|
|
91
|
+
)
|
|
79
92
|
);
|
|
80
93
|
}
|
|
81
94
|
case ControlType.CHECKBOX: {
|
|
82
|
-
return
|
|
83
|
-
/** @type {HTMLInputElement} */ (controlNode)
|
|
95
|
+
return /** @type {T} */ (
|
|
96
|
+
getCheckboxValue(/** @type {HTMLInputElement} */ (controlNode))
|
|
84
97
|
);
|
|
85
98
|
}
|
|
86
99
|
case ControlType.DATE:
|
|
87
100
|
case ControlType.TIME:
|
|
88
101
|
case ControlType.MONTH:
|
|
89
102
|
case ControlType.WEEK: {
|
|
90
|
-
return
|
|
91
|
-
/** @type {HTMLInputElement} */ (controlNode)
|
|
103
|
+
return /** @type {T} */ (
|
|
104
|
+
getInputDateValue(/** @type {HTMLInputElement} */ (controlNode))
|
|
92
105
|
);
|
|
93
106
|
}
|
|
94
107
|
case ControlType.DATETIME_LOCAL: {
|
|
95
|
-
return
|
|
96
|
-
|
|
108
|
+
return /** @type {T} */ (
|
|
109
|
+
getDatetimeLocalValue(
|
|
110
|
+
/** @type {HTMLInputElement} */ (controlNode),
|
|
111
|
+
)
|
|
97
112
|
);
|
|
98
113
|
}
|
|
99
114
|
case ControlType.FILE: {
|
|
100
|
-
return
|
|
101
|
-
/** @type {HTMLInputElement} */ (controlNode)
|
|
115
|
+
return /** @type {T} */ (
|
|
116
|
+
getInputFileValue(/** @type {HTMLInputElement} */ (controlNode))
|
|
102
117
|
);
|
|
103
118
|
}
|
|
104
119
|
case ControlType.SELECT_MULTIPLE: {
|
|
105
|
-
return
|
|
106
|
-
|
|
120
|
+
return /** @type {T} */ (
|
|
121
|
+
getMultiSelectValues(
|
|
122
|
+
/** @type {HTMLSelectElement} */ (controlNode),
|
|
123
|
+
)
|
|
107
124
|
);
|
|
108
125
|
}
|
|
109
126
|
case ControlType.FIELDSET: {
|
|
@@ -111,14 +128,16 @@ const getFormControlPayload = (controlNode) => {
|
|
|
111
128
|
.../** @type {HTMLFieldSetElement} */ (controlNode).elements,
|
|
112
129
|
];
|
|
113
130
|
|
|
114
|
-
return
|
|
115
|
-
|
|
131
|
+
return /** @type {T} */ (
|
|
132
|
+
getFormControlsPayload(
|
|
133
|
+
.../** @type {HTMLFormControlElement[]} */ (elements),
|
|
134
|
+
)
|
|
116
135
|
);
|
|
117
136
|
}
|
|
118
137
|
}
|
|
119
138
|
|
|
120
139
|
throw new FormPayloadError({
|
|
121
|
-
message: `Unsupported control type – ${controlNode.type}.`,
|
|
140
|
+
message: `Unsupported control element type – ${controlNode.type}.`,
|
|
122
141
|
});
|
|
123
142
|
};
|
|
124
143
|
|