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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "form-payload",
3
- "version": "1.6.0",
3
+ "version": "1.7.1",
4
4
  "description": "Gets form-payload via form.elements",
5
5
  "keywords": [
6
6
  "form",
@@ -29,14 +29,16 @@
29
29
  },
30
30
  "scripts": {
31
31
  "postinstall": "npx simple-git-hooks",
32
- "ci:format": "prettier --write \"**/*.{json,md,yml,js}\"",
32
+ "ci:lint:commit": "npx @commitlint/cli --edit",
33
33
  "ci:lint:fs": "ls-lint",
34
34
  "ci:lint:editor": "editorconfig-checker",
35
- "ci:lint:format": "prettier --check \"**/*.{json,md,yml,js}\"",
35
+ "ci:lint:trash": "knip --config knip.config.js",
36
+ "ci:lint:format": "npm run ci:format -- --check",
36
37
  "ci:lint:js": "eslint \"**/*.js\"",
37
38
  "ci:lint:type": "tsc --noEmit",
38
- "ci:lint": "npm run ci:lint:fs && npm run ci:lint:editor && npm run ci:lint:format && npm run ci:lint:js && npm run ci:lint:type",
39
+ "ci:lint": "npm run ci:lint:fs && npm run ci:lint:editor && npm run ci:lint:trash && npm run ci:lint:format && npm run ci:lint:js && npm run ci:lint:type",
39
40
  "ci:test": "node --import jsdom-global/register.js --test",
41
+ "ci:format": "prettier --write \"**/*.{json,md,yml,js}\"",
40
42
  "build:clean": "rm -rf dist",
41
43
  "build:dist": "tsc -p tsconfig.build.json",
42
44
  "build:cp": "cp -r src readme.md package.json LICENSE dist",
@@ -46,20 +48,27 @@
46
48
  "devDependencies": {
47
49
  "@commitlint/cli": "18.4.3",
48
50
  "@commitlint/config-conventional": "18.4.3",
51
+ "@commitlint/types": "18.4.3",
52
+ "@eslint/js": "8.56.0",
49
53
  "@ls-lint/ls-lint": "2.2.2",
50
54
  "@testing-library/dom": "9.3.3",
51
55
  "@types/eslint": "8.44.8",
52
56
  "@types/lint-staged": "13.2.2",
57
+ "@typescript-eslint/eslint-plugin": "6.14.0",
58
+ "@typescript-eslint/parser": "6.14.0",
53
59
  "editorconfig-checker": "5.1.2",
54
60
  "eslint": "8.55.0",
61
+ "eslint-import-resolver-typescript": "3.6.1",
55
62
  "eslint-plugin-import": "2.29.0",
56
63
  "eslint-plugin-jsdoc": "46.9.0",
57
64
  "eslint-plugin-perfectionist": "2.5.0",
58
65
  "eslint-plugin-simple-import-sort": "10.0.0",
59
66
  "eslint-plugin-sonarjs": "0.23.0",
60
67
  "eslint-plugin-unicorn": "49.0.0",
68
+ "globals": "13.24.0",
61
69
  "jsdom": "23.0.1",
62
70
  "jsdom-global": "3.0.2",
71
+ "knip": "3.8.1",
63
72
  "lint-staged": "15.2.0",
64
73
  "prettier": "3.1.0",
65
74
  "prettier-plugin-jsdoc": "1.1.1",
@@ -68,7 +77,7 @@
68
77
  },
69
78
  "simple-git-hooks": {
70
79
  "pre-commit": "npx lint-staged",
71
- "commit-msg": "npx commitlint --edit $1"
80
+ "commit-msg": "npm run ci:lint:commit"
72
81
  },
73
82
  "types": "./src/index.d.ts"
74
83
  }
package/readme.md CHANGED
@@ -13,88 +13,220 @@ npm install form-payload
13
13
 
14
14
  ## Demo
15
15
 
16
- - [Basic (JavaScript)](https://stackblitz.com/edit/form-payload-basic?file=index.js)
17
- - [Advanced (TypeScript + Validation)](https://stackblitz.com/edit/form-payload-advanced?file=index.ts,get-form-payload.ts)
18
- - [Framework (React + TypeScript)](https://stackblitz.com/edit/form-payload-framework?file=src%2FApp.tsx)
16
+ The library works perfectly with any framework. Just use a valid [HTMLFormElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement) and [form elements](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/elements). If you want to add validation or any other functionality, create wrappers on top of the exported functions from the **form-payload** library.
19
17
 
20
- PS. _The library works perfectly with any framework. Just use a valid [HTMLFormElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement). The same applies to validations and any other libraries. Just create your own wrappers on top of the functions exported by **form-payload** library._
18
+ - [Pure JavaScript](https://stackblitz.com/edit/form-payload-javascript?file=index.js)
19
+ - [TypeScript + Validation](https://stackblitz.com/edit/form-payload-typescript?file=index.ts,get-form-payload.ts)
20
+ - [React + TypeScript](https://stackblitz.com/edit/form-payload-react?file=src%2FApp.tsx)
21
21
 
22
22
  ## Usage
23
23
 
24
+ <!-- prettier-ignore-start -->
24
25
  ```html
25
- <form name="general">
26
- <label>
27
- Name
28
- <input type="text" name="name" value="John" />
29
- </label>
30
- <label>
31
- Birthday
32
- <input type="date" name="birthday" value="2021-03-27" />
33
- </label>
34
- <button type="submit">Submit</button>
26
+ <form name="resume">
27
+ <label>CV: <input type="file" name="resume"></label>
35
28
  </form>
36
29
 
37
30
  <form name="mailing">
38
- <label>
39
- Mailing
40
- <input type="email" name="mail" value="example@mail.com" />
41
- </label>
31
+ <label>Email: <input type="email" name="mail" value="e@mail.com"></label>
32
+ </form>
33
+
34
+ <form name="general">
35
+ <label>Name: <input type="text" name="name" value="John"></label>
36
+ <label>DOB: <input type="date" name="dob" value="2021-03-27"></label>
37
+ <button type="submit">Submit</button>
42
38
  </form>
43
39
 
44
40
  <script>
45
41
  import { getFormPayload, getFormControlPayload } from 'form-payload';
46
42
 
47
- const generalFormNode = document.querySelector('form[name="general"]');
48
- const mailingFormNode = document.querySelector('form[name="mailing"]');
43
+ const {
44
+ resume: resumeFormNode,
45
+ mailing: mailingFormNode,
46
+ general: generalFormNode,
47
+ } = document.forms;
49
48
 
50
- generalFormNode.addEventListener('submit', (evt) => {
51
- evt.preventDefault();
49
+ resumeFormNode.addEventListener('change', (evt) => {
50
+ // ❌ bad (hard to read, magic numbers, bulky, outdated approach)
51
+ const file = evt.target.files?.[0] || null;
52
52
 
53
- const formPayload = getFormPayload(generalFormNode);
54
- // => { name: 'John', birthday: 'Sat Mar 27 2021 02:00:00 GMT+0200' }
53
+ // 🟡 better (modern, clear, but repetitive approach – violates DRY)
54
+ const [file = null] = env.target.files ?? [];
55
+
56
+ // ✅ ideal
57
+ const file = getFormControlPayload(evt.target);
58
+ // => File or null
55
59
  });
56
60
 
57
61
  mailingFormNode.addEventListener('input', (evt) => {
58
62
  const formControlPayload = getFormControlPayload(evt.target);
59
- // => 'example@mail.com'
63
+ // => 'e@mail.com'
64
+ });
65
+
66
+ generalFormNode.addEventListener('submit', (evt) => {
67
+ evt.preventDefault();
68
+
69
+ const formPayload = getFormPayload(generalFormNode);
70
+ // => { name: 'John', dob: 'Sat Mar 27 2021 02:00:00 GMT+0200' }
60
71
  });
61
72
  </script>
62
73
  ```
74
+ <!-- prettier-ignore-end -->
63
75
 
64
76
  ## Value Correspondence Table
65
77
 
66
- | HTMLElement | Attributes | Included | Return Value |
67
- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | -------- | ----------------------------------------------------------------------------------------------- |
68
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="text"` | ✅ | `string` |
69
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="password"` | ✅ | `string` |
70
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="search"` | ✅ | `string` |
71
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="url"` | ✅ | `string` |
72
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="tel"` | ✅ | `string` |
73
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="color"` | ✅ | `string` |
74
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="radio"` | ✅ | `string` |
75
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="hidden"` | ✅ | `string` |
76
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="email"` | ✅ | `string` |
77
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="email"` and `multiple` | ✅ | `Array<string>` |
78
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="number"` | ✅ | `number` |
79
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="range"` | ✅ | `number` |
80
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="checkbox"` | ✅ | `boolean` |
81
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="checkbox"` and `[]` in `name` (Ex. `name="fruits[]"`) | ✅ | `Array<string>` |
82
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="date"` | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
83
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="time"` | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
84
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="month"` | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
85
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="week"` | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
86
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="datetime-local"` | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
87
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="file"` | ✅ | [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) or `null` |
88
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="file"` and `multiple` | ✅ | <code>Array<[File](https://developer.mozilla.org/en-US/docs/Web/API/File)></code> |
89
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="button"` | ❌ | – |
90
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="submit"` | | |
91
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="reset"` | | |
92
- | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | `type="image"` | | |
93
- | [HTMLTextAreaElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextareaElement) | – | ✅ | `string` |
94
- | [HTMLSelectElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement) | – | ✅ | `string` |
95
- | [HTMLSelectElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement) | `multiple` | ✅ | `Array<string>` |
96
- | [HTMLOutputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement) | – | | `string` |
97
- | [HTMLFieldsetElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldsetElement) | – | | `Object<name: string, value: unknown>` (recursive values of nested elements) |
98
- | [HTMLFieldsetElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldsetElement) | `[]` in `name` (Ex. `name="shops[]"`) | ✅ | `Array<Object<name: string, value: unknown>>` (recursive values of nested elements) |
99
- | [HTMLButtonElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement) | – | ❌ | – |
100
- | [HTMLObjectElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement) | – | ❌ | – |
78
+ | HTMLElement | Attributes | Included | Return Value |
79
+ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------- |
80
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="text"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/text) | ✅ | `string` |
81
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="password"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/password) | ✅ | `string` |
82
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="search"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/search) | ✅ | `string` |
83
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="url"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/url) | ✅ | `string` |
84
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="tel"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/tel) | ✅ | `string` |
85
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="color"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color) | ✅ | `string` |
86
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="radio"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio) | ✅ | `string` |
87
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="hidden"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/hidden) | ✅ | `string` |
88
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="email"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email) | ✅ | `string` |
89
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="email"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email) and [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/multiple) | ✅ | `Array<string>` |
90
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="number"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number) | ✅ | `number` |
91
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="range"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range) | ✅ | `number` |
92
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="checkbox"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox) | ✅ | `boolean` |
93
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="checkbox"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox) and with `[]` in [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#name) | ✅ | `Array<string>` (See [advanced usage](#htmlinputelement-with-typecheckbox-as-array)) |
94
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="date"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date) | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
95
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="time"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/time) | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
96
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="month"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/month) | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
97
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="week"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/week) | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
98
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="datetime-local"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local) | ✅ | [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) |
99
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="file"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file) | ✅ | [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) or `null` |
100
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="file"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file) and [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/multiple) | ✅ | <code>Array<[File](https://developer.mozilla.org/en-US/docs/Web/API/File)></code> |
101
+ | [HTMLInputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) | [`type="button"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/button) or [`type="submit"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/submit) or [`type="reset"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/reset) or [`type="image"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/image) | ❌ | – |
102
+ | [HTMLTextAreaElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextareaElement) | | | `string` |
103
+ | [HTMLSelectElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement) | | | `string` |
104
+ | [HTMLSelectElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement) | [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/multiple) | | `Array<string>` |
105
+ | [HTMLOutputElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement) | – | ✅ | `string` |
106
+ | [HTMLFieldsetElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldsetElement) | – | ✅ | `Object<name: string, value: unknown>` (See [advanced usage](#htmlfieldsetelement-as-object)) |
107
+ | [HTMLFieldsetElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldsetElement) | with `[]` in [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset#name) | ✅ | `Array<Object<name: string, value: unknown>>` (See [advanced usage](#htmlfieldsetelement-as-array)) |
108
+ | [HTMLButtonElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement) | – | | |
109
+ | [HTMLObjectElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement) | – | | |
110
+
111
+ ## Advanced Usage
112
+
113
+ ### HTMLInputElement with type="checkbox" as array
114
+
115
+ `getFormPayload` returns an array of values for checked elements when using `<input>` with `type="checkbox"` and the `[]` symbol at the end of the `name` attribute of the `<input>` element itself.
116
+
117
+ <!-- prettier-ignore-start -->
118
+ ```html
119
+ <form name="shop">
120
+ <label>Shop name: <input name="name" type="text" value="Shop #1"></label>
121
+ <label>Apple <input name="fruits[]" type="checkbox" value="apple" checked></label>
122
+ <label>Orange <input name="fruits[]" type="checkbox" value="orange"></label>
123
+ <label>Banana <input name="fruits[]" type="checkbox" value="banana" checked></label>
124
+ <button type="submit">Submit</button>
125
+ </form>
126
+
127
+ <script>
128
+ import { getFormPayload } from 'form-payload';
129
+
130
+ const { shop: shopFormNode } = document.forms;
131
+
132
+ shopFormNode.addEventListener('submit', (evt) => {
133
+ evt.preventDefault();
134
+
135
+ const formPayload = getFormPayload(shopFormNode);
136
+ // =>
137
+ // {
138
+ // name: 'Shop #1',
139
+ // fruits: ['apple', 'banana'],
140
+ // }
141
+ })
142
+ </script>
143
+ ```
144
+ <!-- prettier-ignore-end -->
145
+
146
+ ### HTMLFieldsetElement as object
147
+
148
+ `getFormPayload`/`getFormControlPayload` returns a nested objects when using the `<fieldset>` element. The key name will be based on the `name` attribute of the `<fieldset>` element itself. Nesting of `<fieldset>` elements within each other can be infinite. `getFormPayload`/`getFormControlPayload` collects all values recursively.
149
+
150
+ <!-- prettier-ignore-start -->
151
+ ```html
152
+ <form name="company">
153
+ <label>Company name: <input name="name" type="text" value="FreshHarvest Hub"></label>
154
+ <fieldset name="shop">
155
+ <label>Shop name: <input name="name" type="text" value="Shop #1"></label>
156
+ <label>Open: <input name="isOpen" type="checkbox" checked></label>
157
+ </fieldset>
158
+ <button type="submit">Submit</button>
159
+ </form>
160
+
161
+ <script>
162
+ import { getFormPayload } from 'form-payload';
163
+
164
+ const { company: companyFormNode } = document.forms;
165
+
166
+ companyFormNode.addEventListener('submit', (evt) => {
167
+ evt.preventDefault();
168
+
169
+ const formPayload = getFormPayload(companyFormNode);
170
+ // =>
171
+ // {
172
+ // name: 'FreshHarvest Hub',
173
+ // shop: {
174
+ // name: 'Shop #1',
175
+ // isOpen: true,
176
+ // },
177
+ // }
178
+ })
179
+ </script>
180
+ ```
181
+ <!-- prettier-ignore-end -->
182
+
183
+ ### HTMLFieldsetElement as array
184
+
185
+ `getFormPayload`/`getFormControlPayload` returns an array of objects when using the `<fieldset>` element and the `[]` symbol at the end of the `name` attribute of the `<fieldset>` elements. The functionality of recursively collecting values from nested `<fieldset>` elements is preserved.
186
+
187
+ <!-- prettier-ignore-start -->
188
+ ```html
189
+ <form name="company">
190
+ <label>Company name: <input name="name" type="text" value="FreshHarvest Hub"></label>
191
+ <fieldset name="shops[]">
192
+ <label>Shop name: <input name="name" type="text" value="Shop #1"></label>
193
+ <label>Open: <input name="isOpen" type="checkbox" checked></label>
194
+ </fieldset>
195
+ <fieldset name="shops[]">
196
+ <label>Shop name: <input name="name" type="text" value="Shop #2"></label>
197
+ <label>Open: <input name="isOpen" type="checkbox"></label>
198
+ </fieldset>
199
+ <button type="submit">Submit</button>
200
+ </form>
201
+
202
+ <script>
203
+ import { getFormPayload } from 'form-payload';
204
+
205
+ const { company: companyFormNode } = document.forms;
206
+
207
+ companyFormNode.addEventListener('submit', (evt) => {
208
+ evt.preventDefault();
209
+
210
+ const formPayload = getFormPayload(companyFormNode);
211
+ // =>
212
+ // {
213
+ // name: 'FreshHarvest Hub',
214
+ // shops: [
215
+ // {
216
+ // name: 'Shop #1',
217
+ // isOpen: true,
218
+ // },
219
+ // {
220
+ // name: 'Shop #2',
221
+ // isOpen: false,
222
+ // },
223
+ // ],
224
+ // }
225
+ })
226
+ </script>
227
+ ```
228
+ <!-- prettier-ignore-end -->
229
+
230
+ ---
231
+
232
+ Inspired by [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) and Web-platform in general ♡.
package/src/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { ControlType } from "./libs/enums/enums.js";
1
+ export { ControlElementType } from "./libs/enums/enums.js";
2
2
  export { FormPayloadError } from "./libs/exceptions/exceptions.js";
3
3
  export { getFormControlPayload } from "./packages/get-form-control-payload/get-form-control-payload.js";
4
4
  export { getFormPayload } from "./packages/get-form-payload/get-form-payload.js";
package/src/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { ControlType } from './libs/enums/enums.js';
1
+ export { ControlElementType } from './libs/enums/enums.js';
2
2
  export { FormPayloadError } from './libs/exceptions/exceptions.js';
3
3
  export { getFormControlPayload } from './packages/get-form-control-payload/get-form-control-payload.js';
4
4
  export { getFormPayload } from './packages/get-form-payload/get-form-payload.js';
@@ -0,0 +1,2 @@
1
+ export const BANNED_CONTROL_ELEMENT_TYPES: readonly ["button", "reset", "submit", "image"];
2
+ //# sourceMappingURL=banned-control-element-types.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banned-control-element-types.constant.d.ts","sourceRoot":"","sources":["../../../../src/libs/constants/banned-control-element-types.constant.js"],"names":[],"mappings":"AAEA,2FAKG"}
@@ -0,0 +1,10 @@
1
+ import { ControlElementType } from '../enums/enums.js';
2
+
3
+ const BANNED_CONTROL_ELEMENT_TYPES = /** @type {const} */ ([
4
+ ControlElementType.BUTTON,
5
+ ControlElementType.RESET,
6
+ ControlElementType.SUBMIT,
7
+ ControlElementType.IMAGE,
8
+ ]);
9
+
10
+ export { BANNED_CONTROL_ELEMENT_TYPES };
@@ -1,4 +1,4 @@
1
- export { BANNED_CONTROL_TYPES } from "./banned-control-types.constant.js";
2
- export { VALUE_AS_ARRAY_CUSTOM_CONTROL_TYPES } from "./value-as-array-custom-control-types.constant.js";
1
+ export { BANNED_CONTROL_ELEMENT_TYPES } from "./banned-control-element-types.constant.js";
2
+ export { VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES } from "./value-as-array-custom-control-element-types.constant.js";
3
3
  export { VALUE_AS_ARRAY_IDENTIFIER } from "./value-as-array-identifier.constant.js";
4
4
  //# sourceMappingURL=constants.d.ts.map
@@ -1,3 +1,3 @@
1
- export { BANNED_CONTROL_TYPES } from './banned-control-types.constant.js';
2
- export { VALUE_AS_ARRAY_CUSTOM_CONTROL_TYPES } from './value-as-array-custom-control-types.constant.js';
1
+ export { BANNED_CONTROL_ELEMENT_TYPES } from './banned-control-element-types.constant.js';
2
+ export { VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES } from './value-as-array-custom-control-element-types.constant.js';
3
3
  export { VALUE_AS_ARRAY_IDENTIFIER } from './value-as-array-identifier.constant.js';
@@ -0,0 +1,2 @@
1
+ export const VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES: readonly ["checkbox", "fieldset"];
2
+ //# sourceMappingURL=value-as-array-custom-control-element-types.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-as-array-custom-control-element-types.constant.d.ts","sourceRoot":"","sources":["../../../../src/libs/constants/value-as-array-custom-control-element-types.constant.js"],"names":[],"mappings":"AAEA,4FAGG"}
@@ -0,0 +1,8 @@
1
+ import { ControlElementType } from '../enums/enums.js';
2
+
3
+ const VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES = /** @type {const} */ ([
4
+ ControlElementType.CHECKBOX,
5
+ ControlElementType.FIELDSET,
6
+ ]);
7
+
8
+ export { VALUE_AS_ARRAY_CUSTOM_CONTROL_ELEMENT_TYPES };
@@ -1 +1 @@
1
- {"version":3,"file":"value-as-array-identifier.constant.d.ts","sourceRoot":"","sources":["../../../../src/libs/constants/value-as-array-identifier.constant.js"],"names":[],"mappings":"AAAA,6CAAuC"}
1
+ {"version":3,"file":"value-as-array-identifier.constant.d.ts","sourceRoot":"","sources":["../../../../src/libs/constants/value-as-array-identifier.constant.js"],"names":[],"mappings":"AAAA,6CAA8D"}
@@ -1,3 +1,3 @@
1
- const VALUE_AS_ARRAY_IDENTIFIER = '[]';
1
+ const VALUE_AS_ARRAY_IDENTIFIER = /** @type {const} */ ('[]');
2
2
 
3
3
  export { VALUE_AS_ARRAY_IDENTIFIER };
@@ -1,13 +1,13 @@
1
- export namespace ControlType {
1
+ export namespace ControlElementType {
2
2
  let TEXT: "text";
3
3
  let PASSWORD: "password";
4
4
  let SEARCH: "search";
5
5
  let URL: "url";
6
6
  let TEL: "tel";
7
7
  let COLOR: "color";
8
- let RADIO: "radio";
9
8
  let HIDDEN: "hidden";
10
9
  let EMAIL: "email";
10
+ let RADIO: "radio";
11
11
  let NUMBER: "number";
12
12
  let RANGE: "range";
13
13
  let CHECKBOX: "checkbox";
@@ -27,4 +27,4 @@ export namespace ControlType {
27
27
  let OUTPUT: "output";
28
28
  let FIELDSET: "fieldset";
29
29
  }
30
- //# sourceMappingURL=control-type.enum.d.ts.map
30
+ //# sourceMappingURL=control-element-type.enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-element-type.enum.d.ts","sourceRoot":"","sources":["../../../../src/libs/enums/control-element-type.enum.js"],"names":[],"mappings":""}
@@ -1,15 +1,16 @@
1
- const ControlType = /** @type {const} */ ({
1
+ const ControlElementType = /** @type {const} */ ({
2
2
  TEXT: 'text',
3
3
  PASSWORD: 'password',
4
4
  SEARCH: 'search',
5
5
  URL: 'url',
6
6
  TEL: 'tel',
7
7
  COLOR: 'color',
8
- RADIO: 'radio',
9
8
  HIDDEN: 'hidden',
10
9
 
11
10
  EMAIL: 'email',
12
11
 
12
+ RADIO: 'radio',
13
+
13
14
  NUMBER: 'number',
14
15
  RANGE: 'range',
15
16
 
@@ -39,4 +40,4 @@ const ControlType = /** @type {const} */ ({
39
40
  FIELDSET: 'fieldset',
40
41
  });
41
42
 
42
- export { ControlType };
43
+ export { ControlElementType };
@@ -1,2 +1,2 @@
1
- export { ControlType } from "./control-type.enum.js";
1
+ export { ControlElementType } from "./control-element-type.enum.js";
2
2
  //# sourceMappingURL=enums.d.ts.map
@@ -1 +1 @@
1
- export { ControlType } from './control-type.enum.js';
1
+ export { ControlElementType } from './control-element-type.enum.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @template {unknown} T
3
+ * @param {unknown} value
4
+ * @param {...T} validValues
5
+ * @returns {value is validValues[number]}
6
+ */
7
+ export function checkIsOnOf<T extends unknown>(value: unknown, ...validValues: T[]): value is T;
8
+ //# sourceMappingURL=check-is-one-of.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-is-one-of.helper.d.ts","sourceRoot":"","sources":["../../../../../src/libs/helpers/check-is-one-of/check-is-one-of.helper.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,sDAJW,OAAO,mCAMjB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @template {unknown} T
3
+ * @param {unknown} value
4
+ * @param {...T} validValues
5
+ * @returns {value is validValues[number]}
6
+ */
7
+ const checkIsOnOf = (value, ...validValues) => {
8
+ return /** @type {unknown[]} */ (validValues).includes(value);
9
+ };
10
+
11
+ export { checkIsOnOf };
@@ -0,0 +1,2 @@
1
+ export { checkIsOnOf } from "./check-is-one-of/check-is-one-of.helper.js";
2
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/libs/helpers/helpers.js"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export { checkIsOnOf } from './check-is-one-of/check-is-one-of.helper.js';
@@ -1,11 +1,11 @@
1
- export { getFormControlsPayload } from "./helpers/helpers.js";
1
+ export { getFormControlElementsPayload } from "./libs/helpers/helpers.js";
2
2
  export type HTMLFormOperationalControlElement = import('../../libs/types/types.js').HTMLFormOperationalControlElement;
3
3
  /** @typedef {import('../../libs/types/types.js').HTMLFormOperationalControlElement} HTMLFormOperationalControlElement */
4
4
  /**
5
5
  * @template {unknown} T
6
- * @param {HTMLFormOperationalControlElement} controlNode
6
+ * @param {HTMLFormOperationalControlElement} controlElement
7
7
  * @returns {T}
8
8
  * @throws {FormPayloadError}
9
9
  */
10
- export function getFormControlPayload<T extends unknown>(controlNode: HTMLFormOperationalControlElement): T;
10
+ export function getFormControlPayload<T extends unknown>(controlElement: HTMLFormOperationalControlElement): T;
11
11
  //# sourceMappingURL=get-form-control-payload.d.ts.map
@@ -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":";gDAcc,OAAO,2BAA2B,EAAE,iCAAiC;AAAnF,yHAAyH;AAEzH;;;;;GAKG;AACH,sEAJW,iCAAiC,KAgG3C"}
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":";gDAec,OAAO,2BAA2B,EAAE,iCAAiC;AAAnF,yHAAyH;AAEzH;;;;;GAKG;AACH,yEAJW,iCAAiC,KA4G3C"}