form-payload 1.6.0 → 1.7.1

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 (140) hide show
  1. package/package.json +14 -5
  2. package/readme.md +192 -60
  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} +3 -3
  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} +4 -3
  18. package/src/libs/enums/enums.d.ts +1 -1
  19. package/src/libs/enums/enums.js +1 -1
  20. package/src/libs/helpers/check-is-one-of/check-is-one-of.helper.d.ts +8 -0
  21. package/src/libs/helpers/check-is-one-of/check-is-one-of.helper.d.ts.map +1 -0
  22. package/src/libs/helpers/check-is-one-of/check-is-one-of.helper.js +11 -0
  23. package/src/libs/helpers/helpers.d.ts +2 -0
  24. package/src/libs/helpers/helpers.d.ts.map +1 -0
  25. package/src/libs/helpers/helpers.js +1 -0
  26. package/src/packages/get-form-control-payload/get-form-control-payload.d.ts +3 -3
  27. package/src/packages/get-form-control-payload/get-form-control-payload.d.ts.map +1 -1
  28. package/src/packages/get-form-control-payload/get-form-control-payload.js +68 -55
  29. package/src/packages/get-form-control-payload/libs/helpers/check-has-value-as-array/check-has-value-as-array.helper.d.ts +8 -0
  30. package/src/packages/get-form-control-payload/libs/helpers/check-has-value-as-array/check-has-value-as-array.helper.d.ts.map +1 -0
  31. package/src/packages/get-form-control-payload/libs/helpers/check-has-value-as-array/check-has-value-as-array.helper.js +24 -0
  32. package/src/packages/get-form-control-payload/libs/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.d.ts +9 -0
  33. package/src/packages/get-form-control-payload/libs/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.d.ts.map +1 -0
  34. package/src/packages/get-form-control-payload/libs/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.js +23 -0
  35. package/src/packages/get-form-control-payload/libs/helpers/get-checkbox-control-element-value/get-checkbox-control-element-value.helper.d.ts +6 -0
  36. package/src/packages/get-form-control-payload/libs/helpers/get-checkbox-control-element-value/get-checkbox-control-element-value.helper.d.ts.map +1 -0
  37. package/src/packages/get-form-control-payload/{helpers/get-checkbox-value/get-checkbox-value.helper.js → libs/helpers/get-checkbox-control-element-value/get-checkbox-control-element-value.helper.js} +3 -3
  38. package/src/packages/get-form-control-payload/libs/helpers/get-control-element-value/get-control-element-value.helper.d.ts +10 -0
  39. package/src/packages/get-form-control-payload/libs/helpers/get-control-element-value/get-control-element-value.helper.d.ts.map +1 -0
  40. package/src/packages/get-form-control-payload/{helpers/get-control-value/get-control-value.helper.js → libs/helpers/get-control-element-value/get-control-element-value.helper.js} +4 -3
  41. package/src/packages/get-form-control-payload/libs/helpers/get-datatime-local-control-element-value/get-datatime-local-control-element-value.helper.d.ts +6 -0
  42. package/src/packages/get-form-control-payload/libs/helpers/get-datatime-local-control-element-value/get-datatime-local-control-element-value.helper.d.ts.map +1 -0
  43. package/src/packages/get-form-control-payload/libs/helpers/get-datatime-local-control-element-value/get-datatime-local-control-element-value.helper.js +9 -0
  44. package/src/packages/get-form-control-payload/libs/helpers/get-date-control-element-value/get-date-value-control-element.helper.d.ts +6 -0
  45. package/src/packages/get-form-control-payload/libs/helpers/get-date-control-element-value/get-date-value-control-element.helper.d.ts.map +1 -0
  46. package/src/packages/get-form-control-payload/{helpers/get-input-date-value/get-input-date-value.helper.js → libs/helpers/get-date-control-element-value/get-date-value-control-element.helper.js} +2 -2
  47. package/src/packages/get-form-control-payload/libs/helpers/get-email-control-element-value/get-email-control-element-value.helper.d.ts +6 -0
  48. package/src/packages/get-form-control-payload/libs/helpers/get-email-control-element-value/get-email-control-element-value.helper.d.ts.map +1 -0
  49. package/src/packages/get-form-control-payload/libs/helpers/get-email-control-element-value/get-email-control-element-value.helper.js +20 -0
  50. package/src/packages/get-form-control-payload/libs/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.d.ts +12 -0
  51. package/src/packages/get-form-control-payload/libs/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.d.ts.map +1 -0
  52. package/src/packages/get-form-control-payload/libs/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.js +28 -0
  53. package/src/packages/get-form-control-payload/libs/helpers/get-file-control-element-value/get-file-control-element-value.helper.d.ts +6 -0
  54. package/src/packages/get-form-control-payload/libs/helpers/get-file-control-element-value/get-file-control-element-value.helper.d.ts.map +1 -0
  55. package/src/packages/get-form-control-payload/libs/helpers/get-file-control-element-value/get-file-control-element-value.helper.js +16 -0
  56. package/src/packages/get-form-control-payload/libs/helpers/get-form-control-elements-payload/get-form-control-elements-payload.d.ts +14 -0
  57. package/src/packages/get-form-control-payload/libs/helpers/get-form-control-elements-payload/get-form-control-elements-payload.d.ts.map +1 -0
  58. package/src/packages/get-form-control-payload/libs/helpers/get-form-control-elements-payload/get-form-control-elements-payload.js +104 -0
  59. package/src/packages/get-form-control-payload/libs/helpers/get-multiselect-control-type-value/get-multiselect-control-type-value.helper.d.ts +6 -0
  60. package/src/packages/get-form-control-payload/libs/helpers/get-multiselect-control-type-value/get-multiselect-control-type-value.helper.d.ts.map +1 -0
  61. package/src/packages/get-form-control-payload/libs/helpers/get-multiselect-control-type-value/get-multiselect-control-type-value.helper.js +9 -0
  62. package/src/packages/get-form-control-payload/libs/helpers/get-numeric-control-element-value/get-numeric-control-element-value.helper.d.ts +6 -0
  63. package/src/packages/get-form-control-payload/libs/helpers/get-numeric-control-element-value/get-numeric-control-element-value.helper.d.ts.map +1 -0
  64. package/src/packages/get-form-control-payload/{helpers/get-input-numeric-value/get-input-numeric-value.helper.js → libs/helpers/get-numeric-control-element-value/get-numeric-control-element-value.helper.js} +2 -2
  65. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/get-operational-control-elements.helper.d.ts +8 -0
  66. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/get-operational-control-elements.helper.d.ts.map +1 -0
  67. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/get-operational-control-elements.helper.js +36 -0
  68. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-has-control-element-name/check-has-control-element-name.helper.d.ts +8 -0
  69. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-has-control-element-name/check-has-control-element-name.helper.d.ts.map +1 -0
  70. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-has-control-element-name/check-has-control-element-name.helper.js +11 -0
  71. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element/check-is-allowed-control-element.helper.d.ts +8 -0
  72. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element/check-is-allowed-control-element.helper.d.ts.map +1 -0
  73. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element/check-is-allowed-control-element.helper.js +19 -0
  74. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element-type/check-is-allowed-control-element-type.helper.d.ts +8 -0
  75. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element-type/check-is-allowed-control-element-type.helper.d.ts.map +1 -0
  76. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/check-is-allowed-control-element-type/check-is-allowed-control-element-type.helper.js +17 -0
  77. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/helpers.d.ts +4 -0
  78. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/helpers.d.ts.map +1 -0
  79. package/src/packages/get-form-control-payload/libs/helpers/get-operational-control-elements/helpers/helpers.js +3 -0
  80. package/src/packages/get-form-control-payload/libs/helpers/get-radio-control-element-value/get-radio-control-element-value.helper.d.ts +6 -0
  81. package/src/packages/get-form-control-payload/libs/helpers/get-radio-control-element-value/get-radio-control-element-value.helper.d.ts.map +1 -0
  82. package/src/packages/get-form-control-payload/libs/helpers/get-radio-control-element-value/get-radio-control-element-value.helper.js +13 -0
  83. package/src/packages/get-form-control-payload/libs/helpers/helpers.d.ts +12 -0
  84. package/src/packages/get-form-control-payload/libs/helpers/helpers.d.ts.map +1 -0
  85. package/src/packages/get-form-control-payload/libs/helpers/helpers.js +11 -0
  86. package/src/packages/get-form-control-payload/libs/helpers/normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.d.ts +8 -0
  87. package/src/packages/get-form-control-payload/libs/helpers/normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.d.ts.map +1 -0
  88. package/src/packages/get-form-control-payload/libs/helpers/normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.js +13 -0
  89. package/src/packages/get-form-payload/get-form-payload.d.ts +2 -4
  90. package/src/packages/get-form-payload/get-form-payload.d.ts.map +1 -1
  91. package/src/packages/get-form-payload/get-form-payload.js +7 -10
  92. package/src/packages.d.ts +80 -0
  93. package/src/libs/constants/banned-control-types.constant.d.ts +0 -2
  94. package/src/libs/constants/banned-control-types.constant.d.ts.map +0 -1
  95. package/src/libs/constants/banned-control-types.constant.js +0 -10
  96. package/src/libs/constants/value-as-array-custom-control-types.constant.d.ts +0 -2
  97. package/src/libs/constants/value-as-array-custom-control-types.constant.d.ts.map +0 -1
  98. package/src/libs/constants/value-as-array-custom-control-types.constant.js +0 -8
  99. package/src/libs/enums/control-type.enum.d.ts.map +0 -1
  100. package/src/packages/get-form-control-payload/helpers/check-has-value-as-array/check-has-value-as-array.helper.d.ts +0 -8
  101. package/src/packages/get-form-control-payload/helpers/check-has-value-as-array/check-has-value-as-array.helper.d.ts.map +0 -1
  102. package/src/packages/get-form-control-payload/helpers/check-has-value-as-array/check-has-value-as-array.helper.js +0 -21
  103. 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
  104. 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
  105. package/src/packages/get-form-control-payload/helpers/check-is-refer-to-another-node/check-is-refer-to-another-node.helper.js +0 -24
  106. package/src/packages/get-form-control-payload/helpers/get-allowed-elements/get-allowed-elements.helper.d.ts +0 -8
  107. package/src/packages/get-form-control-payload/helpers/get-allowed-elements/get-allowed-elements.helper.d.ts.map +0 -1
  108. package/src/packages/get-form-control-payload/helpers/get-allowed-elements/get-allowed-elements.helper.js +0 -61
  109. package/src/packages/get-form-control-payload/helpers/get-checkbox-value/get-checkbox-value.helper.d.ts +0 -6
  110. package/src/packages/get-form-control-payload/helpers/get-checkbox-value/get-checkbox-value.helper.d.ts.map +0 -1
  111. 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 +0 -8
  112. 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
  113. package/src/packages/get-form-control-payload/helpers/get-cleaned-value-as-array-control-name/get-cleaned-value-as-array-control-name.helper.js +0 -13
  114. package/src/packages/get-form-control-payload/helpers/get-control-value/get-control-value.helper.d.ts +0 -9
  115. package/src/packages/get-form-control-payload/helpers/get-control-value/get-control-value.helper.d.ts.map +0 -1
  116. package/src/packages/get-form-control-payload/helpers/get-datatime-local-value/get-datatime-local-value.helper.d.ts +0 -6
  117. package/src/packages/get-form-control-payload/helpers/get-datatime-local-value/get-datatime-local-value.helper.d.ts.map +0 -1
  118. package/src/packages/get-form-control-payload/helpers/get-datatime-local-value/get-datatime-local-value.helper.js +0 -9
  119. package/src/packages/get-form-control-payload/helpers/get-fieldset-value/get-fieldset-value.helper.d.ts +0 -14
  120. package/src/packages/get-form-control-payload/helpers/get-fieldset-value/get-fieldset-value.helper.d.ts.map +0 -1
  121. package/src/packages/get-form-control-payload/helpers/get-fieldset-value/get-fieldset-value.helper.js +0 -27
  122. package/src/packages/get-form-control-payload/helpers/get-form-controls-payload/get-form-controls-payload.d.ts +0 -14
  123. package/src/packages/get-form-control-payload/helpers/get-form-controls-payload/get-form-controls-payload.d.ts.map +0 -1
  124. package/src/packages/get-form-control-payload/helpers/get-form-controls-payload/get-form-controls-payload.js +0 -64
  125. package/src/packages/get-form-control-payload/helpers/get-input-date-value/get-input-date-value.helper.d.ts +0 -6
  126. package/src/packages/get-form-control-payload/helpers/get-input-date-value/get-input-date-value.helper.d.ts.map +0 -1
  127. package/src/packages/get-form-control-payload/helpers/get-input-email-value/get-input-email-value.helper.d.ts +0 -6
  128. package/src/packages/get-form-control-payload/helpers/get-input-email-value/get-input-email-value.helper.d.ts.map +0 -1
  129. package/src/packages/get-form-control-payload/helpers/get-input-email-value/get-input-email-value.helper.js +0 -20
  130. package/src/packages/get-form-control-payload/helpers/get-input-file-value/get-input-file-value.helper.d.ts +0 -6
  131. package/src/packages/get-form-control-payload/helpers/get-input-file-value/get-input-file-value.helper.d.ts.map +0 -1
  132. package/src/packages/get-form-control-payload/helpers/get-input-file-value/get-input-file-value.helper.js +0 -16
  133. package/src/packages/get-form-control-payload/helpers/get-input-numeric-value/get-input-numeric-value.helper.d.ts +0 -6
  134. package/src/packages/get-form-control-payload/helpers/get-input-numeric-value/get-input-numeric-value.helper.d.ts.map +0 -1
  135. package/src/packages/get-form-control-payload/helpers/get-multi-select-values/get-multi-select-values.helper.d.ts +0 -6
  136. package/src/packages/get-form-control-payload/helpers/get-multi-select-values/get-multi-select-values.helper.d.ts.map +0 -1
  137. package/src/packages/get-form-control-payload/helpers/get-multi-select-values/get-multi-select-values.helper.js +0 -9
  138. package/src/packages/get-form-control-payload/helpers/helpers.d.ts +0 -15
  139. package/src/packages/get-form-control-payload/helpers/helpers.d.ts.map +0 -1
  140. package/src/packages/get-form-control-payload/helpers/helpers.js +0 -14
@@ -1,27 +1,28 @@
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
- getCheckboxValue,
5
- getDatetimeLocalValue,
6
- getFieldsetValue,
7
- getFormControlValue,
8
- getInputDateValue,
9
- getInputEmailValue,
10
- getInputFileValue,
11
- getInputNumericValue,
12
- getMultiSelectValues,
13
- } from './helpers/helpers.js';
4
+ getCheckboxControlElementValue,
5
+ getControlElementValue,
6
+ getDateControlElementValue,
7
+ getDatetimeLocaControlElementValue,
8
+ getEmailControlElementValue,
9
+ getFieldsetControlElementValue,
10
+ getFileControlElementValue,
11
+ getMultiselectControlElementValue,
12
+ getNumericControlElementValue,
13
+ getRadioControlElementValue,
14
+ } from './libs/helpers/helpers.js';
14
15
 
15
16
  /** @typedef {import('../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
16
17
 
17
18
  /**
18
19
  * @template {unknown} T
19
- * @param {HTMLFormOperationalControlElement} controlNode
20
+ * @param {HTMLFormOperationalControlElement} controlElement
20
21
  * @returns {T}
21
22
  * @throws {FormPayloadError}
22
23
  */
23
- const getFormControlPayload = (controlNode) => {
24
- const hasType = 'type' in controlNode;
24
+ const getFormControlPayload = (controlElement) => {
25
+ const hasType = 'type' in controlElement;
25
26
 
26
27
  if (!hasType) {
27
28
  throw new FormPayloadError({
@@ -29,90 +30,102 @@ const getFormControlPayload = (controlNode) => {
29
30
  });
30
31
  }
31
32
 
32
- switch (controlNode.type) {
33
- case ControlType.TEXT:
34
- case ControlType.PASSWORD:
35
- case ControlType.SEARCH:
36
- case ControlType.URL:
37
- case ControlType.TEL:
38
- case ControlType.COLOR:
39
- case ControlType.RADIO:
40
- case ControlType.HIDDEN:
41
- case ControlType.TEXTAREA:
42
- case ControlType.SELECT_ONE:
43
- case ControlType.OUTPUT: {
33
+ switch (controlElement.type) {
34
+ case ControlElementType.TEXT:
35
+ case ControlElementType.PASSWORD:
36
+ case ControlElementType.SEARCH:
37
+ case ControlElementType.URL:
38
+ case ControlElementType.TEL:
39
+ case ControlElementType.COLOR:
40
+ case ControlElementType.HIDDEN:
41
+ case ControlElementType.TEXTAREA:
42
+ case ControlElementType.SELECT_ONE:
43
+ case ControlElementType.OUTPUT: {
44
44
  return /** @type {T} */ (
45
- getFormControlValue(
45
+ getControlElementValue(
46
46
  /**
47
47
  * @type {HTMLInputElement
48
48
  * | HTMLOutputElement
49
49
  * | HTMLTextAreaElement
50
50
  * | HTMLSelectElement}
51
- */ (controlNode),
51
+ */ (controlElement),
52
52
  )
53
53
  );
54
54
  }
55
- case ControlType.EMAIL: {
55
+ case ControlElementType.EMAIL: {
56
56
  return /** @type {T} */ (
57
- getInputEmailValue(
58
- /** @type {HTMLInputElement} */ (controlNode),
57
+ getEmailControlElementValue(
58
+ /** @type {HTMLInputElement} */ (controlElement),
59
59
  )
60
60
  );
61
61
  }
62
- case ControlType.NUMBER:
63
- case ControlType.RANGE: {
62
+ case ControlElementType.RADIO: {
64
63
  return /** @type {T} */ (
65
- getInputNumericValue(
66
- /** @type {HTMLInputElement} */ (controlNode),
64
+ getRadioControlElementValue(
65
+ /** @type {HTMLInputElement} */ (controlElement),
67
66
  )
68
67
  );
69
68
  }
70
- case ControlType.CHECKBOX: {
69
+ case ControlElementType.NUMBER:
70
+ case ControlElementType.RANGE: {
71
71
  return /** @type {T} */ (
72
- getCheckboxValue(/** @type {HTMLInputElement} */ (controlNode))
72
+ getNumericControlElementValue(
73
+ /** @type {HTMLInputElement} */ (controlElement),
74
+ )
73
75
  );
74
76
  }
75
- case ControlType.DATE:
76
- case ControlType.TIME:
77
- case ControlType.MONTH:
78
- case ControlType.WEEK: {
77
+ case ControlElementType.CHECKBOX: {
79
78
  return /** @type {T} */ (
80
- getInputDateValue(/** @type {HTMLInputElement} */ (controlNode))
79
+ getCheckboxControlElementValue(
80
+ /** @type {HTMLInputElement} */ (controlElement),
81
+ )
81
82
  );
82
83
  }
83
- case ControlType.DATETIME_LOCAL: {
84
+ case ControlElementType.DATE:
85
+ case ControlElementType.TIME:
86
+ case ControlElementType.MONTH:
87
+ case ControlElementType.WEEK: {
84
88
  return /** @type {T} */ (
85
- getDatetimeLocalValue(
86
- /** @type {HTMLInputElement} */ (controlNode),
89
+ getDateControlElementValue(
90
+ /** @type {HTMLInputElement} */ (controlElement),
87
91
  )
88
92
  );
89
93
  }
90
- case ControlType.FILE: {
94
+ case ControlElementType.DATETIME_LOCAL: {
91
95
  return /** @type {T} */ (
92
- getInputFileValue(/** @type {HTMLInputElement} */ (controlNode))
96
+ getDatetimeLocaControlElementValue(
97
+ /** @type {HTMLInputElement} */ (controlElement),
98
+ )
99
+ );
100
+ }
101
+ case ControlElementType.FILE: {
102
+ return /** @type {T} */ (
103
+ getFileControlElementValue(
104
+ /** @type {HTMLInputElement} */ (controlElement),
105
+ )
93
106
  );
94
107
  }
95
- case ControlType.SELECT_MULTIPLE: {
108
+ case ControlElementType.SELECT_MULTIPLE: {
96
109
  return /** @type {T} */ (
97
- getMultiSelectValues(
98
- /** @type {HTMLSelectElement} */ (controlNode),
110
+ getMultiselectControlElementValue(
111
+ /** @type {HTMLSelectElement} */ (controlElement),
99
112
  )
100
113
  );
101
114
  }
102
- case ControlType.FIELDSET: {
115
+ case ControlElementType.FIELDSET: {
103
116
  return /** @type {T} */ (
104
- getFieldsetValue(
117
+ getFieldsetControlElementValue(
105
118
  getFormControlPayload,
106
- /** @type {HTMLFieldSetElement} */ (controlNode),
119
+ /** @type {HTMLFieldSetElement} */ (controlElement),
107
120
  )
108
121
  );
109
122
  }
110
123
  }
111
124
 
112
125
  throw new FormPayloadError({
113
- message: `Unsupported control element type – ${controlNode.type}.`,
126
+ message: `Unsupported control element type – ${controlElement.type}.`,
114
127
  });
115
128
  };
116
129
 
117
- export { getFormControlsPayload } from './helpers/helpers.js';
130
+ export { getFormControlElementsPayload } from './libs/helpers/helpers.js';
118
131
  export { getFormControlPayload };
@@ -0,0 +1,8 @@
1
+ export type HTMLFormOperationalControlElement = import('../../../../../libs/types/types.js').HTMLFormOperationalControlElement;
2
+ /** @typedef {import('../../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
3
+ /**
4
+ * @param {HTMLFormOperationalControlElement} element
5
+ * @returns {boolean}
6
+ */
7
+ export function checkHasValueAsArray(element: HTMLFormOperationalControlElement): boolean;
8
+ //# sourceMappingURL=check-has-value-as-array.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-has-value-as-array.helper.d.ts","sourceRoot":"","sources":["../../../../../../../src/packages/get-form-control-payload/libs/helpers/check-has-value-as-array/check-has-value-as-array.helper.js"],"names":[],"mappings":"gDAKc,OAAO,oCAAoC,EAAE,iCAAiC;AAA5F,kIAAkI;AAElI;;;GAGG;AACH,8CAHW,iCAAiC,GAC/B,OAAO,CAYnB"}
@@ -0,0 +1,24 @@
1
+ import {
2
+ VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES,
3
+ VALUE_AS_ARRAY_IDENTIFIER,
4
+ } from '../../../../../libs/constants/constants.js';
5
+
6
+ /** @typedef {import('../../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
7
+
8
+ /**
9
+ * @param {HTMLFormOperationalControlElement} element
10
+ * @returns {boolean}
11
+ */
12
+ const checkHasValueAsArray = (element) => {
13
+ const hasValueAsArrayIdentifier = element.name.endsWith(
14
+ VALUE_AS_ARRAY_IDENTIFIER,
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;
22
+ };
23
+
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/libs/helpers/check-is-refer-to-another-element/check-is-refer-to-another-element.helper.js"],"names":[],"mappings":"gDAAc,OAAO,oCAAoC,EAAE,iCAAiC;AAA5F,kIAAkI;AAElI;;;;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/libs/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"}
@@ -1,10 +1,10 @@
1
- import { VALUE_AS_ARRAY_IDENTIFIER } from '../../../../libs/constants/constants.js';
1
+ import { VALUE_AS_ARRAY_IDENTIFIER } from '../../../../../libs/constants/constants.js';
2
2
 
3
3
  /**
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,10 @@
1
+ /**
2
+ * @param {HTMLInputElement
3
+ * | HTMLOutputElement
4
+ * | HTMLTextAreaElement
5
+ * | HTMLSelectElement
6
+ * | RadioNodeList} element
7
+ * @returns {string}
8
+ */
9
+ export function getControlElementValue(element: HTMLInputElement | HTMLOutputElement | HTMLTextAreaElement | HTMLSelectElement | RadioNodeList): string;
10
+ //# 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/libs/helpers/get-control-element-value/get-control-element-value.helper.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,gDAPW,gBAAgB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,aAAa,GACN,MAAM,CAIlB"}
@@ -2,11 +2,12 @@
2
2
  * @param {HTMLInputElement
3
3
  * | HTMLOutputElement
4
4
  * | HTMLTextAreaElement
5
- * | HTMLSelectElement} element
5
+ * | HTMLSelectElement
6
+ * | RadioNodeList} element
6
7
  * @returns {string}
7
8
  */
8
- const getFormControlValue = (element) => {
9
+ const getControlElementValue = (element) => {
9
10
  return element.value;
10
11
  };
11
12
 
12
- export { getFormControlValue };
13
+ 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/libs/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/libs/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/libs/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 = /** @type {const} */ (',');
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,12 @@
1
+ export type HTMLFormOperationalControlElement = import('../../../../../libs/types/types.js').HTMLFormOperationalControlElement;
2
+ /** @typedef {import('../../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
3
+ /**
4
+ * @template {Record<string, unknown>} T
5
+ * @param {<T extends unknown>(
6
+ * element: HTMLFormOperationalControlElement,
7
+ * ) => T} getFormControlElementPayloadCallback
8
+ * @param {HTMLFieldSetElement} element
9
+ * @returns {T | [T]}
10
+ */
11
+ export function getFieldsetControlElementValue<T extends Record<string, unknown>>(getFormControlElementPayloadCallback: <T_1 extends unknown>(element: HTMLFormOperationalControlElement) => T_1, element: HTMLFieldSetElement): T | [T];
12
+ //# 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/libs/helpers/get-fieldset-control-element-value/get-fieldset-control-element-value.helper.js"],"names":[],"mappings":"gDAGc,OAAO,oCAAoC,EAAE,iCAAiC;AAA5F,kIAAkI;AAElI;;;;;;;GAOG;AACH,uJALa,iCAAiC,mBAEnC,mBAAmB,WAe7B"}
@@ -0,0 +1,28 @@
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
+
6
+ /**
7
+ * @template {Record<string, unknown>} T
8
+ * @param {<T extends unknown>(
9
+ * element: HTMLFormOperationalControlElement,
10
+ * ) => T} getFormControlElementPayloadCallback
11
+ * @param {HTMLFieldSetElement} element
12
+ * @returns {T | [T]}
13
+ */
14
+ const getFieldsetControlElementValue = (
15
+ getFormControlElementPayloadCallback,
16
+ element,
17
+ ) => {
18
+ const fieldsetValue = getFormControlElementsPayload(
19
+ getFormControlElementPayloadCallback,
20
+ element.elements,
21
+ );
22
+
23
+ const hasArrayValue = element.name.endsWith(VALUE_AS_ARRAY_IDENTIFIER);
24
+
25
+ return /** @type {T} */ (hasArrayValue ? [fieldsetValue] : fieldsetValue);
26
+ };
27
+
28
+ 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/libs/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 {HTMLFormControlsCollection} elements
11
+ * @returns {T}
12
+ */
13
+ export function getFormControlElementsPayload<T extends Record<string, unknown>>(getFormControlElementPayloadCallback: <T_1 extends unknown>(element: HTMLFormOperationalControlElement) => T_1, elements: HTMLFormControlsCollection): 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/libs/helpers/get-form-control-elements-payload/get-form-control-elements-payload.js"],"names":[],"mappings":"gDAQc,OAAO,oCAAoC,EAAE,iCAAiC;qCAC9E,OAAO,oCAAoC,EAAE,sBAAsB;AADjF,kIAAkI;AAClI,4GAA4G;AAE5G;;;;;;;GAOG;AACH,sJALa,iCAAiC,oBAEnC,0BAA0B,KAqFpC"}
@@ -0,0 +1,104 @@
1
+ import { ControlElementType } from '../../../../../libs/enums/enums.js';
2
+ import { checkIsOnOf } from '../../../../../libs/helpers/helpers.js';
3
+ import { checkHasValueAsArray } from '../check-has-value-as-array/check-has-value-as-array.helper.js';
4
+ import { checkIsReferToAnotherElement } from '../check-is-refer-to-another-element/check-is-refer-to-another-element.helper.js';
5
+ import { getControlElementValue } from '../get-control-element-value/get-control-element-value.helper.js';
6
+ import { getOperationalControlElements } from '../get-operational-control-elements/get-operational-control-elements.helper.js';
7
+ import { normalizeValueAsArrayControlElementName } from '../normalize-value-as-array-control-element-name/normalize-value-as-array-control-element-name.helper.js';
8
+
9
+ /** @typedef {import('../../../../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
10
+ /** @typedef {import('../../../../../libs/types/types.js').HTMLFormControlElement} HTMLFormControlElement */
11
+
12
+ /**
13
+ * @template {Record<string, unknown>} T
14
+ * @param {<T extends unknown>(
15
+ * element: HTMLFormOperationalControlElement,
16
+ * ) => T} getFormControlElementPayloadCallback
17
+ * @param {HTMLFormControlsCollection} elements
18
+ * @returns {T}
19
+ */
20
+ const getFormControlElementsPayload = (
21
+ getFormControlElementPayloadCallback,
22
+ elements,
23
+ ) => {
24
+ const controlElements = /** @type {HTMLFormControlElement[]} */ ([
25
+ ...elements,
26
+ ]);
27
+
28
+ const operationalControlElements =
29
+ getOperationalControlElements(controlElements);
30
+
31
+ const elementsValues = /** @type {T} */ ({});
32
+
33
+ for (const operationalControlElement of operationalControlElements) {
34
+ const isReferToAnotherElement = checkIsReferToAnotherElement(
35
+ operationalControlElement,
36
+ operationalControlElements,
37
+ );
38
+
39
+ if (isReferToAnotherElement) {
40
+ continue;
41
+ }
42
+
43
+ const isRadioNodeList = checkIsOnOf(
44
+ operationalControlElement.type,
45
+ ControlElementType.RADIO,
46
+ );
47
+
48
+ if (isRadioNodeList) {
49
+ const hasValue = Boolean(
50
+ elementsValues[operationalControlElement.name],
51
+ );
52
+
53
+ if (!hasValue) {
54
+ const key = /** @type {keyof T} */ (
55
+ operationalControlElement.name
56
+ );
57
+ const value = /** @type {T[keyof T]} */ (
58
+ getControlElementValue(
59
+ /** @type {RadioNodeList} */ (
60
+ elements.namedItem(operationalControlElement.name)
61
+ ),
62
+ )
63
+ );
64
+
65
+ elementsValues[key] = value;
66
+ }
67
+
68
+ continue;
69
+ }
70
+
71
+ const hasValueAsArray = checkHasValueAsArray(operationalControlElement);
72
+
73
+ if (hasValueAsArray) {
74
+ const key = /** @type {keyof T} */ (
75
+ normalizeValueAsArrayControlElementName(
76
+ operationalControlElement,
77
+ )
78
+ );
79
+ const value = /** @type {T[keyof T]} */ ([
80
+ .../** @type {unknown[]} */ (elementsValues[key] ?? []),
81
+ .../** @type {unknown[]} */ (
82
+ getFormControlElementPayloadCallback(
83
+ operationalControlElement,
84
+ )
85
+ ),
86
+ ]);
87
+
88
+ elementsValues[key] = value;
89
+
90
+ continue;
91
+ }
92
+
93
+ const key = /** @type {keyof T} */ (operationalControlElement.name);
94
+ const value = /** @type {T[keyof T]} */ (
95
+ getFormControlElementPayloadCallback(operationalControlElement)
96
+ );
97
+
98
+ elementsValues[key] = value;
99
+ }
100
+
101
+ return elementsValues;
102
+ };
103
+
104
+ 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/libs/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