form-payload 1.5.0 → 1.7.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.
Files changed (113) hide show
  1. package/package.json +1 -1
  2. package/readme.md +191 -59
  3. package/src/index.d.ts +1 -1
  4. package/src/index.js +1 -1
  5. package/src/libs/constants/banned-control-element-types.constant.d.ts +2 -0
  6. package/src/libs/constants/banned-control-element-types.constant.d.ts.map +1 -0
  7. package/src/libs/constants/banned-control-element-types.constant.js +10 -0
  8. package/src/libs/constants/constants.d.ts +2 -2
  9. package/src/libs/constants/constants.js +2 -2
  10. package/src/libs/constants/value-as-array-custom-control-element-types.constant.d.ts +2 -0
  11. package/src/libs/constants/value-as-array-custom-control-element-types.constant.d.ts.map +1 -0
  12. package/src/libs/constants/value-as-array-custom-control-element-types.constant.js +8 -0
  13. package/src/libs/constants/value-as-array-identifier.constant.d.ts.map +1 -1
  14. package/src/libs/constants/value-as-array-identifier.constant.js +1 -1
  15. package/src/libs/enums/{control-type.enum.d.ts → control-element-type.enum.d.ts} +2 -2
  16. package/src/libs/enums/control-element-type.enum.d.ts.map +1 -0
  17. package/src/libs/enums/{control-type.enum.js → control-element-type.enum.js} +2 -2
  18. package/src/libs/enums/enums.d.ts +1 -1
  19. package/src/libs/enums/enums.js +1 -1
  20. package/src/packages/get-form-control-payload/get-form-control-payload.d.ts +4 -11
  21. package/src/packages/get-form-control-payload/get-form-control-payload.d.ts.map +1 -1
  22. package/src/packages/get-form-control-payload/get-form-control-payload.js +62 -101
  23. package/src/packages/get-form-control-payload/helpers/check-has-value-as-array/check-has-value-as-array.helper.d.ts.map +1 -1
  24. package/src/packages/get-form-control-payload/helpers/check-has-value-as-array/check-has-value-as-array.helper.js +9 -6
  25. package/src/packages/get-form-control-payload/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.d.ts +9 -0
  26. package/src/packages/get-form-control-payload/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.d.ts.map +1 -0
  27. package/src/packages/get-form-control-payload/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.js +23 -0
  28. package/src/packages/get-form-control-payload/helpers/get-checkbox-control-element-value/get-checkbox-control-element-value.helper.d.ts +6 -0
  29. package/src/packages/get-form-control-payload/helpers/get-checkbox-control-element-value/get-checkbox-control-element-value.helper.d.ts.map +1 -0
  30. package/src/packages/get-form-control-payload/helpers/{get-checkbox-value/get-checkbox-value.helper.js → get-checkbox-control-element-value/get-checkbox-control-element-value.helper.js} +2 -2
  31. package/src/packages/get-form-control-payload/helpers/get-control-element-value/get-control-element-value.helper.d.ts +9 -0
  32. package/src/packages/get-form-control-payload/helpers/get-control-element-value/get-control-element-value.helper.d.ts.map +1 -0
  33. package/src/packages/get-form-control-payload/helpers/{get-control-value/get-control-value.helper.js → get-control-element-value/get-control-element-value.helper.js} +2 -2
  34. package/src/packages/get-form-control-payload/helpers/get-datatime-local-control-element-value/get-datatime-local-control-element-value.helper.d.ts +6 -0
  35. package/src/packages/get-form-control-payload/helpers/get-datatime-local-control-element-value/get-datatime-local-control-element-value.helper.d.ts.map +1 -0
  36. package/src/packages/get-form-control-payload/helpers/get-datatime-local-control-element-value/get-datatime-local-control-element-value.helper.js +9 -0
  37. package/src/packages/get-form-control-payload/helpers/get-date-control-element-value/get-date-value-control-element.helper.d.ts +6 -0
  38. package/src/packages/get-form-control-payload/helpers/get-date-control-element-value/get-date-value-control-element.helper.d.ts.map +1 -0
  39. package/src/packages/get-form-control-payload/helpers/{get-input-date-value/get-input-date-value.helper.js → get-date-control-element-value/get-date-value-control-element.helper.js} +2 -2
  40. package/src/packages/get-form-control-payload/helpers/get-email-control-element-value/get-email-control-element-value.helper.d.ts +6 -0
  41. package/src/packages/get-form-control-payload/helpers/get-email-control-element-value/get-email-control-element-value.helper.d.ts.map +1 -0
  42. package/src/packages/get-form-control-payload/helpers/get-email-control-element-value/get-email-control-element-value.helper.js +20 -0
  43. package/src/packages/get-form-control-payload/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.d.ts +14 -0
  44. package/src/packages/get-form-control-payload/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.d.ts.map +1 -0
  45. package/src/packages/get-form-control-payload/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.js +30 -0
  46. package/src/packages/get-form-control-payload/helpers/get-file-control-element-value/get-file-control-element-value.helper.d.ts +6 -0
  47. package/src/packages/get-form-control-payload/helpers/get-file-control-element-value/get-file-control-element-value.helper.d.ts.map +1 -0
  48. package/src/packages/get-form-control-payload/helpers/get-file-control-element-value/get-file-control-element-value.helper.js +16 -0
  49. package/src/packages/get-form-control-payload/helpers/get-form-control-elements-payload/get-form-control-elements-payload.d.ts +14 -0
  50. package/src/packages/get-form-control-payload/helpers/get-form-control-elements-payload/get-form-control-elements-payload.d.ts.map +1 -0
  51. package/src/packages/get-form-control-payload/helpers/get-form-control-elements-payload/get-form-control-elements-payload.js +69 -0
  52. package/src/packages/get-form-control-payload/helpers/get-multiselect-control-type-value/get-multiselect-control-type-value.helper.d.ts +6 -0
  53. package/src/packages/get-form-control-payload/helpers/get-multiselect-control-type-value/get-multiselect-control-type-value.helper.d.ts.map +1 -0
  54. package/src/packages/get-form-control-payload/helpers/get-multiselect-control-type-value/get-multiselect-control-type-value.helper.js +9 -0
  55. package/src/packages/get-form-control-payload/helpers/get-numeric-control-element-value/get-numeric-control-element-value.helper.d.ts +6 -0
  56. package/src/packages/get-form-control-payload/helpers/get-numeric-control-element-value/get-numeric-control-element-value.helper.d.ts.map +1 -0
  57. package/src/packages/get-form-control-payload/helpers/{get-input-numeric-value/get-input-numeric-value.helper.js → get-numeric-control-element-value/get-numeric-control-element-value.helper.js} +2 -2
  58. package/src/packages/get-form-control-payload/helpers/{get-allowed-elements/get-allowed-elements.helper.d.ts → get-operational-control-elements/get-operational-control-elements.helper.d.ts} +2 -2
  59. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/get-operational-control-elements.helper.d.ts.map +1 -0
  60. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/get-operational-control-elements.helper.js +36 -0
  61. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-has-control-element-name/check-has-control-element-name.helper.d.ts +8 -0
  62. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-has-control-element-name/check-has-control-element-name.helper.d.ts.map +1 -0
  63. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-has-control-element-name/check-has-control-element-name.helper.js +11 -0
  64. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element/check-is-allowed-control-element.helper.d.ts +8 -0
  65. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element/check-is-allowed-control-element.helper.d.ts.map +1 -0
  66. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element/check-is-allowed-control-element.helper.js +19 -0
  67. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element-type/check-is-allowed-control-element-type.helper.d.ts +8 -0
  68. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element-type/check-is-allowed-control-element-type.helper.d.ts.map +1 -0
  69. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element-type/check-is-allowed-control-element-type.helper.js +17 -0
  70. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/helpers.d.ts +4 -0
  71. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/helpers.d.ts.map +1 -0
  72. package/src/packages/get-form-control-payload/helpers/get-operational-control-elements/helpers/helpers.js +3 -0
  73. package/src/packages/get-form-control-payload/helpers/helpers.d.ts +13 -11
  74. package/src/packages/get-form-control-payload/helpers/helpers.js +13 -11
  75. package/src/packages/get-form-control-payload/helpers/{get-cleaned-value-as-array-control-name/get-cleaned-value-as-array-control-name.helper.d.ts → normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.d.ts} +2 -2
  76. package/src/packages/get-form-control-payload/helpers/normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.d.ts.map +1 -0
  77. package/src/packages/get-form-control-payload/helpers/{get-cleaned-value-as-array-control-name/get-cleaned-value-as-array-control-name.helper.js → normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.js} +2 -2
  78. package/src/packages/get-form-payload/get-form-payload.d.ts +2 -2
  79. package/src/packages/get-form-payload/get-form-payload.d.ts.map +1 -1
  80. package/src/packages/get-form-payload/get-form-payload.js +8 -5
  81. package/src/libs/constants/banned-control-types.constant.d.ts +0 -2
  82. package/src/libs/constants/banned-control-types.constant.d.ts.map +0 -1
  83. package/src/libs/constants/banned-control-types.constant.js +0 -10
  84. package/src/libs/constants/value-as-array-custom-control-types.constant.d.ts +0 -2
  85. package/src/libs/constants/value-as-array-custom-control-types.constant.d.ts.map +0 -1
  86. package/src/libs/constants/value-as-array-custom-control-types.constant.js +0 -5
  87. package/src/libs/enums/control-type.enum.d.ts.map +0 -1
  88. package/src/packages/get-form-control-payload/helpers/check-is-refer-to-another-node/check-is-refer-to-another-node.helper.d.ts +0 -10
  89. package/src/packages/get-form-control-payload/helpers/check-is-refer-to-another-node/check-is-refer-to-another-node.helper.d.ts.map +0 -1
  90. package/src/packages/get-form-control-payload/helpers/check-is-refer-to-another-node/check-is-refer-to-another-node.helper.js +0 -24
  91. package/src/packages/get-form-control-payload/helpers/get-allowed-elements/get-allowed-elements.helper.d.ts.map +0 -1
  92. package/src/packages/get-form-control-payload/helpers/get-allowed-elements/get-allowed-elements.helper.js +0 -61
  93. package/src/packages/get-form-control-payload/helpers/get-checkbox-value/get-checkbox-value.helper.d.ts +0 -6
  94. package/src/packages/get-form-control-payload/helpers/get-checkbox-value/get-checkbox-value.helper.d.ts.map +0 -1
  95. package/src/packages/get-form-control-payload/helpers/get-cleaned-value-as-array-control-name/get-cleaned-value-as-array-control-name.helper.d.ts.map +0 -1
  96. package/src/packages/get-form-control-payload/helpers/get-control-value/get-control-value.helper.d.ts +0 -9
  97. package/src/packages/get-form-control-payload/helpers/get-control-value/get-control-value.helper.d.ts.map +0 -1
  98. package/src/packages/get-form-control-payload/helpers/get-datatime-local-value/get-datatime-local-value.helper.d.ts +0 -6
  99. package/src/packages/get-form-control-payload/helpers/get-datatime-local-value/get-datatime-local-value.helper.d.ts.map +0 -1
  100. package/src/packages/get-form-control-payload/helpers/get-datatime-local-value/get-datatime-local-value.helper.js +0 -9
  101. package/src/packages/get-form-control-payload/helpers/get-input-date-value/get-input-date-value.helper.d.ts +0 -6
  102. package/src/packages/get-form-control-payload/helpers/get-input-date-value/get-input-date-value.helper.d.ts.map +0 -1
  103. package/src/packages/get-form-control-payload/helpers/get-input-email-value/get-input-email-value.helper.d.ts +0 -6
  104. package/src/packages/get-form-control-payload/helpers/get-input-email-value/get-input-email-value.helper.d.ts.map +0 -1
  105. package/src/packages/get-form-control-payload/helpers/get-input-email-value/get-input-email-value.helper.js +0 -20
  106. package/src/packages/get-form-control-payload/helpers/get-input-file-value/get-input-file-value.helper.d.ts +0 -6
  107. package/src/packages/get-form-control-payload/helpers/get-input-file-value/get-input-file-value.helper.d.ts.map +0 -1
  108. package/src/packages/get-form-control-payload/helpers/get-input-file-value/get-input-file-value.helper.js +0 -16
  109. package/src/packages/get-form-control-payload/helpers/get-input-numeric-value/get-input-numeric-value.helper.d.ts +0 -6
  110. package/src/packages/get-form-control-payload/helpers/get-input-numeric-value/get-input-numeric-value.helper.d.ts.map +0 -1
  111. package/src/packages/get-form-control-payload/helpers/get-multi-select-values/get-multi-select-values.helper.d.ts +0 -6
  112. package/src/packages/get-form-control-payload/helpers/get-multi-select-values/get-multi-select-values.helper.d.ts.map +0 -1
  113. package/src/packages/get-form-control-payload/helpers/get-multi-select-values/get-multi-select-values.helper.js +0 -9
@@ -1,70 +1,27 @@
1
- import { ControlType } from '../../libs/enums/enums.js';
1
+ import { ControlElementType } from '../../libs/enums/enums.js';
2
2
  import { FormPayloadError } from '../../libs/exceptions/exceptions.js';
3
3
  import {
4
- checkHasValueAsArray,
5
- checkIsReferToAnotherNode,
6
- getAllowedElements,
7
- getCheckboxValue,
8
- getCleanedValueAsArrayControlName,
9
- getDatetimeLocalValue,
10
- getFormControlValue,
11
- getInputDateValue,
12
- getInputEmailValue,
13
- getInputFileValue,
14
- getInputNumericValue,
15
- getMultiSelectValues,
4
+ getCheckboxControlElementValue,
5
+ getControlElementValue,
6
+ getDateControlElementValue,
7
+ getDatetimeLocaControlElementValue,
8
+ getEmailControlElementValue,
9
+ getFieldsetControlElementValue,
10
+ getFileControlElementValue,
11
+ getMultiselectControlElementValue,
12
+ getNumericControlElementValue,
16
13
  } from './helpers/helpers.js';
17
14
 
18
- /** @typedef {import('../../libs/types/types.js').HTMLFormControlElement} HTMLFormControlElement */
19
15
  /** @typedef {import('../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
20
16
 
21
- /**
22
- * @template {Record<string, unknown>} T
23
- * @param {...HTMLFormControlElement} controlElements
24
- * @returns {T}
25
- */
26
- const getFormControlsPayload = (...controlElements) => {
27
- const allowedElements = getAllowedElements(controlElements);
28
-
29
- const elementsValues = /** @type {T} */ ({});
30
-
31
- for (const element of allowedElements) {
32
- const isReferToAnotherNode = checkIsReferToAnotherNode(
33
- element,
34
- allowedElements,
35
- );
36
-
37
- if (isReferToAnotherNode) {
38
- continue;
39
- }
40
-
41
- let key = /** @type {keyof T} */ (element.name);
42
- let value = /** @type {T[keyof T]} */ (getFormControlPayload(element));
43
- const hasValueAsArray = checkHasValueAsArray(element);
44
-
45
- if (hasValueAsArray) {
46
- key = getCleanedValueAsArrayControlName(element);
47
-
48
- value = /** @type {T[keyof T]} */ ([
49
- .../** @type {unknown[]} */ (elementsValues[key] ?? []),
50
- .../** @type {unknown[]} */ (getFormControlPayload(element)),
51
- ]);
52
- }
53
-
54
- elementsValues[key] = value;
55
- }
56
-
57
- return elementsValues;
58
- };
59
-
60
17
  /**
61
18
  * @template {unknown} T
62
- * @param {HTMLFormOperationalControlElement} controlNode
19
+ * @param {HTMLFormOperationalControlElement} controlElement
63
20
  * @returns {T}
64
21
  * @throws {FormPayloadError}
65
22
  */
66
- const getFormControlPayload = (controlNode) => {
67
- const hasType = 'type' in controlNode;
23
+ const getFormControlPayload = (controlElement) => {
24
+ const hasType = 'type' in controlElement;
68
25
 
69
26
  if (!hasType) {
70
27
  throw new FormPayloadError({
@@ -72,92 +29,96 @@ const getFormControlPayload = (controlNode) => {
72
29
  });
73
30
  }
74
31
 
75
- switch (controlNode.type) {
76
- case ControlType.TEXT:
77
- case ControlType.PASSWORD:
78
- case ControlType.SEARCH:
79
- case ControlType.URL:
80
- case ControlType.TEL:
81
- case ControlType.COLOR:
82
- case ControlType.RADIO:
83
- case ControlType.HIDDEN:
84
- case ControlType.TEXTAREA:
85
- case ControlType.SELECT_ONE:
86
- case ControlType.OUTPUT: {
32
+ switch (controlElement.type) {
33
+ case ControlElementType.TEXT:
34
+ case ControlElementType.PASSWORD:
35
+ case ControlElementType.SEARCH:
36
+ case ControlElementType.URL:
37
+ case ControlElementType.TEL:
38
+ case ControlElementType.COLOR:
39
+ case ControlElementType.RADIO:
40
+ case ControlElementType.HIDDEN:
41
+ case ControlElementType.TEXTAREA:
42
+ case ControlElementType.SELECT_ONE:
43
+ case ControlElementType.OUTPUT: {
87
44
  return /** @type {T} */ (
88
- getFormControlValue(
45
+ getControlElementValue(
89
46
  /**
90
47
  * @type {HTMLInputElement
91
48
  * | HTMLOutputElement
92
49
  * | HTMLTextAreaElement
93
50
  * | HTMLSelectElement}
94
- */ (controlNode),
51
+ */ (controlElement),
95
52
  )
96
53
  );
97
54
  }
98
- case ControlType.EMAIL: {
55
+ case ControlElementType.EMAIL: {
99
56
  return /** @type {T} */ (
100
- getInputEmailValue(
101
- /** @type {HTMLInputElement} */ (controlNode),
57
+ getEmailControlElementValue(
58
+ /** @type {HTMLInputElement} */ (controlElement),
102
59
  )
103
60
  );
104
61
  }
105
- case ControlType.NUMBER:
106
- case ControlType.RANGE: {
62
+ case ControlElementType.NUMBER:
63
+ case ControlElementType.RANGE: {
107
64
  return /** @type {T} */ (
108
- getInputNumericValue(
109
- /** @type {HTMLInputElement} */ (controlNode),
65
+ getNumericControlElementValue(
66
+ /** @type {HTMLInputElement} */ (controlElement),
110
67
  )
111
68
  );
112
69
  }
113
- case ControlType.CHECKBOX: {
70
+ case ControlElementType.CHECKBOX: {
114
71
  return /** @type {T} */ (
115
- getCheckboxValue(/** @type {HTMLInputElement} */ (controlNode))
72
+ getCheckboxControlElementValue(
73
+ /** @type {HTMLInputElement} */ (controlElement),
74
+ )
116
75
  );
117
76
  }
118
- case ControlType.DATE:
119
- case ControlType.TIME:
120
- case ControlType.MONTH:
121
- case ControlType.WEEK: {
77
+ case ControlElementType.DATE:
78
+ case ControlElementType.TIME:
79
+ case ControlElementType.MONTH:
80
+ case ControlElementType.WEEK: {
122
81
  return /** @type {T} */ (
123
- getInputDateValue(/** @type {HTMLInputElement} */ (controlNode))
82
+ getDateControlElementValue(
83
+ /** @type {HTMLInputElement} */ (controlElement),
84
+ )
124
85
  );
125
86
  }
126
- case ControlType.DATETIME_LOCAL: {
87
+ case ControlElementType.DATETIME_LOCAL: {
127
88
  return /** @type {T} */ (
128
- getDatetimeLocalValue(
129
- /** @type {HTMLInputElement} */ (controlNode),
89
+ getDatetimeLocaControlElementValue(
90
+ /** @type {HTMLInputElement} */ (controlElement),
130
91
  )
131
92
  );
132
93
  }
133
- case ControlType.FILE: {
94
+ case ControlElementType.FILE: {
134
95
  return /** @type {T} */ (
135
- getInputFileValue(/** @type {HTMLInputElement} */ (controlNode))
96
+ getFileControlElementValue(
97
+ /** @type {HTMLInputElement} */ (controlElement),
98
+ )
136
99
  );
137
100
  }
138
- case ControlType.SELECT_MULTIPLE: {
101
+ case ControlElementType.SELECT_MULTIPLE: {
139
102
  return /** @type {T} */ (
140
- getMultiSelectValues(
141
- /** @type {HTMLSelectElement} */ (controlNode),
103
+ getMultiselectControlElementValue(
104
+ /** @type {HTMLSelectElement} */ (controlElement),
142
105
  )
143
106
  );
144
107
  }
145
- case ControlType.FIELDSET: {
146
- const elements = [
147
- .../** @type {HTMLFieldSetElement} */ (controlNode).elements,
148
- ];
149
-
108
+ case ControlElementType.FIELDSET: {
150
109
  return /** @type {T} */ (
151
- getFormControlsPayload(
152
- .../** @type {HTMLFormControlElement[]} */ (elements),
110
+ getFieldsetControlElementValue(
111
+ getFormControlPayload,
112
+ /** @type {HTMLFieldSetElement} */ (controlElement),
153
113
  )
154
114
  );
155
115
  }
156
116
  }
157
117
 
158
118
  throw new FormPayloadError({
159
- message: `Unsupported control element type – ${controlNode.type}.`,
119
+ message: `Unsupported control element type – ${controlElement.type}.`,
160
120
  });
161
121
  };
162
122
 
163
- export { getFormControlPayload, getFormControlsPayload };
123
+ export { getFormControlElementsPayload } from './helpers/helpers.js';
124
+ export { getFormControlPayload };
@@ -1 +1 @@
1
- {"version":3,"file":"check-has-value-as-array.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/check-has-value-as-array/check-has-value-as-array.helper.js"],"names":[],"mappings":"gDAKc,OAAO,iCAAiC,EAAE,iCAAiC;AAAzF,+HAA+H;AAE/H;;;GAGG;AACH,8CAHW,iCAAiC,GAC/B,OAAO,CASnB"}
1
+ {"version":3,"file":"check-has-value-as-array.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/check-has-value-as-array/check-has-value-as-array.helper.js"],"names":[],"mappings":"gDAKc,OAAO,iCAAiC,EAAE,iCAAiC;AAAzF,+HAA+H;AAE/H;;;GAGG;AACH,8CAHW,iCAAiC,GAC/B,OAAO,CAYnB"}
@@ -1,5 +1,5 @@
1
1
  import {
2
- VALUE_AS_ARRAY_CUSTOM_CONTROL_TYPES,
2
+ VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES,
3
3
  VALUE_AS_ARRAY_IDENTIFIER,
4
4
  } from '../../../../libs/constants/constants.js';
5
5
 
@@ -10,12 +10,15 @@ import {
10
10
  * @returns {boolean}
11
11
  */
12
12
  const checkHasValueAsArray = (element) => {
13
- return (
14
- element.name.endsWith(VALUE_AS_ARRAY_IDENTIFIER) &&
15
- /** @type {readonly string[]} */ (
16
- VALUE_AS_ARRAY_CUSTOM_CONTROL_TYPES
17
- ).includes(element.type)
13
+ const hasValueAsArrayIdentifier = element.name.endsWith(
14
+ VALUE_AS_ARRAY_IDENTIFIER,
18
15
  );
16
+ const isValueAsArrayCustomControlElementType =
17
+ /** @type {readonly string[]} */ (
18
+ VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES
19
+ ).includes(element.type);
20
+
21
+ return hasValueAsArrayIdentifier && isValueAsArrayCustomControlElementType;
19
22
  };
20
23
 
21
24
  export { checkHasValueAsArray };
@@ -0,0 +1,9 @@
1
+ export type HTMLFormOperationalControlElement = import('../../../../libs/types/types.js').HTMLFormOperationalControlElement;
2
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
3
+ /**
4
+ * @param {HTMLFormOperationalControlElement} currentElement
5
+ * @param {HTMLFormOperationalControlElement[]} checkedElements
6
+ * @returns {boolean}
7
+ */
8
+ export function checkIsReferToAnotherElement(currentElement: HTMLFormOperationalControlElement, checkedElements: HTMLFormOperationalControlElement[]): boolean;
9
+ //# sourceMappingURL=check-is-refer-to-another-element.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-is-refer-to-another-element.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.js"],"names":[],"mappings":"gDAAc,OAAO,iCAAiC,EAAE,iCAAiC;AAAzF,+HAA+H;AAE/H;;;;GAIG;AACH,6DAJW,iCAAiC,mBACjC,iCAAiC,EAAE,GACjC,OAAO,CAenB"}
@@ -0,0 +1,23 @@
1
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
2
+
3
+ /**
4
+ * @param {HTMLFormOperationalControlElement} currentElement
5
+ * @param {HTMLFormOperationalControlElement[]} checkedElements
6
+ * @returns {boolean}
7
+ */
8
+ const checkIsReferToAnotherElement = (currentElement, checkedElements) => {
9
+ return checkedElements.some((checkedElement) => {
10
+ const hasElements =
11
+ 'elements' in checkedElement && checkedElement.elements.length > 0;
12
+
13
+ if (!hasElements) {
14
+ return false;
15
+ }
16
+
17
+ return [...checkedElement.elements].some((element) =>
18
+ element.contains(currentElement),
19
+ );
20
+ });
21
+ };
22
+
23
+ export { checkIsReferToAnotherElement };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {boolean | string[]}
4
+ */
5
+ export function getCheckboxControlElementValue(element: HTMLInputElement): boolean | string[];
6
+ //# sourceMappingURL=get-checkbox-control-element-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-checkbox-control-element-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-checkbox-control-element-value/get-checkbox-control-element-value.helper.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wDAHW,gBAAgB,GACd,OAAO,GAAG,MAAM,EAAE,CAU9B"}
@@ -4,7 +4,7 @@ import { VALUE_AS_ARRAY_IDENTIFIER } from '../../../../libs/constants/constants.
4
4
  * @param {HTMLInputElement} element
5
5
  * @returns {boolean | string[]}
6
6
  */
7
- const getCheckboxValue = (element) => {
7
+ const getCheckboxControlElementValue = (element) => {
8
8
  const hasArrayValue = element.name.endsWith(VALUE_AS_ARRAY_IDENTIFIER);
9
9
 
10
10
  if (hasArrayValue) {
@@ -14,4 +14,4 @@ const getCheckboxValue = (element) => {
14
14
  return element.checked;
15
15
  };
16
16
 
17
- export { getCheckboxValue };
17
+ export { getCheckboxControlElementValue };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param {HTMLInputElement
3
+ * | HTMLOutputElement
4
+ * | HTMLTextAreaElement
5
+ * | HTMLSelectElement} element
6
+ * @returns {string}
7
+ */
8
+ export function getControlElementValue(element: HTMLInputElement | HTMLOutputElement | HTMLTextAreaElement | HTMLSelectElement): string;
9
+ //# sourceMappingURL=get-control-element-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-control-element-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-control-element-value/get-control-element-value.helper.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,gDANW,gBAAgB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACV,MAAM,CAIlB"}
@@ -5,8 +5,8 @@
5
5
  * | HTMLSelectElement} element
6
6
  * @returns {string}
7
7
  */
8
- const getFormControlValue = (element) => {
8
+ const getControlElementValue = (element) => {
9
9
  return element.value;
10
10
  };
11
11
 
12
- export { getFormControlValue };
12
+ export { getControlElementValue };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {Date}
4
+ */
5
+ export function getDatetimeLocaControlElementValue(element: HTMLInputElement): Date;
6
+ //# sourceMappingURL=get-datatime-local-control-element-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-datatime-local-control-element-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-datatime-local-control-element-value/get-datatime-local-control-element-value.helper.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,4DAHW,gBAAgB,GACd,IAAI,CAIhB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {Date}
4
+ */
5
+ const getDatetimeLocaControlElementValue = (element) => {
6
+ return new Date(element.value);
7
+ };
8
+
9
+ export { getDatetimeLocaControlElementValue };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {Date | null}
4
+ */
5
+ export function getDateControlElementValue(element: HTMLInputElement): Date | null;
6
+ //# sourceMappingURL=get-date-value-control-element.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-date-value-control-element.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-date-control-element-value/get-date-value-control-element.helper.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oDAHW,gBAAgB,GACd,IAAI,GAAG,IAAI,CAIvB"}
@@ -2,8 +2,8 @@
2
2
  * @param {HTMLInputElement} element
3
3
  * @returns {Date | null}
4
4
  */
5
- const getInputDateValue = (element) => {
5
+ const getDateControlElementValue = (element) => {
6
6
  return element.valueAsDate;
7
7
  };
8
8
 
9
- export { getInputDateValue };
9
+ export { getDateControlElementValue };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {string | string[]}
4
+ */
5
+ export function getEmailControlElementValue(element: HTMLInputElement): string | string[];
6
+ //# sourceMappingURL=get-email-control-element-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-email-control-element-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-email-control-element-value/get-email-control-element-value.helper.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qDAHW,gBAAgB,GACd,MAAM,GAAG,MAAM,EAAE,CAW7B"}
@@ -0,0 +1,20 @@
1
+ import { getControlElementValue } from '../get-control-element-value/get-control-element-value.helper.js';
2
+
3
+ const EMAIL_SEPARATOR = ',';
4
+
5
+ /**
6
+ * @param {HTMLInputElement} element
7
+ * @returns {string | string[]}
8
+ */
9
+ const getEmailControlElementValue = (element) => {
10
+ if (element.multiple) {
11
+ return element.value
12
+ .split(EMAIL_SEPARATOR)
13
+ .map((email) => email.trim())
14
+ .filter((email) => email !== '');
15
+ }
16
+
17
+ return getControlElementValue(element);
18
+ };
19
+
20
+ export { getEmailControlElementValue };
@@ -0,0 +1,14 @@
1
+ export type HTMLFormOperationalControlElement = import('../../../../libs/types/types.js').HTMLFormOperationalControlElement;
2
+ export type HTMLFormControlElement = import('../../../../libs/types/types.js').HTMLFormControlElement;
3
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
4
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormControlElement} HTMLFormControlElement */
5
+ /**
6
+ * @template {Record<string, unknown>} T
7
+ * @param {<T extends unknown>(
8
+ * element: HTMLFormOperationalControlElement,
9
+ * ) => T} getFormControlElementPayloadCallback
10
+ * @param {HTMLFieldSetElement} element
11
+ * @returns {T | [T]}
12
+ */
13
+ export function getFieldsetControlElementValue<T extends Record<string, unknown>>(getFormControlElementPayloadCallback: <T_1 extends unknown>(element: HTMLFormOperationalControlElement) => T_1, element: HTMLFieldSetElement): T | [T];
14
+ //# sourceMappingURL=get-fieldset-control-element-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-fieldset-control-element-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.js"],"names":[],"mappings":"gDAGc,OAAO,iCAAiC,EAAE,iCAAiC;qCAC3E,OAAO,iCAAiC,EAAE,sBAAsB;AAD9E,+HAA+H;AAC/H,yGAAyG;AAEzG;;;;;;;GAOG;AACH,uJALa,iCAAiC,mBAEnC,mBAAmB,WAgB7B"}
@@ -0,0 +1,30 @@
1
+ import { VALUE_AS_ARRAY_IDENTIFIER } from '../../../../libs/constants/constants.js';
2
+ import { getFormControlElementsPayload } from '../get-form-control-elements-payload/get-form-control-elements-payload.js';
3
+
4
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
5
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormControlElement} HTMLFormControlElement */
6
+
7
+ /**
8
+ * @template {Record<string, unknown>} T
9
+ * @param {<T extends unknown>(
10
+ * element: HTMLFormOperationalControlElement,
11
+ * ) => T} getFormControlElementPayloadCallback
12
+ * @param {HTMLFieldSetElement} element
13
+ * @returns {T | [T]}
14
+ */
15
+ const getFieldsetControlElementValue = (
16
+ getFormControlElementPayloadCallback,
17
+ element,
18
+ ) => {
19
+ const elements = [.../** @type {HTMLFieldSetElement} */ (element).elements];
20
+ const fieldsetValue = getFormControlElementsPayload(
21
+ getFormControlElementPayloadCallback,
22
+ .../** @type {HTMLFormControlElement[]} */ (elements),
23
+ );
24
+
25
+ const hasArrayValue = element.name.endsWith(VALUE_AS_ARRAY_IDENTIFIER);
26
+
27
+ return /** @type {T} */ (hasArrayValue ? [fieldsetValue] : fieldsetValue);
28
+ };
29
+
30
+ export { getFieldsetControlElementValue };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {File[] | File | null}
4
+ */
5
+ export function getFileControlElementValue(element: HTMLInputElement): File[] | File | null;
6
+ //# sourceMappingURL=get-file-control-element-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file-control-element-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-file-control-element-value/get-file-control-element-value.helper.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oDAHW,gBAAgB,GACd,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAWhC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {File[] | File | null}
4
+ */
5
+ const getFileControlElementValue = (element) => {
6
+ const inputFiles = element.files ?? [];
7
+
8
+ if (element.multiple) {
9
+ return [...inputFiles];
10
+ }
11
+ const [file] = inputFiles;
12
+
13
+ return file ?? null;
14
+ };
15
+
16
+ export { getFileControlElementValue };
@@ -0,0 +1,14 @@
1
+ export type HTMLFormOperationalControlElement = import('../../../../libs/types/types.js').HTMLFormOperationalControlElement;
2
+ export type HTMLFormControlElement = import('../../../../libs/types/types.js').HTMLFormControlElement;
3
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
4
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormControlElement} HTMLFormControlElement */
5
+ /**
6
+ * @template {Record<string, unknown>} T
7
+ * @param {<T extends unknown>(
8
+ * element: HTMLFormOperationalControlElement,
9
+ * ) => T} getFormControlElementPayloadCallback
10
+ * @param {...HTMLFormControlElement} controlElements
11
+ * @returns {T}
12
+ */
13
+ export function getFormControlElementsPayload<T extends Record<string, unknown>>(getFormControlElementPayloadCallback: <T_1 extends unknown>(element: HTMLFormOperationalControlElement) => T_1, ...controlElements: HTMLFormControlElement[]): T;
14
+ //# sourceMappingURL=get-form-control-elements-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-form-control-elements-payload.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-form-control-elements-payload/get-form-control-elements-payload.js"],"names":[],"mappings":"gDAKc,OAAO,iCAAiC,EAAE,iCAAiC;qCAC3E,OAAO,iCAAiC,EAAE,sBAAsB;AAD9E,+HAA+H;AAC/H,yGAAyG;AAEzG;;;;;;;GAOG;AACH,sJALa,iCAAiC,8BAEhC,sBAAsB,OAqDnC"}
@@ -0,0 +1,69 @@
1
+ import { checkHasValueAsArray } from '../check-has-value-as-array/check-has-value-as-array.helper.js';
2
+ import { checkIsReferToAnotherElement } from '../check-is-refer-to-another-element/check-is-refer-to-another-element.helper.js';
3
+ import { getOperationalControlElements } from '../get-operational-control-elements/get-operational-control-elements.helper.js';
4
+ import { normalizeValueAsArrayControlElementName } from '../normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.js';
5
+
6
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
7
+ /** @typedef {import('../../../../libs/types/types.js').HTMLFormControlElement} HTMLFormControlElement */
8
+
9
+ /**
10
+ * @template {Record<string, unknown>} T
11
+ * @param {<T extends unknown>(
12
+ * element: HTMLFormOperationalControlElement,
13
+ * ) => T} getFormControlElementPayloadCallback
14
+ * @param {...HTMLFormControlElement} controlElements
15
+ * @returns {T}
16
+ */
17
+ const getFormControlElementsPayload = (
18
+ getFormControlElementPayloadCallback,
19
+ ...controlElements
20
+ ) => {
21
+ const operationalControlElements =
22
+ getOperationalControlElements(controlElements);
23
+
24
+ const elementsValues = /** @type {T} */ ({});
25
+
26
+ for (const operationalControlElement of operationalControlElements) {
27
+ const isReferToAnotherElement = checkIsReferToAnotherElement(
28
+ operationalControlElement,
29
+ operationalControlElements,
30
+ );
31
+
32
+ if (isReferToAnotherElement) {
33
+ continue;
34
+ }
35
+
36
+ const hasValueAsArray = checkHasValueAsArray(operationalControlElement);
37
+
38
+ if (hasValueAsArray) {
39
+ const key = /** @type {keyof T} */ (
40
+ normalizeValueAsArrayControlElementName(
41
+ operationalControlElement,
42
+ )
43
+ );
44
+ const value = /** @type {T[keyof T]} */ ([
45
+ .../** @type {unknown[]} */ (elementsValues[key] ?? []),
46
+ .../** @type {unknown[]} */ (
47
+ getFormControlElementPayloadCallback(
48
+ operationalControlElement,
49
+ )
50
+ ),
51
+ ]);
52
+
53
+ elementsValues[key] = value;
54
+
55
+ continue;
56
+ }
57
+
58
+ const key = /** @type {keyof T} */ (operationalControlElement.name);
59
+ const value = /** @type {T[keyof T]} */ (
60
+ getFormControlElementPayloadCallback(operationalControlElement)
61
+ );
62
+
63
+ elementsValues[key] = value;
64
+ }
65
+
66
+ return elementsValues;
67
+ };
68
+
69
+ export { getFormControlElementsPayload };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {HTMLSelectElement} element
3
+ * @returns {string[]}
4
+ */
5
+ export function getMultiselectControlElementValue(element: HTMLSelectElement): string[];
6
+ //# sourceMappingURL=get-multiselect-control-type-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-multiselect-control-type-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-multiselect-control-type-value/get-multiselect-control-type-value.helper.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,2DAHW,iBAAiB,GACf,MAAM,EAAE,CAIpB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param {HTMLSelectElement} element
3
+ * @returns {string[]}
4
+ */
5
+ const getMultiselectControlElementValue = (element) => {
6
+ return Array.from(element.selectedOptions, (opt) => opt.value);
7
+ };
8
+
9
+ export { getMultiselectControlElementValue };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @returns {number}
4
+ */
5
+ export function getNumericControlElementValue(element: HTMLInputElement): number;
6
+ //# sourceMappingURL=get-numeric-control-element-value.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-numeric-control-element-value.helper.d.ts","sourceRoot":"","sources":["../../../../../../src/packages/get-form-control-payload/helpers/get-numeric-control-element-value/get-numeric-control-element-value.helper.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,uDAHW,gBAAgB,GACd,MAAM,CAIlB"}