intelicoreact 1.5.33 → 1.5.35

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