intelicoreact 1.5.41 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.interface.js +4 -0
  2. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +93 -44
  3. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.scss +23 -13
  4. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.stories.js +89 -0
  5. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.test.js +130 -0
  6. package/dist/Atomic/FormElements/ActionAlert/index.js +17 -0
  7. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.interface.js +4 -0
  8. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +43 -38
  9. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.scss +20 -10
  10. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.stories.js +81 -0
  11. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.test.js +104 -0
  12. package/dist/Atomic/FormElements/AdvancedStatus/index.js +17 -0
  13. package/dist/Atomic/FormElements/Calendar/Calendar.js +243 -164
  14. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +4 -0
  15. package/dist/Atomic/FormElements/Calendar/Calendar.scss +1 -0
  16. package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +108 -0
  17. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.interface.js +4 -0
  18. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +60 -51
  19. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +21 -11
  20. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +100 -0
  21. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.test.js +143 -0
  22. package/dist/Atomic/FormElements/CheckboxInput/index.js +17 -0
  23. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.interface.js +4 -0
  24. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +47 -39
  25. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.scss +5 -2
  26. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.stories.js +94 -0
  27. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.test.js +177 -0
  28. package/dist/Atomic/FormElements/CheckboxesLine/index.js +17 -0
  29. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +410 -308
  30. package/dist/Atomic/FormElements/Datepicker/Datepicker.stories.js +51 -0
  31. package/dist/Atomic/FormElements/Datepicker/components/Calendar.js +169 -109
  32. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +680 -527
  33. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +58 -56
  34. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +596 -0
  35. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +28 -15
  36. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +498 -378
  37. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.scss +33 -29
  38. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.stories.js +272 -0
  39. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +103 -70
  40. package/dist/Atomic/FormElements/FileLoader/FileLoader.scss +0 -2
  41. package/dist/Atomic/FormElements/FileLoader/FileLoader.stories.js +182 -0
  42. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +138 -91
  43. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +109 -55
  44. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +254 -193
  45. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.scss +19 -16
  46. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.stories.js +327 -0
  47. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +156 -140
  48. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.scss +8 -4
  49. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.stories.js +186 -0
  50. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +222 -156
  51. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.stories.js +84 -0
  52. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +158 -114
  53. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.stories.js +107 -0
  54. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +151 -92
  55. package/dist/Atomic/FormElements/Input/Input.js +340 -330
  56. package/dist/Atomic/FormElements/Input/Input.stories.js +251 -0
  57. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +156 -110
  58. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +115 -0
  59. package/dist/Atomic/FormElements/InputColor/InputColor.js +57 -58
  60. package/dist/Atomic/FormElements/InputColor/InputColor.stories.js +119 -0
  61. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.interface.js +4 -0
  62. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +189 -145
  63. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.stories.js +178 -0
  64. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.test.js +129 -0
  65. package/dist/Atomic/FormElements/InputCurrency/index.js +16 -0
  66. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +294 -228
  67. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +123 -0
  68. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +55 -56
  69. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +645 -536
  70. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +220 -190
  71. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +33 -31
  72. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +247 -169
  73. package/dist/Atomic/FormElements/InputLink/InputLink.js +118 -71
  74. package/dist/Atomic/FormElements/InputLink/InputLink.stories.js +140 -0
  75. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +47 -38
  76. package/dist/Atomic/FormElements/InputMask/InputMask.js +938 -1053
  77. package/dist/Atomic/FormElements/InputMask/InputMask.stories.js +303 -0
  78. package/dist/Atomic/FormElements/InputMask/config.js +16 -15
  79. package/dist/Atomic/FormElements/InputMask/functions.js +77 -51
  80. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +569 -592
  81. package/dist/Atomic/FormElements/InputMask2/InputMask2.stories.js +314 -0
  82. package/dist/Atomic/FormElements/InputMask2/config.js +16 -15
  83. package/dist/Atomic/FormElements/InputMask2/functions.js +77 -51
  84. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +651 -679
  85. package/dist/Atomic/FormElements/InputMask3/InputMask3.stories.js +335 -0
  86. package/dist/Atomic/FormElements/InputMask3/config.js +16 -15
  87. package/dist/Atomic/FormElements/InputMask3/functions.js +77 -51
  88. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +127 -88
  89. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.stories.js +276 -0
  90. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +182 -111
  91. package/dist/Atomic/FormElements/InputsRow/InputsRow.stories.js +56 -0
  92. package/dist/Atomic/FormElements/Label/Label.interface.js +4 -0
  93. package/dist/Atomic/FormElements/Label/Label.js +82 -55
  94. package/dist/Atomic/FormElements/Label/Label.scss +18 -8
  95. package/dist/Atomic/FormElements/Label/Label.stories.js +47 -0
  96. package/dist/Atomic/FormElements/Label/Label.test.js +167 -0
  97. package/dist/Atomic/FormElements/Label/index.js +17 -0
  98. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +437 -382
  99. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +172 -0
  100. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +88 -50
  101. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +121 -0
  102. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +314 -264
  103. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +184 -0
  104. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +93 -51
  105. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.stories.js +79 -0
  106. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +69 -55
  107. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.stories.js +151 -0
  108. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +51 -45
  109. package/dist/Atomic/FormElements/RadioInput/RadioInput.scss +4 -4
  110. package/dist/Atomic/FormElements/RadioInput/RadioInput.stories.js +67 -0
  111. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +53 -40
  112. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.stories.js +116 -0
  113. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +169 -120
  114. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +107 -0
  115. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +195 -141
  116. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +92 -0
  117. package/dist/Atomic/FormElements/RangeList/RangeList.js +199 -140
  118. package/dist/Atomic/FormElements/RangeList/RangeList.scss +2 -2
  119. package/dist/Atomic/FormElements/RangeList/RangeList.stories.js +169 -0
  120. package/dist/Atomic/FormElements/RangeList/partial/AnyOuterClass.scss +0 -3
  121. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +57 -44
  122. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +463 -377
  123. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.stories.js +401 -0
  124. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +760 -759
  125. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.stories.js +314 -0
  126. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +36 -31
  127. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.scss +0 -2
  128. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.stories.js +137 -0
  129. package/dist/Atomic/FormElements/Switcher/Switcher.js +52 -44
  130. package/dist/Atomic/FormElements/Switcher/Switcher.scss +3 -3
  131. package/dist/Atomic/FormElements/Switcher/Switcher.stories.js +91 -0
  132. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +43 -44
  133. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.scss +0 -2
  134. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.stories.js +104 -0
  135. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +37 -36
  136. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.scss +0 -2
  137. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.stories.js +96 -0
  138. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +93 -56
  139. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.scss +0 -2
  140. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.stories.js +140 -0
  141. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +86 -53
  142. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.scss +0 -2
  143. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.stories.js +112 -0
  144. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +46 -54
  145. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.stories.js +145 -0
  146. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +172 -102
  147. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.scss +4 -6
  148. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.stories.js +158 -0
  149. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +209 -154
  150. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +59 -56
  151. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.scss +2 -2
  152. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.stories.js +101 -0
  153. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +140 -112
  154. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.stories.js +131 -0
  155. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1035 -919
  156. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +153 -116
  157. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +357 -0
  158. package/dist/Atomic/FormElements/Text/Text.js +88 -97
  159. package/dist/Atomic/FormElements/Text/Text.stories.js +80 -0
  160. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +44 -35
  161. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +8 -8
  162. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +106 -0
  163. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.test.js +93 -0
  164. package/dist/Atomic/FormElements/Textarea/Textarea.js +102 -64
  165. package/dist/Atomic/FormElements/Textarea/Textarea.scss +4 -8
  166. package/dist/Atomic/FormElements/Textarea/Textarea.stories.js +103 -0
  167. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +172 -133
  168. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +174 -0
  169. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +48 -49
  170. package/dist/Atomic/FormElements/TimeRange/TimeRange.interface.js +4 -0
  171. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +114 -63
  172. package/dist/Atomic/FormElements/TimeRange/TimeRange.scss +9 -3
  173. package/dist/Atomic/FormElements/TimeRange/TimeRange.stories.js +40 -0
  174. package/dist/Atomic/FormElements/TimeRange/TimeRange.test.js +163 -0
  175. package/dist/Atomic/FormElements/TimeRange/index.js +17 -0
  176. package/dist/Atomic/FormElements/UserContacts/UserContact.test.js +381 -0
  177. package/dist/Atomic/FormElements/UserContacts/UserContacts.interface.js +4 -0
  178. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +179 -122
  179. package/dist/Atomic/FormElements/UserContacts/UserContacts.scss +10 -5
  180. package/dist/Atomic/FormElements/UserContacts/UserContacts.stories.js +74 -0
  181. package/dist/Atomic/FormElements/UserContacts/index.js +17 -0
  182. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +101 -65
  183. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.stories.js +193 -0
  184. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +80 -71
  185. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +79 -64
  186. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.scss +0 -2
  187. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.stories.js +147 -0
  188. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +42 -34
  189. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +102 -83
  190. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.scss +0 -2
  191. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.stories.js +151 -0
  192. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +42 -35
  193. package/dist/Atomic/Layout/Header/Header.js +148 -80
  194. package/dist/Atomic/Layout/Header/Header.stories.js +71 -0
  195. package/dist/Atomic/Layout/MainMenu/MainMenu.js +213 -133
  196. package/dist/Atomic/Layout/MainMenu/MainMenu.scss +7 -7
  197. package/dist/Atomic/Layout/MainMenu/MainMenu.stories.js +115 -0
  198. package/dist/Atomic/Layout/Spinner/Spinner.interface.js +4 -0
  199. package/dist/Atomic/Layout/Spinner/Spinner.js +39 -22
  200. package/dist/Atomic/Layout/Spinner/Spinner.scss +36 -16
  201. package/dist/Atomic/Layout/Spinner/Spinner.stories.js +46 -0
  202. package/dist/Atomic/Layout/Spinner/Spinner.test.js +54 -0
  203. package/dist/Atomic/Layout/Spinner/index.js +17 -0
  204. package/dist/Atomic/UI/Accordion/Accordion.interface.js +4 -0
  205. package/dist/Atomic/UI/Accordion/Accordion.js +102 -53
  206. package/dist/Atomic/UI/Accordion/Accordion.scss +25 -14
  207. package/dist/Atomic/UI/Accordion/Accordion.stories.js +168 -0
  208. package/dist/Atomic/UI/Accordion/Accordion.test.js +54 -0
  209. package/dist/Atomic/UI/Accordion/AccordionItem.js +170 -102
  210. package/dist/Atomic/UI/Accordion/AccordionItem.test.js +50 -0
  211. package/dist/Atomic/UI/Accordion/index.js +17 -0
  212. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +251 -167
  213. package/dist/Atomic/UI/AccordionTable/AccordionTable.stories.js +268 -0
  214. package/dist/Atomic/UI/AccordionText/AccordionText.js +105 -54
  215. package/dist/Atomic/UI/AccordionText/AccordionText.scss +22 -9
  216. package/dist/Atomic/UI/AccordionText/AccordionText.stories.js +125 -0
  217. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +207 -135
  218. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +100 -46
  219. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +115 -0
  220. package/dist/Atomic/UI/Alert/Alert.js +116 -63
  221. package/dist/Atomic/UI/Alert/Alert.scss +2 -2
  222. package/dist/Atomic/UI/Alert/Alert.stories.js +81 -0
  223. package/dist/Atomic/UI/Arrow/Arrow.js +163 -110
  224. package/dist/Atomic/UI/Arrow/Arrow.stories.js +62 -0
  225. package/dist/Atomic/UI/Box/Box.js +37 -37
  226. package/dist/Atomic/UI/Box/Box.scss +11 -11
  227. package/dist/Atomic/UI/Box/Box.stories.js +114 -0
  228. package/dist/Atomic/UI/Button/Button.js +43 -41
  229. package/dist/Atomic/UI/Button/Button.stories.js +105 -0
  230. package/dist/Atomic/UI/Button/Button.test.js +147 -0
  231. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +61 -67
  232. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.stories.js +129 -0
  233. package/dist/Atomic/UI/Chart/Chart.js +170 -96
  234. package/dist/Atomic/UI/Chart/Chart.stories.js +93 -0
  235. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +142 -74
  236. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +91 -77
  237. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +120 -117
  238. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +314 -292
  239. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +54 -39
  240. package/dist/Atomic/UI/Chart/partial/utils.js +56 -33
  241. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +145 -88
  242. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.stories.js +85 -0
  243. package/dist/Atomic/UI/DateTime/DateTime.js +89 -37
  244. package/dist/Atomic/UI/DateTime/DateTime.scss +2 -2
  245. package/dist/Atomic/UI/DateTime/DateTime.stories.js +50 -0
  246. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +93 -31
  247. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +66 -18
  248. package/dist/Atomic/UI/DoubleString/DoubleString.js +134 -77
  249. package/dist/Atomic/UI/DoubleString/DoubleString.scss +6 -4
  250. package/dist/Atomic/UI/DoubleString/DoubleString.stories.js +79 -0
  251. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.js +4 -0
  252. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +65 -22
  253. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.stories.js +98 -0
  254. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.test.js +51 -0
  255. package/dist/Atomic/UI/DynamicIcon/index.js +17 -0
  256. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +251 -170
  257. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.stories.js +98 -0
  258. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +109 -84
  259. package/dist/Atomic/UI/Hint/Hint.interface.js +4 -0
  260. package/dist/Atomic/UI/Hint/Hint.js +247 -204
  261. package/dist/Atomic/UI/Hint/Hint.scss +4 -2
  262. package/dist/Atomic/UI/Hint/Hint.stories.js +106 -0
  263. package/dist/Atomic/UI/Hint/Hint.test.js +96 -0
  264. package/dist/Atomic/UI/Hint/index.js +17 -0
  265. package/dist/Atomic/UI/Hint/partials/_utils.js +60 -46
  266. package/dist/Atomic/UI/Modal/Modal.interface.js +4 -0
  267. package/dist/Atomic/UI/Modal/Modal.js +171 -172
  268. package/dist/Atomic/UI/Modal/Modal.scss +91 -65
  269. package/dist/Atomic/UI/Modal/Modal.stories.js +370 -0
  270. package/dist/Atomic/UI/Modal/ModalHOC.js +92 -38
  271. package/dist/Atomic/UI/Modal/ModalHOC.stories.js +191 -0
  272. package/dist/Atomic/UI/Modal/ModalHOC.test.js +187 -0
  273. package/dist/Atomic/UI/Modal/ModalMobile.scss +26 -14
  274. package/dist/Atomic/UI/Modal/index.js +26 -0
  275. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +68 -18
  276. package/dist/Atomic/UI/Modal/partials/ModalFooter.test.js +118 -0
  277. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +107 -38
  278. package/dist/Atomic/UI/Modal/partials/ModalTitle.test.js +126 -0
  279. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +130 -153
  280. package/dist/Atomic/UI/Modal/partials/useMobileModal.test.js +133 -0
  281. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.interface.js +4 -0
  282. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +118 -62
  283. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.scss +172 -25
  284. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.stories.js +513 -0
  285. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.test.js +84 -0
  286. package/dist/Atomic/UI/MonoAccordion/index.js +17 -0
  287. package/dist/Atomic/UI/NavLine/NavLine.interface.js +4 -0
  288. package/dist/Atomic/UI/NavLine/NavLine.js +306 -273
  289. package/dist/Atomic/UI/NavLine/NavLine.scss +202 -155
  290. package/dist/Atomic/UI/NavLine/NavLine.stories.js +434 -0
  291. package/dist/Atomic/UI/NavLine/NavLine.test.js +311 -0
  292. package/dist/Atomic/UI/NavLine/index.js +17 -0
  293. package/dist/Atomic/UI/PageTitle/PageTitle.interface.js +4 -0
  294. package/dist/Atomic/UI/PageTitle/PageTitle.js +73 -52
  295. package/dist/Atomic/UI/PageTitle/PageTitle.scss +52 -14
  296. package/dist/Atomic/UI/PageTitle/PageTitle.stories.js +62 -0
  297. package/dist/Atomic/UI/PageTitle/PageTitle.test.js +181 -0
  298. package/dist/Atomic/UI/PageTitle/index.js +17 -0
  299. package/dist/Atomic/UI/PieChart/PieChar.interface.js +4 -0
  300. package/dist/Atomic/UI/PieChart/PieChart.js +105 -42
  301. package/dist/Atomic/UI/PieChart/PieChart.scss +87 -11
  302. package/dist/Atomic/UI/PieChart/PieChart.stories.js +82 -0
  303. package/dist/Atomic/UI/PieChart/PieChart.test.js +142 -0
  304. package/dist/Atomic/UI/PieChart/index.js +26 -0
  305. package/dist/Atomic/UI/Price/Price.interface.js +4 -0
  306. package/dist/Atomic/UI/Price/Price.js +27 -20
  307. package/dist/Atomic/UI/Price/Price.stories.js +52 -0
  308. package/dist/Atomic/UI/Price/Price.test.js +83 -0
  309. package/dist/Atomic/UI/Price/index.js +17 -0
  310. package/dist/Atomic/UI/PriceRange/PriceRange.interface.js +4 -0
  311. package/dist/Atomic/UI/PriceRange/PriceRange.js +40 -18
  312. package/dist/Atomic/UI/PriceRange/PriceRange.stories.js +51 -0
  313. package/dist/Atomic/UI/PriceRange/PriceRange.test.js +72 -0
  314. package/dist/Atomic/UI/PriceRange/index.js +17 -0
  315. package/dist/Atomic/UI/ProgressLine/ProgressLine.interface.js +4 -0
  316. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +92 -73
  317. package/dist/Atomic/UI/ProgressLine/ProgressLine.scss +66 -52
  318. package/dist/Atomic/UI/ProgressLine/ProgressLine.stories.js +163 -0
  319. package/dist/Atomic/UI/ProgressLine/ProgressLine.test.js +60 -0
  320. package/dist/Atomic/UI/ProgressLine/index.js +17 -0
  321. package/dist/Atomic/UI/Status/Status.interface.js +4 -0
  322. package/dist/Atomic/UI/Status/Status.js +62 -51
  323. package/dist/Atomic/UI/Status/Status.scss +48 -29
  324. package/dist/Atomic/UI/Status/Status.stories.js +79 -0
  325. package/dist/Atomic/UI/Status/Status.test.js +103 -0
  326. package/dist/Atomic/UI/Status/index.js +17 -0
  327. package/dist/Atomic/UI/Table/Partials/TdCell.js +126 -88
  328. package/dist/Atomic/UI/Table/Partials/TdHeader.js +58 -39
  329. package/dist/Atomic/UI/Table/Partials/TdRow.js +124 -73
  330. package/dist/Atomic/UI/Table/Partials/TdTitle.js +113 -45
  331. package/dist/Atomic/UI/Table/Table.js +61 -43
  332. package/dist/Atomic/UI/Table/Table.scss +0 -3
  333. package/dist/Atomic/UI/Table/Table.stories.js +250 -0
  334. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +108 -64
  335. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +44 -31
  336. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +24 -10
  337. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +59 -48
  338. package/dist/Atomic/UI/Tag/Tag.interface.js +4 -0
  339. package/dist/Atomic/UI/Tag/Tag.js +157 -113
  340. package/dist/Atomic/UI/Tag/Tag.scss +104 -47
  341. package/dist/Atomic/UI/Tag/Tag.stories.js +108 -0
  342. package/dist/Atomic/UI/Tag/Tag.test.js +75 -0
  343. package/dist/Atomic/UI/Tag/index.js +17 -0
  344. package/dist/Atomic/UI/TagList/TagList.js +223 -179
  345. package/dist/Atomic/UI/TagList/TagList.scss +13 -9
  346. package/dist/Atomic/UI/TagList/TagList.stories.js +169 -0
  347. package/dist/Atomic/UI/UserBox/UserBox.interface.js +4 -0
  348. package/dist/Atomic/UI/UserBox/UserBox.js +80 -56
  349. package/dist/Atomic/UI/UserBox/UserBox.scss +45 -21
  350. package/dist/Atomic/UI/UserBox/UserBox.stories.js +57 -0
  351. package/dist/Atomic/UI/UserBox/UserBox.test.js +136 -0
  352. package/dist/Atomic/UI/UserBox/index.js +17 -0
  353. package/dist/Atomic/UI/WizardStepper/WizardStepper.stories.js +70 -0
  354. package/dist/Atomic/UI/WizardStepper/constructor.js +127 -89
  355. package/dist/Atomic/UI/WizardStepper/index.js +14 -6
  356. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +53 -51
  357. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.scss +11 -7
  358. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +9 -5
  359. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +84 -67
  360. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.scss +13 -7
  361. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +14 -6
  362. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +50 -45
  363. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.scss +24 -18
  364. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +14 -6
  365. package/dist/Atomic/UI/WizardStepper/ui/icons.js +138 -106
  366. package/dist/Atomic/UI/WizardStepper/ui/index.js +14 -6
  367. package/dist/Classes/AbortableFetch.js +394 -326
  368. package/dist/Classes/AnimatedHandler.js +31 -44
  369. package/dist/Classes/RESTAPI/index.js +131 -173
  370. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +399 -334
  371. package/dist/Classes/RESTAPI/partials/ApiBase.js +30 -30
  372. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +107 -88
  373. package/dist/Classes/RESTAPI/partials/ApiUtils.js +144 -166
  374. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +180 -204
  375. package/dist/Classes/RESTAPI/partials/Utils.js +80 -83
  376. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +16 -8
  377. package/dist/Classes/RESTAPI/partials/_utils.js +139 -125
  378. package/dist/Constants/index.constants.js +102 -22
  379. package/dist/Functions/Portal.js +67 -23
  380. package/dist/Functions/customEventListener.js +48 -50
  381. package/dist/Functions/dateTime.js +130 -177
  382. package/dist/Functions/fieldValueFormatters.js +275 -346
  383. package/dist/Functions/guards/assertions.js +294 -0
  384. package/dist/Functions/guards/safeValue.js +75 -0
  385. package/dist/Functions/guards/typeGuards.js +374 -0
  386. package/dist/Functions/hooks/useFormFieldsChangesManager.js +125 -96
  387. package/dist/Functions/locale/createTranslator.js +29 -27
  388. package/dist/Functions/operations.js +129 -102
  389. package/dist/Functions/presets/inputMaskPresets.js +88 -99
  390. package/dist/Functions/presets/inputPresets.js +41 -35
  391. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +30 -49
  392. package/dist/Functions/schemas.js +78 -20
  393. package/dist/Functions/useBodyScrollLock.js +21 -15
  394. package/dist/Functions/useClickOutside.js +21 -16
  395. package/dist/Functions/useDebounce.js +62 -21
  396. package/dist/Functions/useFieldFocus.js +83 -79
  397. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +39 -46
  398. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +132 -137
  399. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +63 -73
  400. package/dist/Functions/useFormTools/functions/General.js +117 -129
  401. package/dist/Functions/useFormTools/functions/RenderFields.js +75 -85
  402. package/dist/Functions/useFormTools/functions/usePrevious.js +16 -10
  403. package/dist/Functions/useFormTools/index.js +647 -709
  404. package/dist/Functions/useInputHighlightError.js +104 -53
  405. package/dist/Functions/useIsMobile/index.js +17 -0
  406. package/dist/Functions/useIsMobile/useIsMobile.js +33 -0
  407. package/dist/Functions/useIsMobile/useIsMobile.test.js +104 -0
  408. package/dist/Functions/useKeyPress/useHandleKeyPress.js +40 -33
  409. package/dist/Functions/useKeyPress/useHandleKeyPress.test.js +96 -0
  410. package/dist/Functions/useKeyPress/useKeyPress.js +48 -39
  411. package/dist/Functions/useKeyPress/useKeyPress.test.js +87 -0
  412. package/dist/Functions/useLocalStorage.js +38 -31
  413. package/dist/Functions/useLocationParams.js +31 -24
  414. package/dist/Functions/useMediaQuery.js +14 -10
  415. package/dist/Functions/useMetaInfo.js +45 -35
  416. package/dist/Functions/useMouseUpOutside.js +21 -15
  417. package/dist/Functions/useOnlineStatus.js +25 -21
  418. package/dist/Functions/usePasswordChecker.js +183 -111
  419. package/dist/Functions/usePrevious.js +16 -10
  420. package/dist/Functions/useResize.js +32 -28
  421. package/dist/Functions/useScrollTo.js +26 -16
  422. package/dist/Functions/useToggle.js +20 -16
  423. package/dist/Functions/utils.js +493 -469
  424. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +75 -28
  425. package/dist/Molecular/CustomIcons/components/AlertCircle.js +77 -28
  426. package/dist/Molecular/CustomIcons/components/AppStore.js +84 -32
  427. package/dist/Molecular/CustomIcons/components/Arrow.js +93 -38
  428. package/dist/Molecular/CustomIcons/components/ArrowDown.js +63 -20
  429. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +71 -23
  430. package/dist/Molecular/CustomIcons/components/ArrowRight.js +71 -23
  431. package/dist/Molecular/CustomIcons/components/ArrowUp.js +63 -20
  432. package/dist/Molecular/CustomIcons/components/Bell.js +61 -18
  433. package/dist/Molecular/CustomIcons/components/Button.js +61 -18
  434. package/dist/Molecular/CustomIcons/components/Campaigns.js +62 -19
  435. package/dist/Molecular/CustomIcons/components/Check.js +62 -19
  436. package/dist/Molecular/CustomIcons/components/Check2.js +61 -18
  437. package/dist/Molecular/CustomIcons/components/ChevronDown.js +61 -18
  438. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +61 -18
  439. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +61 -18
  440. package/dist/Molecular/CustomIcons/components/ChevronRight.js +61 -18
  441. package/dist/Molecular/CustomIcons/components/ChevronUp.js +61 -18
  442. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +81 -33
  443. package/dist/Molecular/CustomIcons/components/Close.js +64 -20
  444. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +95 -45
  445. package/dist/Molecular/CustomIcons/components/Delete.js +62 -19
  446. package/dist/Molecular/CustomIcons/components/Edit.js +61 -18
  447. package/dist/Molecular/CustomIcons/components/Email.js +87 -36
  448. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +82 -26
  449. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +83 -34
  450. package/dist/Molecular/CustomIcons/components/Flows.js +61 -18
  451. package/dist/Molecular/CustomIcons/components/Gift.js +71 -23
  452. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +84 -32
  453. package/dist/Molecular/CustomIcons/components/GooglePlay.js +84 -32
  454. package/dist/Molecular/CustomIcons/components/HelpCircle.js +67 -21
  455. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +68 -22
  456. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +67 -21
  457. package/dist/Molecular/CustomIcons/components/Home.js +67 -21
  458. package/dist/Molecular/CustomIcons/components/Home2.js +70 -24
  459. package/dist/Molecular/CustomIcons/components/Key.js +69 -26
  460. package/dist/Molecular/CustomIcons/components/Landers.js +68 -22
  461. package/dist/Molecular/CustomIcons/components/Lock.js +61 -18
  462. package/dist/Molecular/CustomIcons/components/Mail.js +75 -26
  463. package/dist/Molecular/CustomIcons/components/Mastercard.js +128 -68
  464. package/dist/Molecular/CustomIcons/components/Minus.js +79 -31
  465. package/dist/Molecular/CustomIcons/components/Offers.js +62 -19
  466. package/dist/Molecular/CustomIcons/components/Pause.js +79 -31
  467. package/dist/Molecular/CustomIcons/components/PayPal.js +96 -45
  468. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +81 -32
  469. package/dist/Molecular/CustomIcons/components/Phone.js +81 -33
  470. package/dist/Molecular/CustomIcons/components/Play.js +79 -31
  471. package/dist/Molecular/CustomIcons/components/Plus.js +79 -31
  472. package/dist/Molecular/CustomIcons/components/Profile.js +69 -23
  473. package/dist/Molecular/CustomIcons/components/QRCode.js +85 -33
  474. package/dist/Molecular/CustomIcons/components/Rectangle.js +61 -18
  475. package/dist/Molecular/CustomIcons/components/Revert.js +67 -21
  476. package/dist/Molecular/CustomIcons/components/Star.js +60 -17
  477. package/dist/Molecular/CustomIcons/components/Star2.js +62 -19
  478. package/dist/Molecular/CustomIcons/components/TrafficSources.js +68 -21
  479. package/dist/Molecular/CustomIcons/components/Trash.js +61 -18
  480. package/dist/Molecular/CustomIcons/components/TrashRed.js +61 -18
  481. package/dist/Molecular/CustomIcons/components/Triggers.js +61 -18
  482. package/dist/Molecular/CustomIcons/components/User.js +71 -23
  483. package/dist/Molecular/CustomIcons/components/Visa.js +88 -34
  484. package/dist/Molecular/CustomIcons/components/X.js +61 -18
  485. package/dist/Molecular/CustomIcons/index.js +76 -674
  486. package/dist/Molecular/FormElement/FormElement.js +44 -41
  487. package/dist/Molecular/FormElement/FormElement.stories.js +92 -0
  488. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +179 -161
  489. package/dist/Molecular/FormWithDependOn/FormWithDependOn.stories.js +301 -0
  490. package/dist/Molecular/FormWithDependOn/partials/_utils.js +49 -56
  491. package/dist/Molecular/InputAddress/InputAddress.js +496 -421
  492. package/dist/Molecular/InputAddress/InputAddress.scss +12 -14
  493. package/dist/Molecular/InputAddress/InputAddress.stories.js +541 -0
  494. package/dist/Molecular/InputPassword/InputPassword.js +99 -47
  495. package/dist/Molecular/InputPassword/InputPassword.stories.js +86 -0
  496. package/dist/index.js +11 -8
  497. package/dist/scss/_mixins.scss +2 -2
  498. package/dist/scss/_vars.scss +1 -2
  499. package/dist/scss/main.scss +4 -3
  500. package/dist/types/base.interface.js +4 -0
  501. package/dist/types/base.types.js +4 -0
  502. package/dist/types/declaration/ArrayElement.d.js +4 -0
  503. package/dist/types/declaration/AsyncReturnType.d.js +4 -0
  504. package/dist/types/declaration/DeepPartial.d.js +4 -0
  505. package/dist/types/declaration/DeepReadonly.d.js +4 -0
  506. package/dist/types/declaration/DeepRequired.d.js +4 -0
  507. package/dist/types/declaration/Flatten.d.js +4 -0
  508. package/dist/types/declaration/FunctionType.d.js +4 -0
  509. package/dist/types/declaration/If.d.js +4 -0
  510. package/dist/types/declaration/KeysType.d.js +4 -0
  511. package/dist/types/declaration/NonNullableType.d.js +4 -0
  512. package/dist/types/declaration/ObjectType.d.js +4 -0
  513. package/dist/types/declaration/OnlyObjectKeys.d.js +4 -0
  514. package/dist/types/declaration/PrettyPrint.d.js +31 -0
  515. package/dist/types/declaration/RequiredFields.d.js +4 -0
  516. package/dist/types/declaration/TupleType.d.js +4 -0
  517. package/dist/types/declaration/ValuesType.d.js +4 -0
  518. package/package.json +18 -21
  519. package/dist/Atomic/UI/NavLine/Tabs.js +0 -115
  520. package/dist/Functions/animatingFunctions/getAnimatedHandler.js +0 -1
  521. package/dist/Functions/useIsMobile.js +0 -26
@@ -1,723 +1,661 @@
1
+ // eslint-disable-next-line no-unused-vars
1
2
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
- value: true
4
+ value: true
6
5
  });
7
- exports.default = useFormTools;
8
- var _react = require("react");
9
- var _ArrayWithObjects = _interopRequireDefault(require("./form-drivers/ArrayWithObjects"));
10
- var _ObjectWithIterableObjects = _interopRequireDefault(require("./form-drivers/ObjectWithIterableObjects"));
11
- var _ObjectWithNamedKeyObjects = _interopRequireDefault(require("./form-drivers/ObjectWithNamedKeyObjects"));
12
- var _General = _interopRequireDefault(require("./functions/General"));
13
- var _RenderFields = _interopRequireDefault(require("./functions/RenderFields"));
14
- // eslint-disable-next-line no-unused-vars
15
-
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return useFormTools;
10
+ }
11
+ });
12
+ const _react = require("react");
13
+ const _ArrayWithObjects = /*#__PURE__*/ _interop_require_default(require("./form-drivers/ArrayWithObjects"));
14
+ const _ObjectWithIterableObjects = /*#__PURE__*/ _interop_require_default(require("./form-drivers/ObjectWithIterableObjects"));
15
+ const _ObjectWithNamedKeyObjects = /*#__PURE__*/ _interop_require_default(require("./form-drivers/ObjectWithNamedKeyObjects"));
16
+ const _General = /*#__PURE__*/ _interop_require_default(require("./functions/General"));
17
+ const _RenderFields = /*#__PURE__*/ _interop_require_default(require("./functions/RenderFields"));
18
+ function _interop_require_default(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
16
23
  const DefaultFocusControllerProps = {
17
- setAutoFocus: true,
18
- onlyEmptyFieldAutoFocus: false
24
+ setAutoFocus: true,
25
+ onlyEmptyFieldAutoFocus: false
19
26
  };
20
- function useFormTools() {
21
- let {
22
- form,
23
- setForm,
24
- FormType,
25
- FormFields,
26
- FormDataDriverName = "ArrayWithObjects" || "ObjectWithIterableObjects" || "ObjectWithNamedKeyObjects",
27
- FormDataDriver = null,
28
- FocusControllerProps = DefaultFocusControllerProps,
29
- goToNextFieldOnEnterPressed = true
30
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
31
- FocusControllerProps = {
32
- ...DefaultFocusControllerProps,
33
- ...FocusControllerProps
34
- };
35
- const FormDataDrivers = {
36
- ArrayWithObjects: {
37
- handlers: _ArrayWithObjects.default,
38
- default: true
39
- },
40
- ObjectWithIterableObjects: {
41
- handlers: _ObjectWithIterableObjects.default
42
- },
43
- ObjectWithNamedKeyObjects: {
44
- handlers: _ObjectWithNamedKeyObjects.default
45
- }
46
- };
47
- const getFormDataDriver = name => {
48
- return FormDataDriver || FormDataDrivers[name]?.handlers || Object.values(FormDataDrivers).find(df => df.default === true)?.handlers || (() => ({}));
49
- };
50
- const getFormDataDriverInstance = function (name) {
51
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
52
- args[_key - 1] = arguments[_key];
53
- }
54
- return getFormDataDriver(name)(...args);
55
- };
56
- const {
57
- getFieldClassName,
58
- updateFormField
59
- } = (0, _General.default)();
60
- const {
61
- getFieldData,
62
- getFormField,
63
- setFormFields,
64
- setFormField,
65
- getFormFieldsAsArray,
66
- getFormFieldsKeys,
67
- removeAllFormFields,
68
- removeFormField,
69
- removeFormFields
70
- } = getFormDataDriverInstance(FormDataDriverName, {
71
- form,
72
- setForm,
73
- FormFields
74
- });
75
-
76
- ///////////////////////////////////////////////////////////////
77
- //--- OnChange Observer ---//--- START ---//
78
- const [onChangeObservers, setOnChangeObservers] = (0, _react.useState)({});
79
- const addOnChangeObserver = (key, cb) => {
80
- let observerId = null;
81
- setOnChangeObservers(state => {
82
- //Set Default Value
83
- if (!state[key]) state[key] = {};
84
- observerId = state[key].length;
85
- state[key][observerId] = cb;
86
- return state;
87
- });
88
- return observerId;
89
- };
90
- const removeOnChangeObserver = (key, id) => {
91
- setOnChangeObservers(state => {
92
- //Set Default Value
93
- if (!state[key]) return state;
94
- state[key] = Object.keys(state).filter(cbId => cbId !== id).map(cbId => state[key][cbId]);
95
- return state;
96
- });
97
- };
98
- const onChangeObserver = (key, value) => {
99
- if (!onChangeObservers[key] || typeof onChangeObservers[key] !== "object") return;
100
- const Observers = onChangeObservers[key];
101
- Object.values(Observers).map(cb => {
102
- cb({
103
- value,
104
- form
105
- });
106
- return null;
107
- });
108
- };
109
- const onFieldChange = (key, value) => {
110
- if (value === getFormField(key)?.value) return false;
111
- onChangeObserver(key, value);
112
- setFormField(field => ({
113
- ...field,
114
- error: "",
115
- value
116
- }), key);
117
- };
118
- //--- OnChange Observer ---//--- END ---//
119
-
120
- ///////////////////////////////////////////////////////////////
121
- ///////////////////////////////////////////////////////////////
122
-
123
- //--- Form Submit Blocker ---//--- START ---//
124
- const [formSubmitBlockers, setFormSubmitBlockers] = (0, _react.useState)([]);
125
- const toggleFormSubmitBlock = (key, value) => {
126
- setFormSubmitBlockers(state => state.includes(key) || !value ? [...state.filter(k => k !== key)] : [...state, key]);
127
- };
128
- const clearFormSubmitBlockers = () => setFormSubmitBlockers([]);
129
- //--- Form Submit Blocker ---//--- END ---//
130
-
131
- ///////////////////////////////////////////////////////////////
132
- ///////////////////////////////////////////////////////////////
133
-
134
- //--- Property Observer Blocker ---//--- START ---//
135
- // const [propertyObservers, setPropertyObservers] = useState({});
136
- // function addPropertyObserver () {
137
- // };
138
- //--- Property Observer Blocker ---//--- END ---//
139
-
140
- ///////////////////////////////////////////////////////////////
141
- ///////////////////////////////////////////////////////////////
142
-
143
- //--- Render Fields Controller ---//--- START ---//
144
- const [isFormFieldsAdded, setIsFormFieldsAdded] = (0, _react.useState)(false);
145
- const [renderFormFields, setRenderFormFieldsState] = (0, _react.useState)([]);
146
- const setRenderFormFields = data => {
147
- setIsFormFieldsAdded(true);
148
- // eslint-disable-next-line no-use-before-define
149
- removeRenderFields(renderFormFields);
150
- // eslint-disable-next-line no-use-before-define
151
- resetIsInitFocused();
152
- setRenderFormFieldsState(data);
153
- };
154
- const addRenderFields = fields => {
155
- setRenderFormFieldsState(state => [...state, ...fields]);
156
- };
157
- const removeRenderFields = fields => {
158
- setRenderFormFieldsState(state => state.filter(field => !fields.includes(field)));
159
- };
160
- const [isFormRendered, setIsFormRendered] = (0, _react.useState)(false);
161
- const submitIsFormRendered = () => setIsFormRendered(true);
162
- const resetIsFormRendered = () => setIsFormRendered(false);
163
- const onEnterDown = async e => {
164
- if (!goToNextFieldOnEnterPressed) return false;
165
- const focusable = document.querySelectorAll('a, button, input, [tabindex]:not([tabindex="-1"])');
166
- const currentIndex = await new Promise(resolve => {
167
- focusable.forEach((node, i) => {
168
- if (node === e.target) resolve(i);
169
- });
27
+ function useFormTools({ form, setForm, FormType, FormFields, FormDataDriverName = "ArrayWithObjects" || "ObjectWithIterableObjects" || "ObjectWithNamedKeyObjects", FormDataDriver = null, FocusControllerProps = DefaultFocusControllerProps, goToNextFieldOnEnterPressed = true } = {}) {
28
+ FocusControllerProps = {
29
+ ...DefaultFocusControllerProps,
30
+ ...FocusControllerProps
31
+ };
32
+ const FormDataDrivers = {
33
+ ArrayWithObjects: {
34
+ handlers: _ArrayWithObjects.default,
35
+ default: true
36
+ },
37
+ ObjectWithIterableObjects: {
38
+ handlers: _ObjectWithIterableObjects.default
39
+ },
40
+ ObjectWithNamedKeyObjects: {
41
+ handlers: _ObjectWithNamedKeyObjects.default
42
+ }
43
+ };
44
+ const getFormDataDriver = (name)=>{
45
+ var _FormDataDrivers_name, _Object_values_find;
46
+ return FormDataDriver || ((_FormDataDrivers_name = FormDataDrivers[name]) === null || _FormDataDrivers_name === void 0 ? void 0 : _FormDataDrivers_name.handlers) || ((_Object_values_find = Object.values(FormDataDrivers).find((df)=>df.default === true)) === null || _Object_values_find === void 0 ? void 0 : _Object_values_find.handlers) || (()=>({}));
47
+ };
48
+ const getFormDataDriverInstance = (name, ...args)=>{
49
+ return getFormDataDriver(name)(...args);
50
+ };
51
+ const { getFieldClassName, updateFormField } = (0, _General.default)();
52
+ const { getFieldData, getFormField, setFormFields, setFormField, getFormFieldsAsArray, getFormFieldsKeys, removeAllFormFields, removeFormField, removeFormFields } = getFormDataDriverInstance(FormDataDriverName, {
53
+ form,
54
+ setForm,
55
+ FormFields
170
56
  });
171
- if (!currentIndex) return false;
172
- const nextIndex = currentIndex + 1;
173
- if (nextIndex >= focusable.length) return false;
174
- const nextItem = focusable[nextIndex];
175
- nextItem.focus();
176
- };
177
- const onKeyDown = function () {
178
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
179
- args[_key2] = arguments[_key2];
180
- }
181
- const event = args.reduce((e, item) => {
182
- if (item?.nativeEvent instanceof KeyboardEvent) return item;
183
- return e;
184
- }, null);
185
- if (!event) return false;
186
- const {
187
- keyCode
188
- } = event;
189
- switch (keyCode) {
190
- //OnEnterDown
191
- case 13:
192
- onEnterDown(event);
193
- break;
194
- default:
195
- break;
196
- }
197
- };
198
-
199
- //On Type Change
200
- (0, _react.useEffect)(() => {
201
- resetIsFormRendered();
202
- }, [FormType]);
203
-
204
- //On Render Fields Change
205
- (0, _react.useEffect)(() => {
206
- if (isFormFieldsAdded) resetIsFormRendered(false);
207
-
208
- //Add Form Fields
209
- if (renderFormFields.length !== 0) {
210
- setFormFields(fields => {
211
- return renderFormFields.reduce((result, key) => {
212
- const fieldData = getFieldData(key);
213
- const field = getFormField(key) ? getFormField(key) : fieldData;
214
- if (!field?.className || field?.className?.indexOf(getFieldClassName(key, FormType)) === -1) {
215
- field.className = `${field?.className} ${getFieldClassName(key, FormType)}`;
216
- }
217
- if (typeof fieldData?.label === "object") {
218
- field.label = fieldData.label[FormType] || fieldData.label.default;
219
- }
220
- field.ref = /*#__PURE__*/(0, _react.createRef)();
221
- field.wrapperRef = /*#__PURE__*/(0, _react.createRef)();
222
- field.isValueChangedByUser = false;
223
- if (goToNextFieldOnEnterPressed) {
224
- const onKeyDownProp = field.onKeyDown || (() => {});
225
- field.onKeyDown = function () {
226
- onKeyDown(...arguments);
227
- onKeyDownProp(...arguments);
228
- };
229
- }
230
-
231
- //Is Field Value Changed By USER
232
- // eslint-disable-next-line no-use-before-define
233
- addOnFieldRenderedObserver(key, () => {
234
- const element = getFormField(key)?.ref?.current?.querySelector(field?.focusSelector || "input");
235
- const handler = () => setFormField({
236
- isValueChangedByUser: true
237
- }, key);
238
- element?.addEventListener("paste", handler, {
239
- once: true
240
- });
241
- element?.addEventListener("keypress", handler, {
242
- once: true
57
+ ///////////////////////////////////////////////////////////////
58
+ //--- OnChange Observer ---//--- START ---//
59
+ const [onChangeObservers, setOnChangeObservers] = (0, _react.useState)({});
60
+ const addOnChangeObserver = (key, cb)=>{
61
+ let observerId = null;
62
+ setOnChangeObservers((state)=>{
63
+ //Set Default Value
64
+ if (!state[key]) state[key] = {};
65
+ observerId = state[key].length;
66
+ state[key][observerId] = cb;
67
+ return state;
68
+ });
69
+ return observerId;
70
+ };
71
+ const removeOnChangeObserver = (key, id)=>{
72
+ setOnChangeObservers((state)=>{
73
+ //Set Default Value
74
+ if (!state[key]) return state;
75
+ state[key] = Object.keys(state).filter((cbId)=>cbId !== id).map((cbId)=>state[key][cbId]);
76
+ return state;
77
+ });
78
+ };
79
+ const onChangeObserver = (key, value)=>{
80
+ if (!onChangeObservers[key] || typeof onChangeObservers[key] !== "object") return;
81
+ const Observers = onChangeObservers[key];
82
+ Object.values(Observers).map((cb)=>{
83
+ cb({
84
+ value,
85
+ form
243
86
  });
244
- }, true);
245
- return updateFormField(result, field, key);
246
- }, fields);
247
- });
248
- }
249
- }, [renderFormFields]);
250
- const [onFormRenderObservers, setOnFormRenderObservers] = (0, _react.useState)([]);
251
- const addOnFormRenderObserver = function (cb) {
252
- let {
253
- once = false
254
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
255
- setOnFormRenderObservers(state => [...state, {
256
- cb,
257
- once,
258
- isWorkedOut: false
259
- }]);
260
- };
261
- // eslint-disable-next-line no-unused-vars
262
- const updateOnFormRenderObserver = (key, data) => {
263
- setOnFormRenderObservers(state => {
264
- const copy = [...state];
265
- copy[key] = {
266
- ...state[key],
267
- ...data
268
- };
269
- return copy;
270
- });
271
- };
272
- const removeOnFormRenderObserver = key => {
273
- setOnFormRenderObservers(state => state.slice().filter((v, i) => i !== key));
274
- };
275
- const onFormRenderWorker = () => {
276
- // eslint-disable-next-line default-param-last
277
- onFormRenderObservers.map(function () {
278
- let {
279
- once,
280
- isWorkedOut,
281
- cb = () => {}
282
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
283
- let key = arguments.length > 1 ? arguments[1] : undefined;
284
- if (once && isWorkedOut) return null;
285
- cb(form);
286
- if (once) removeOnFormRenderObserver(key);else updateOnFormRenderObserver(key, {
287
- isWorkedOut: true
288
- });
289
- return null;
290
- });
291
- };
292
-
293
- //On Form Rendered
294
- (0, _react.useEffect)(() => {
295
- if (!isFormRendered && onFormRenderObservers.length) {
296
- const formFieldsKeys = getFormFieldsKeys(form);
297
- const isAllFieldsRendered = renderFormFields.reduce((result, key) => {
298
- if (!formFieldsKeys.includes(key)) result = false;
299
- return result;
300
- }, true);
301
- if (isAllFieldsRendered) {
302
- submitIsFormRendered(true);
303
- onFormRenderWorker();
304
- }
305
- }
306
- }, [form, renderFormFields, onFormRenderObservers]);
307
- //--- Render Fields Controller ---//--- END ---//
308
-
309
- ///////////////////////////////////////////////////////////////
310
- ///////////////////////////////////////////////////////////////
311
-
312
- //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- START ---//
313
- const hightliteErrorLabels = () => {
314
- const fields = getFormFieldsAsArray();
315
- const filtered = fields?.reduce((result, field) => {
316
- if (field?.errorLabelHightlite) {
87
+ return null;
88
+ });
89
+ };
90
+ const onFieldChange = (key, value)=>{
91
+ var _getFormField;
92
+ if (value === ((_getFormField = getFormField(key)) === null || _getFormField === void 0 ? void 0 : _getFormField.value)) return false;
93
+ onChangeObserver(key, value);
94
+ setFormField((field)=>({
95
+ ...field,
96
+ error: "",
97
+ value
98
+ }), key);
99
+ };
100
+ //--- OnChange Observer ---//--- END ---//
101
+ ///////////////////////////////////////////////////////////////
102
+ ///////////////////////////////////////////////////////////////
103
+ //--- Form Submit Blocker ---//--- START ---//
104
+ const [formSubmitBlockers, setFormSubmitBlockers] = (0, _react.useState)([]);
105
+ const toggleFormSubmitBlock = (key, value)=>{
106
+ setFormSubmitBlockers((state)=>state.includes(key) || !value ? [
107
+ ...state.filter((k)=>k !== key)
108
+ ] : [
109
+ ...state,
110
+ key
111
+ ]);
112
+ };
113
+ const clearFormSubmitBlockers = ()=>setFormSubmitBlockers([]);
114
+ //--- Form Submit Blocker ---//--- END ---//
115
+ ///////////////////////////////////////////////////////////////
116
+ ///////////////////////////////////////////////////////////////
117
+ //--- Property Observer Blocker ---//--- START ---//
118
+ // const [propertyObservers, setPropertyObservers] = useState({});
119
+ // function addPropertyObserver () {
120
+ // };
121
+ //--- Property Observer Blocker ---//--- END ---//
122
+ ///////////////////////////////////////////////////////////////
123
+ ///////////////////////////////////////////////////////////////
124
+ //--- Render Fields Controller ---//--- START ---//
125
+ const [isFormFieldsAdded, setIsFormFieldsAdded] = (0, _react.useState)(false);
126
+ const [renderFormFields, setRenderFormFieldsState] = (0, _react.useState)([]);
127
+ const setRenderFormFields = (data)=>{
128
+ setIsFormFieldsAdded(true);
129
+ // eslint-disable-next-line no-use-before-define
130
+ removeRenderFields(renderFormFields);
317
131
  // eslint-disable-next-line no-use-before-define
318
- result.push({
319
- ...field,
320
- className: getFieldClassName(field?.key, FormType)
132
+ resetIsInitFocused();
133
+ setRenderFormFieldsState(data);
134
+ };
135
+ const addRenderFields = (fields)=>{
136
+ setRenderFormFieldsState((state)=>[
137
+ ...state,
138
+ ...fields
139
+ ]);
140
+ };
141
+ const removeRenderFields = (fields)=>{
142
+ setRenderFormFieldsState((state)=>state.filter((field)=>!fields.includes(field)));
143
+ };
144
+ const [isFormRendered, setIsFormRendered] = (0, _react.useState)(false);
145
+ const submitIsFormRendered = ()=>setIsFormRendered(true);
146
+ const resetIsFormRendered = ()=>setIsFormRendered(false);
147
+ const onEnterDown = async (e)=>{
148
+ if (!goToNextFieldOnEnterPressed) return false;
149
+ const focusable = document.querySelectorAll('a, button, input, [tabindex]:not([tabindex="-1"])');
150
+ const currentIndex = await new Promise((resolve)=>{
151
+ focusable.forEach((node, i)=>{
152
+ if (node === e.target) resolve(i);
153
+ });
321
154
  });
322
- }
323
- return result;
324
- }, []);
325
- filtered?.map(field => {
326
- const formField = document.querySelector(`.${field?.className}`);
327
- if (!formField) return null;
328
- formField.classList.remove("errorLabelHightlite");
329
- if (field?.error) {
330
- formField.classList.add("errorLabelHightlite");
331
- }
332
- return null;
333
- });
334
- };
335
- (0, _react.useEffect)(() => {
336
- hightliteErrorLabels();
337
- }, [form]);
338
- //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- END ---//
339
-
340
- ///////////////////////////////////////////////////////////////
341
- ///////////////////////////////////////////////////////////////
342
-
343
- //--- Fields Focus Controller ---//--- START ---//
344
- const [isInitFocused, setIsInitFocused] = (0, _react.useState)(false);
345
- const [autoFocusedField, setAutoFocusedField] = (0, _react.useState)(null);
346
- const setFirstFieldInitFocused = () => setIsInitFocused(true);
347
- const resetIsInitFocused = () => setIsInitFocused(false);
348
- const toggleFieldFocus = function (_ref) {
349
- let {
350
- key,
351
- cb = () => {},
352
- form: argForm,
353
- field
354
- } = _ref;
355
- let action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "focus";
356
- if (!key && !field) return null;
357
- if (!argForm) argForm = form;
358
- const formField = field || getFormField(key, argForm);
359
- if (!formField || !formField.ref) {
360
- return false;
361
- }
362
- if (action === "focus" && FocusControllerProps.onlyEmptyFieldAutoFocus && Boolean(formField?.value)) return null;
363
- setTimeout(() => {
364
- formField.ref.current?.querySelector(formField?.focusSelector || "input")?.[action]();
365
- cb();
366
- }, 50);
367
- };
368
- const setFieldFocus = _ref2 => {
369
- let {
370
- key,
371
- cb = () => {},
372
- form: argForm,
373
- field
374
- } = _ref2;
375
- return toggleFieldFocus({
376
- key,
377
- cb,
378
- form: argForm,
379
- field
380
- }, "focus");
381
- };
382
- const setFieldBlur = _ref3 => {
383
- let {
384
- key,
385
- cb = () => {},
386
- form: argForm,
387
- field
388
- } = _ref3;
389
- return toggleFieldFocus({
390
- key,
391
- cb,
392
- form: argForm,
393
- field
394
- }, "blur");
395
- };
396
- const setFirstFieldFocus = () => {
397
- let field = null;
398
- for (let i = 0; i < renderFormFields.length && !field; ++i) {
399
- const key = renderFormFields[i];
400
- const tmpField = getFormField(key);
401
- if (tmpField && !tmpField?.disabled) field = tmpField;
402
- }
403
- if (!field) return false;
404
- if (FocusControllerProps.onlyEmptyFieldAutoFocus && Boolean(field?.value)) {
405
- setFirstFieldInitFocused();
406
- return false;
407
- }
408
- setAutoFocusedField(field.key);
409
- const callback = () => {
410
- setFormField({
411
- value: field.value
412
- }, field.key);
413
- setFirstFieldInitFocused();
414
- };
415
- setTimeout(() => setFieldFocus({
416
- key: field.key,
417
- cb: callback,
418
- form
419
- }), 50);
420
- };
421
- const [onFieldFocusCallbacks, setOnFieldFocusCallbacks] = (0, _react.useState)({});
422
- const addOnFieldFocusCallback = (key, cb) => {
423
- setOnFieldFocusCallbacks(state => {
424
- const stateCopy = {
425
- ...state
426
- };
427
- if (!state[key]) stateCopy[key] = [];
428
- stateCopy[key].push(cb);
429
- return stateCopy;
430
- });
431
- };
432
- const callOnFieldFocusCallbacks = key => {
433
- if (!Array.isArray(onFieldFocusCallbacks[key])) return null;
434
- onFieldFocusCallbacks[key]?.map(cb => cb());
435
- };
436
- const [focusOnRenderFields, setFocusOnRenderFields] = (0, _react.useState)([]);
437
- const addFocusFieldOnRender = (key, cb) => {
438
- setFocusOnRenderFields(state => [...state, key]);
439
- if (cb) addOnFieldFocusCallback(key, cb);
440
- };
441
- const removeFocusFieldOnRender = key => {
442
- setFocusOnRenderFields(state => state.filter(field => field !== key));
443
- };
444
- (0, _react.useEffect)(() => {
445
- if (FocusControllerProps.setAutoFocus && !isInitFocused && !autoFocusedField && isFormRendered) setFirstFieldFocus();
446
- if (focusOnRenderFields.length) {
447
- getFormFieldsKeys(form)?.map(key => {
448
- if (focusOnRenderFields.includes(key) && getFormField(key)?.value?.length === 0) {
449
- const cb = () => {
450
- removeFocusFieldOnRender(key);
451
- callOnFieldFocusCallbacks(key);
452
- };
453
- setFieldFocus({
155
+ if (!currentIndex) return false;
156
+ const nextIndex = currentIndex + 1;
157
+ if (nextIndex >= focusable.length) return false;
158
+ const nextItem = focusable[nextIndex];
159
+ nextItem.focus();
160
+ };
161
+ const onKeyDown = (...args)=>{
162
+ const event = args.reduce((e, item)=>{
163
+ if ((item === null || item === void 0 ? void 0 : item.nativeEvent) instanceof KeyboardEvent) return item;
164
+ return e;
165
+ }, null);
166
+ if (!event) return false;
167
+ const { keyCode } = event;
168
+ switch(keyCode){
169
+ //OnEnterDown
170
+ case 13:
171
+ onEnterDown(event);
172
+ break;
173
+ default:
174
+ break;
175
+ }
176
+ };
177
+ //On Type Change
178
+ (0, _react.useEffect)(()=>{
179
+ resetIsFormRendered();
180
+ }, [
181
+ FormType
182
+ ]);
183
+ //On Render Fields Change
184
+ (0, _react.useEffect)(()=>{
185
+ if (isFormFieldsAdded) resetIsFormRendered(false);
186
+ //Add Form Fields
187
+ if (renderFormFields.length !== 0) {
188
+ setFormFields((fields)=>{
189
+ return renderFormFields.reduce((result, key)=>{
190
+ var _field_className;
191
+ const fieldData = getFieldData(key);
192
+ const field = getFormField(key) ? getFormField(key) : fieldData;
193
+ if (!(field === null || field === void 0 ? void 0 : field.className) || (field === null || field === void 0 ? void 0 : (_field_className = field.className) === null || _field_className === void 0 ? void 0 : _field_className.indexOf(getFieldClassName(key, FormType))) === -1) {
194
+ field.className = `${field === null || field === void 0 ? void 0 : field.className} ${getFieldClassName(key, FormType)}`;
195
+ }
196
+ if (typeof (fieldData === null || fieldData === void 0 ? void 0 : fieldData.label) === "object") {
197
+ field.label = fieldData.label[FormType] || fieldData.label.default;
198
+ }
199
+ field.ref = /*#__PURE__*/ (0, _react.createRef)();
200
+ field.wrapperRef = /*#__PURE__*/ (0, _react.createRef)();
201
+ field.isValueChangedByUser = false;
202
+ if (goToNextFieldOnEnterPressed) {
203
+ const onKeyDownProp = field.onKeyDown || (()=>{});
204
+ field.onKeyDown = (...args)=>{
205
+ onKeyDown(...args);
206
+ onKeyDownProp(...args);
207
+ };
208
+ }
209
+ //Is Field Value Changed By USER
210
+ // eslint-disable-next-line no-use-before-define
211
+ addOnFieldRenderedObserver(key, ()=>{
212
+ var _getFormField_ref_current, _getFormField_ref, _getFormField;
213
+ const element = (_getFormField = getFormField(key)) === null || _getFormField === void 0 ? void 0 : (_getFormField_ref = _getFormField.ref) === null || _getFormField_ref === void 0 ? void 0 : (_getFormField_ref_current = _getFormField_ref.current) === null || _getFormField_ref_current === void 0 ? void 0 : _getFormField_ref_current.querySelector((field === null || field === void 0 ? void 0 : field.focusSelector) || "input");
214
+ const handler = ()=>setFormField({
215
+ isValueChangedByUser: true
216
+ }, key);
217
+ element === null || element === void 0 ? void 0 : element.addEventListener("paste", handler, {
218
+ once: true
219
+ });
220
+ element === null || element === void 0 ? void 0 : element.addEventListener("keypress", handler, {
221
+ once: true
222
+ });
223
+ }, true);
224
+ return updateFormField(result, field, key);
225
+ }, fields);
226
+ });
227
+ }
228
+ }, [
229
+ renderFormFields
230
+ ]);
231
+ const [onFormRenderObservers, setOnFormRenderObservers] = (0, _react.useState)([]);
232
+ const addOnFormRenderObserver = (cb, { once = false } = {})=>{
233
+ setOnFormRenderObservers((state)=>[
234
+ ...state,
235
+ {
236
+ cb,
237
+ once,
238
+ isWorkedOut: false
239
+ }
240
+ ]);
241
+ };
242
+ // eslint-disable-next-line no-unused-vars
243
+ const updateOnFormRenderObserver = (key, data)=>{
244
+ setOnFormRenderObservers((state)=>{
245
+ const copy = [
246
+ ...state
247
+ ];
248
+ copy[key] = {
249
+ ...state[key],
250
+ ...data
251
+ };
252
+ return copy;
253
+ });
254
+ };
255
+ const removeOnFormRenderObserver = (key)=>{
256
+ setOnFormRenderObservers((state)=>state.slice().filter((v, i)=>i !== key));
257
+ };
258
+ const onFormRenderWorker = ()=>{
259
+ // eslint-disable-next-line default-param-last
260
+ onFormRenderObservers.map(({ once, isWorkedOut, cb = ()=>{} } = {}, key)=>{
261
+ if (once && isWorkedOut) return null;
262
+ cb(form);
263
+ if (once) removeOnFormRenderObserver(key);
264
+ else updateOnFormRenderObserver(key, {
265
+ isWorkedOut: true
266
+ });
267
+ return null;
268
+ });
269
+ };
270
+ //On Form Rendered
271
+ (0, _react.useEffect)(()=>{
272
+ if (!isFormRendered && onFormRenderObservers.length) {
273
+ const formFieldsKeys = getFormFieldsKeys(form);
274
+ const isAllFieldsRendered = renderFormFields.reduce((result, key)=>{
275
+ if (!formFieldsKeys.includes(key)) result = false;
276
+ return result;
277
+ }, true);
278
+ if (isAllFieldsRendered) {
279
+ submitIsFormRendered(true);
280
+ onFormRenderWorker();
281
+ }
282
+ }
283
+ }, [
284
+ form,
285
+ renderFormFields,
286
+ onFormRenderObservers
287
+ ]);
288
+ //--- Render Fields Controller ---//--- END ---//
289
+ ///////////////////////////////////////////////////////////////
290
+ ///////////////////////////////////////////////////////////////
291
+ //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- START ---//
292
+ const hightliteErrorLabels = ()=>{
293
+ const fields = getFormFieldsAsArray();
294
+ const filtered = fields === null || fields === void 0 ? void 0 : fields.reduce((result, field)=>{
295
+ if (field === null || field === void 0 ? void 0 : field.errorLabelHightlite) {
296
+ // eslint-disable-next-line no-use-before-define
297
+ result.push({
298
+ ...field,
299
+ className: getFieldClassName(field === null || field === void 0 ? void 0 : field.key, FormType)
300
+ });
301
+ }
302
+ return result;
303
+ }, []);
304
+ filtered === null || filtered === void 0 ? void 0 : filtered.map((field)=>{
305
+ const formField = document.querySelector(`.${field === null || field === void 0 ? void 0 : field.className}`);
306
+ if (!formField) return null;
307
+ formField.classList.remove("errorLabelHightlite");
308
+ if (field === null || field === void 0 ? void 0 : field.error) {
309
+ formField.classList.add("errorLabelHightlite");
310
+ }
311
+ return null;
312
+ });
313
+ };
314
+ (0, _react.useEffect)(()=>{
315
+ hightliteErrorLabels();
316
+ }, [
317
+ form
318
+ ]);
319
+ //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- END ---//
320
+ ///////////////////////////////////////////////////////////////
321
+ ///////////////////////////////////////////////////////////////
322
+ //--- Fields Focus Controller ---//--- START ---//
323
+ const [isInitFocused, setIsInitFocused] = (0, _react.useState)(false);
324
+ const [autoFocusedField, setAutoFocusedField] = (0, _react.useState)(null);
325
+ const setFirstFieldInitFocused = ()=>setIsInitFocused(true);
326
+ const resetIsInitFocused = ()=>setIsInitFocused(false);
327
+ const toggleFieldFocus = ({ key, cb = ()=>{}, form: argForm, field }, action = "focus")=>{
328
+ if (!key && !field) return null;
329
+ if (!argForm) argForm = form;
330
+ const formField = field || getFormField(key, argForm);
331
+ if (!formField || !formField.ref) {
332
+ return false;
333
+ }
334
+ if (action === "focus" && FocusControllerProps.onlyEmptyFieldAutoFocus && Boolean(formField === null || formField === void 0 ? void 0 : formField.value)) return null;
335
+ setTimeout(()=>{
336
+ var _formField_ref_current_querySelector, _formField_ref_current;
337
+ (_formField_ref_current = formField.ref.current) === null || _formField_ref_current === void 0 ? void 0 : (_formField_ref_current_querySelector = _formField_ref_current.querySelector((formField === null || formField === void 0 ? void 0 : formField.focusSelector) || "input")) === null || _formField_ref_current_querySelector === void 0 ? void 0 : _formField_ref_current_querySelector[action]();
338
+ cb();
339
+ }, 50);
340
+ };
341
+ const setFieldFocus = ({ key, cb = ()=>{}, form: argForm, field })=>toggleFieldFocus({
342
+ key,
343
+ cb,
344
+ form: argForm,
345
+ field
346
+ }, "focus");
347
+ const setFieldBlur = ({ key, cb = ()=>{}, form: argForm, field })=>toggleFieldFocus({
454
348
  key,
455
- form,
456
- cb
457
- });
349
+ cb,
350
+ form: argForm,
351
+ field
352
+ }, "blur");
353
+ const setFirstFieldFocus = ()=>{
354
+ let field = null;
355
+ for(let i = 0; i < renderFormFields.length && !field; ++i){
356
+ const key = renderFormFields[i];
357
+ const tmpField = getFormField(key);
358
+ if (tmpField && !(tmpField === null || tmpField === void 0 ? void 0 : tmpField.disabled)) field = tmpField;
458
359
  }
459
- return null;
460
- });
461
- }
462
- }, [form, focusOnRenderFields, isInitFocused, isFormRendered]);
463
- (0, _react.useEffect)(() => {
464
- setAutoFocusedField(null);
465
- }, [isInitFocused]);
466
- (0, _react.useEffect)(() => {
467
- resetIsInitFocused();
468
- }, [FormType]);
469
-
470
- //Remove Focus From Autocomplete field !!! TODO
471
- // useEffect(() => {
472
- // if (!autoFocusedField) return null;
473
- // const field = getFormField(autoFocusedField);
474
-
475
- // if (field?.value !== '' && !field?.isValueChangedByUser) {
476
- // setFieldBlur({key: autoFocusedField, form});
477
- // }
478
- // }, [autoFocusedField, form]);
479
- //--- Fields Focus Controller ---//--- END ---//
480
-
481
- ///////////////////////////////////////////////////////////////
482
- ///////////////////////////////////////////////////////////////
483
-
484
- //--- OnFieldRendered Observer ---//--- START ---//
485
- const [onFieldRenderedObservers, setOnFieldRenderedObservers] = (0, _react.useState)({});
486
- const [isFieldObserversReset, setIsFieldObserversReset] = (0, _react.useState)(false);
487
- const resetOnFieldRenderObserversWorkedOut = () => {
488
- if (!isFieldObserversReset && renderFormFields.length) {
489
- renderFormFields.map(key => {
360
+ if (!field) return false;
361
+ if (FocusControllerProps.onlyEmptyFieldAutoFocus && Boolean(field === null || field === void 0 ? void 0 : field.value)) {
362
+ setFirstFieldInitFocused();
363
+ return false;
364
+ }
365
+ setAutoFocusedField(field.key);
366
+ const callback = ()=>{
367
+ setFormField({
368
+ value: field.value
369
+ }, field.key);
370
+ setFirstFieldInitFocused();
371
+ };
372
+ setTimeout(()=>setFieldFocus({
373
+ key: field.key,
374
+ cb: callback,
375
+ form
376
+ }), 50);
377
+ };
378
+ const [onFieldFocusCallbacks, setOnFieldFocusCallbacks] = (0, _react.useState)({});
379
+ const addOnFieldFocusCallback = (key, cb)=>{
380
+ setOnFieldFocusCallbacks((state)=>{
381
+ const stateCopy = {
382
+ ...state
383
+ };
384
+ if (!state[key]) stateCopy[key] = [];
385
+ stateCopy[key].push(cb);
386
+ return stateCopy;
387
+ });
388
+ };
389
+ const callOnFieldFocusCallbacks = (key)=>{
390
+ var _onFieldFocusCallbacks_key;
391
+ if (!Array.isArray(onFieldFocusCallbacks[key])) return null;
392
+ (_onFieldFocusCallbacks_key = onFieldFocusCallbacks[key]) === null || _onFieldFocusCallbacks_key === void 0 ? void 0 : _onFieldFocusCallbacks_key.map((cb)=>cb());
393
+ };
394
+ const [focusOnRenderFields, setFocusOnRenderFields] = (0, _react.useState)([]);
395
+ const addFocusFieldOnRender = (key, cb)=>{
396
+ setFocusOnRenderFields((state)=>[
397
+ ...state,
398
+ key
399
+ ]);
400
+ if (cb) addOnFieldFocusCallback(key, cb);
401
+ };
402
+ const removeFocusFieldOnRender = (key)=>{
403
+ setFocusOnRenderFields((state)=>state.filter((field)=>field !== key));
404
+ };
405
+ (0, _react.useEffect)(()=>{
406
+ if (FocusControllerProps.setAutoFocus && !isInitFocused && !autoFocusedField && isFormRendered) setFirstFieldFocus();
407
+ if (focusOnRenderFields.length) {
408
+ var _getFormFieldsKeys;
409
+ (_getFormFieldsKeys = getFormFieldsKeys(form)) === null || _getFormFieldsKeys === void 0 ? void 0 : _getFormFieldsKeys.map((key)=>{
410
+ var _getFormField_value, _getFormField;
411
+ if (focusOnRenderFields.includes(key) && ((_getFormField = getFormField(key)) === null || _getFormField === void 0 ? void 0 : (_getFormField_value = _getFormField.value) === null || _getFormField_value === void 0 ? void 0 : _getFormField_value.length) === 0) {
412
+ const cb = ()=>{
413
+ removeFocusFieldOnRender(key);
414
+ callOnFieldFocusCallbacks(key);
415
+ };
416
+ setFieldFocus({
417
+ key,
418
+ form,
419
+ cb
420
+ });
421
+ }
422
+ return null;
423
+ });
424
+ }
425
+ }, [
426
+ form,
427
+ focusOnRenderFields,
428
+ isInitFocused,
429
+ isFormRendered
430
+ ]);
431
+ (0, _react.useEffect)(()=>{
432
+ setAutoFocusedField(null);
433
+ }, [
434
+ isInitFocused
435
+ ]);
436
+ (0, _react.useEffect)(()=>{
437
+ resetIsInitFocused();
438
+ }, [
439
+ FormType
440
+ ]);
441
+ //Remove Focus From Autocomplete field !!! TODO
442
+ // useEffect(() => {
443
+ // if (!autoFocusedField) return null;
444
+ // const field = getFormField(autoFocusedField);
445
+ // if (field?.value !== '' && !field?.isValueChangedByUser) {
446
+ // setFieldBlur({key: autoFocusedField, form});
447
+ // }
448
+ // }, [autoFocusedField, form]);
449
+ //--- Fields Focus Controller ---//--- END ---//
450
+ ///////////////////////////////////////////////////////////////
451
+ ///////////////////////////////////////////////////////////////
452
+ //--- OnFieldRendered Observer ---//--- START ---//
453
+ const [onFieldRenderedObservers, setOnFieldRenderedObservers] = (0, _react.useState)({});
454
+ const [isFieldObserversReset, setIsFieldObserversReset] = (0, _react.useState)(false);
455
+ const resetOnFieldRenderObserversWorkedOut = ()=>{
456
+ if (!isFieldObserversReset && renderFormFields.length) {
457
+ renderFormFields.map((key)=>{
458
+ setFormField({
459
+ isOnRenderObserversWorkedOut: false
460
+ }, key);
461
+ return key;
462
+ });
463
+ setIsFieldObserversReset(true);
464
+ }
465
+ };
466
+ const addOnFieldRenderedObserver = (key, cb, isOnceCallable = true)=>{
467
+ let observerId = null;
468
+ setOnFieldRenderedObservers((state)=>{
469
+ //Set Default Value
470
+ if (!state[key]) state[key] = {};
471
+ observerId = Object.keys(state[key]).length || 0;
472
+ state[key][observerId] = {
473
+ f: cb,
474
+ isOnceCallable
475
+ };
476
+ return state;
477
+ });
478
+ return observerId;
479
+ };
480
+ const updateOnFieldRenderedObserver = (key, id, data)=>{
481
+ setOnFieldRenderedObservers((state)=>{
482
+ //Set Default Value
483
+ if (!state[key]) return state;
484
+ state[key][id] = {
485
+ ...state[key][id],
486
+ ...data
487
+ };
488
+ return state;
489
+ });
490
+ };
491
+ const removeOnFieldRenderedObserver = (key, id)=>{
492
+ setOnFieldRenderedObservers((state)=>{
493
+ //Set Default Value
494
+ if (!state[key]) return state;
495
+ state[key] = Object.keys(state).filter((cbId)=>cbId !== id).map((cbId)=>state[key][cbId]);
496
+ return state;
497
+ });
498
+ };
499
+ const onFieldRenderedObserver = (key, data)=>{
500
+ if (!onFieldRenderedObservers[key] || typeof onFieldRenderedObservers[key] !== "object") return;
501
+ const Observers = onFieldRenderedObservers[key];
502
+ const FilteredObservers = Object.values(Observers).filter((observer)=>!(observer === null || observer === void 0 ? void 0 : observer.isObserverWorkedOut));
503
+ if (FilteredObservers.length === 0) return null;
490
504
  setFormField({
491
- isOnRenderObserversWorkedOut: false
505
+ isOnRenderObserversWorkedOut: true
492
506
  }, key);
493
- return key;
494
- });
495
- setIsFieldObserversReset(true);
496
- }
497
- };
498
- const addOnFieldRenderedObserver = function (key, cb) {
499
- let isOnceCallable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
500
- let observerId = null;
501
- setOnFieldRenderedObservers(state => {
502
- //Set Default Value
503
- if (!state[key]) state[key] = {};
504
- observerId = Object.keys(state[key]).length || 0;
505
- state[key][observerId] = {
506
- f: cb,
507
- isOnceCallable
508
- };
509
- return state;
510
- });
511
- return observerId;
512
- };
513
- const updateOnFieldRenderedObserver = (key, id, data) => {
514
- setOnFieldRenderedObservers(state => {
515
- //Set Default Value
516
- if (!state[key]) return state;
517
- state[key][id] = {
518
- ...state[key][id],
519
- ...data
520
- };
521
- return state;
522
- });
523
- };
524
- const removeOnFieldRenderedObserver = (key, id) => {
525
- setOnFieldRenderedObservers(state => {
526
- //Set Default Value
527
- if (!state[key]) return state;
528
- state[key] = Object.keys(state).filter(cbId => cbId !== id).map(cbId => state[key][cbId]);
529
- return state;
530
- });
531
- };
532
- const onFieldRenderedObserver = (key, data) => {
533
- if (!onFieldRenderedObservers[key] || typeof onFieldRenderedObservers[key] !== "object") return;
534
- const Observers = onFieldRenderedObservers[key];
535
- const FilteredObservers = Object.values(Observers).filter(observer => !observer?.isObserverWorkedOut);
536
- if (FilteredObservers.length === 0) return null;
537
- setFormField({
538
- isOnRenderObserversWorkedOut: true
539
- }, key);
540
- FilteredObservers.map((_ref4, id) => {
541
- let {
542
- f,
543
- isOnceCallable
544
- } = _ref4;
545
- f(data);
546
- if (isOnceCallable) updateOnFieldRenderedObserver(key, id, {
547
- isObserverWorkedOut: true
548
- });
549
- return null;
550
- });
551
- };
552
- const onRenderObserverWorker = () => {
553
- return getFormFieldsKeys(form)?.map(key => {
554
- //OnFieldRendered
555
- const fieldData = getFormField(key);
556
- if (!fieldData?.isOnRenderObserversWorkedOut) {
557
- onFieldRenderedObserver(key, fieldData);
558
- return {
559
- key,
560
- isWorkedOut: true
561
- };
562
- }
563
- return {
564
- key,
565
- isWorkedOut: false
566
- };
567
- });
568
- };
569
- (0, _react.useEffect)(() => {
570
- resetOnFieldRenderObserversWorkedOut();
571
- onRenderObserverWorker();
572
- }, [form]);
573
- (0, _react.useEffect)(() => {
574
- setIsFieldObserversReset(false);
575
- }, [FormType]);
576
- //--- OnFieldRendered Observer ---//--- END ---//
577
-
578
- ///////////////////////////////////////////////////////////////
579
- ///////////////////////////////////////////////////////////////
580
-
581
- //Detect What Changed || TRY TO DO
582
- // const compare = async (prev, current) => {
583
- // if (!prev) return current;
584
-
585
- // return new Promise((resolve) => {
586
- // Object.keys(current).reduce((result, key, i, arr) => {
587
- // //If PROPERTY is NOT EXISTS BEFORE
588
- // if ([null, undefined].includes(prev[key])) {
589
- // result[key] = current[key];
590
- // }
591
- // //If PROPERTY is AN OBJECT
592
- // else if (typeof current[key] === 'object') {
593
- // //If PROPERTY is EXISTS BEFORE
594
- // const innerCompare = compare(prev[key], current[key]);
595
- // // //If SOMETHING CHANGED
596
- // if (innerCompare?.length) result[key] = innerCompare;
597
- // }
598
- // //If PROPERTY is AN SIMPLE VALUE and PROPERTY CHANGED
599
- // else if (prev[key] !== current[key]) {
600
- // result[key] = current[key];
601
- // }
602
-
603
- // if (i === arr.length-1) {
604
- // resolve(result);
605
- // }
606
-
607
- // return result;
608
- // }, {});
609
- // });
610
- // };
611
-
612
- ///////////////////////////////////////////////////////////////
613
- ///////////////////////////////////////////////////////////////
614
-
615
- //--- WindowScrollController ---//--- START ---//
616
- const scrollToField = _ref5 => {
617
- let {
618
- key = null,
619
- field = null,
620
- form: argForm
621
- } = _ref5;
622
- if (!key && !field) return false;
623
- if (!argForm) argForm = form;
624
- if (!field) field = getFormField(key, argForm);
625
- const wrapperRef = field?.wrapperRef || field?.ref;
626
- // eslint-disable-next-line no-unsafe-optional-chaining
627
- const {
628
- top: topOffset
629
- } = wrapperRef?.current?.getBoundingClientRect();
630
- const scrollTop = Math.abs(Math.abs(topOffset) - Math.abs(window.scrollY)) - 16;
631
- window.scrollTo({
632
- top: scrollTop
633
- });
634
- };
635
-
636
- //--- WindowScrollController ---//--- END ---//
637
-
638
- ///////////////////////////////////////////////////////////////
639
- ///////////////////////////////////////////////////////////////
640
-
641
- const addErrorsToForm = function (errors) {
642
- let argForm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : form;
643
- if (!argForm) argForm = form;
644
- setFormFields(fields => {
645
- return errors.reduce((fields, _ref6) => {
646
- let {
647
- message: error,
648
- propertyPath: errKey
649
- } = _ref6;
650
- return updateFormField(fields, {
651
- error
652
- }, errKey);
653
- }, fields);
654
- });
655
- };
656
- return {
657
- FormDataDrivers,
658
- //OnChangeObserver
659
- addOnChangeObserver,
660
- removeOnChangeObserver,
661
- onChangeObservers,
662
- //OnChangeHandler
663
- onFieldChange,
664
- //Form Submit Blocker
665
- toggleFormSubmitBlock,
666
- clearFormSubmitBlockers,
667
- isFormSubmitBlocked: Boolean(formSubmitBlockers.length),
668
- //Property Observers
669
- // addPropertyObserver,
670
-
671
- //Render Fields
672
- renderFormFields,
673
- setRenderFormFields,
674
- addRenderFields,
675
- removeRenderFields,
676
- getFieldClassName,
677
- //Field Focus Controller
678
- isInitFocused,
679
- setFirstFieldInitFocused,
680
- resetIsInitFocused,
681
- setFieldFocus,
682
- setFieldBlur,
683
- setFirstFieldFocus,
684
- autoFocusedField,
685
- addFocusFieldOnRender,
686
- removeFocusFieldOnRender,
687
- //Field Render Controller
688
- addOnFieldRenderedObserver,
689
- removeOnFieldRenderedObserver,
690
- onFieldRenderedObservers,
691
- updateFormField,
692
- addOnFormRenderObserver,
693
- submitIsFormRendered,
694
- resetIsFormRendered,
695
- renderFields: _ref7 => {
696
- let {
697
- form: argForm = form,
698
- fields: argFields = renderFormFields,
699
- cols: argCols = 1,
700
- RenderFieldComponent
701
- } = _ref7;
702
- return (0, _RenderFields.default)({
703
- form: argForm,
704
- fields: argFields,
705
- cols: argCols,
706
- RenderFieldComponent,
507
+ FilteredObservers.map(({ f, isOnceCallable }, id)=>{
508
+ f(data);
509
+ if (isOnceCallable) updateOnFieldRenderedObserver(key, id, {
510
+ isObserverWorkedOut: true
511
+ });
512
+ return null;
513
+ });
514
+ };
515
+ const onRenderObserverWorker = ()=>{
516
+ var _getFormFieldsKeys;
517
+ return (_getFormFieldsKeys = getFormFieldsKeys(form)) === null || _getFormFieldsKeys === void 0 ? void 0 : _getFormFieldsKeys.map((key)=>{
518
+ //OnFieldRendered
519
+ const fieldData = getFormField(key);
520
+ if (!(fieldData === null || fieldData === void 0 ? void 0 : fieldData.isOnRenderObserversWorkedOut)) {
521
+ onFieldRenderedObserver(key, fieldData);
522
+ return {
523
+ key,
524
+ isWorkedOut: true
525
+ };
526
+ }
527
+ return {
528
+ key,
529
+ isWorkedOut: false
530
+ };
531
+ });
532
+ };
533
+ (0, _react.useEffect)(()=>{
534
+ resetOnFieldRenderObserversWorkedOut();
535
+ onRenderObserverWorker();
536
+ }, [
537
+ form
538
+ ]);
539
+ (0, _react.useEffect)(()=>{
540
+ setIsFieldObserversReset(false);
541
+ }, [
542
+ FormType
543
+ ]);
544
+ //--- OnFieldRendered Observer ---//--- END ---//
545
+ ///////////////////////////////////////////////////////////////
546
+ ///////////////////////////////////////////////////////////////
547
+ //Detect What Changed || TRY TO DO
548
+ // const compare = async (prev, current) => {
549
+ // if (!prev) return current;
550
+ // return new Promise((resolve) => {
551
+ // Object.keys(current).reduce((result, key, i, arr) => {
552
+ // //If PROPERTY is NOT EXISTS BEFORE
553
+ // if ([null, undefined].includes(prev[key])) {
554
+ // result[key] = current[key];
555
+ // }
556
+ // //If PROPERTY is AN OBJECT
557
+ // else if (typeof current[key] === 'object') {
558
+ // //If PROPERTY is EXISTS BEFORE
559
+ // const innerCompare = compare(prev[key], current[key]);
560
+ // // //If SOMETHING CHANGED
561
+ // if (innerCompare?.length) result[key] = innerCompare;
562
+ // }
563
+ // //If PROPERTY is AN SIMPLE VALUE and PROPERTY CHANGED
564
+ // else if (prev[key] !== current[key]) {
565
+ // result[key] = current[key];
566
+ // }
567
+ // if (i === arr.length-1) {
568
+ // resolve(result);
569
+ // }
570
+ // return result;
571
+ // }, {});
572
+ // });
573
+ // };
574
+ ///////////////////////////////////////////////////////////////
575
+ ///////////////////////////////////////////////////////////////
576
+ //--- WindowScrollController ---//--- START ---//
577
+ const scrollToField = ({ key = null, field = null, form: argForm })=>{
578
+ var _wrapperRef_current;
579
+ if (!key && !field) return false;
580
+ if (!argForm) argForm = form;
581
+ if (!field) field = getFormField(key, argForm);
582
+ const wrapperRef = (field === null || field === void 0 ? void 0 : field.wrapperRef) || (field === null || field === void 0 ? void 0 : field.ref);
583
+ // eslint-disable-next-line no-unsafe-optional-chaining
584
+ const { top: topOffset } = wrapperRef === null || wrapperRef === void 0 ? void 0 : (_wrapperRef_current = wrapperRef.current) === null || _wrapperRef_current === void 0 ? void 0 : _wrapperRef_current.getBoundingClientRect();
585
+ const scrollTop = Math.abs(Math.abs(topOffset) - Math.abs(window.scrollY)) - 16;
586
+ window.scrollTo({
587
+ top: scrollTop
588
+ });
589
+ };
590
+ //--- WindowScrollController ---//--- END ---//
591
+ ///////////////////////////////////////////////////////////////
592
+ ///////////////////////////////////////////////////////////////
593
+ const addErrorsToForm = (errors, argForm = form)=>{
594
+ if (!argForm) argForm = form;
595
+ setFormFields((fields)=>{
596
+ return errors.reduce((fields, { message: error, propertyPath: errKey })=>{
597
+ return updateFormField(fields, {
598
+ error
599
+ }, errKey);
600
+ }, fields);
601
+ });
602
+ };
603
+ return {
604
+ FormDataDrivers,
605
+ //OnChangeObserver
606
+ addOnChangeObserver,
607
+ removeOnChangeObserver,
608
+ onChangeObservers,
609
+ //OnChangeHandler
707
610
  onFieldChange,
708
- FormDataDriver: getFormDataDriver(FormDataDriverName)
709
- });
710
- },
711
- scrollToField,
712
- getFieldData,
713
- getFormField,
714
- setFormFields,
715
- setFormField: (data, key) => setFormField(data, key),
716
- getFormFieldsAsArray,
717
- getFormFieldsKeys,
718
- removeAllFormFields,
719
- removeFormField,
720
- removeFormFields,
721
- addErrorsToForm
722
- };
723
- }
611
+ //Form Submit Blocker
612
+ toggleFormSubmitBlock,
613
+ clearFormSubmitBlockers,
614
+ isFormSubmitBlocked: Boolean(formSubmitBlockers.length),
615
+ //Property Observers
616
+ // addPropertyObserver,
617
+ //Render Fields
618
+ renderFormFields,
619
+ setRenderFormFields,
620
+ addRenderFields,
621
+ removeRenderFields,
622
+ getFieldClassName,
623
+ //Field Focus Controller
624
+ isInitFocused,
625
+ setFirstFieldInitFocused,
626
+ resetIsInitFocused,
627
+ setFieldFocus,
628
+ setFieldBlur,
629
+ setFirstFieldFocus,
630
+ autoFocusedField,
631
+ addFocusFieldOnRender,
632
+ removeFocusFieldOnRender,
633
+ //Field Render Controller
634
+ addOnFieldRenderedObserver,
635
+ removeOnFieldRenderedObserver,
636
+ onFieldRenderedObservers,
637
+ updateFormField,
638
+ addOnFormRenderObserver,
639
+ submitIsFormRendered,
640
+ resetIsFormRendered,
641
+ renderFields: ({ form: argForm = form, fields: argFields = renderFormFields, cols: argCols = 1, RenderFieldComponent })=>(0, _RenderFields.default)({
642
+ form: argForm,
643
+ fields: argFields,
644
+ cols: argCols,
645
+ RenderFieldComponent,
646
+ onFieldChange,
647
+ FormDataDriver: getFormDataDriver(FormDataDriverName)
648
+ }),
649
+ scrollToField,
650
+ getFieldData,
651
+ getFormField,
652
+ setFormFields,
653
+ setFormField: (data, key)=>setFormField(data, key),
654
+ getFormFieldsAsArray,
655
+ getFormFieldsKeys,
656
+ removeAllFormFields,
657
+ removeFormField,
658
+ removeFormFields,
659
+ addErrorsToForm
660
+ };
661
+ }