@solidstarters/solid-core-ui 0.1.26

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 (585) hide show
  1. package/dist/components/CustomFooter/CustomFooter.d.ts +2 -0
  2. package/dist/components/CustomFooter/CustomFooter.d.ts.map +1 -0
  3. package/dist/components/CustomFooter/FooterForm.d.ts +2 -0
  4. package/dist/components/CustomFooter/FooterForm.d.ts.map +1 -0
  5. package/dist/components/CustomHeader/CallIcon.d.ts +2 -0
  6. package/dist/components/CustomHeader/CallIcon.d.ts.map +1 -0
  7. package/dist/components/CustomHeader/CustomDropdown.d.ts +21 -0
  8. package/dist/components/CustomHeader/CustomDropdown.d.ts.map +1 -0
  9. package/dist/components/CustomHeader/CustomHeader.d.ts +2 -0
  10. package/dist/components/CustomHeader/CustomHeader.d.ts.map +1 -0
  11. package/dist/components/CustomHeader/EmailIcon.d.ts +2 -0
  12. package/dist/components/CustomHeader/EmailIcon.d.ts.map +1 -0
  13. package/dist/components/CustomHeader/HeaderCart.d.ts +2 -0
  14. package/dist/components/CustomHeader/HeaderCart.d.ts.map +1 -0
  15. package/dist/components/CustomHeader/productNavData.d.ts +3 -0
  16. package/dist/components/CustomHeader/productNavData.d.ts.map +1 -0
  17. package/dist/components/FormView/DetailsViews.d.ts +2 -0
  18. package/dist/components/FormView/DetailsViews.d.ts.map +1 -0
  19. package/dist/components/FormView/OrderAddressDetails.d.ts +2 -0
  20. package/dist/components/FormView/OrderAddressDetails.d.ts.map +1 -0
  21. package/dist/components/FormView/OrderPaymentDetails.d.ts +2 -0
  22. package/dist/components/FormView/OrderPaymentDetails.d.ts.map +1 -0
  23. package/dist/components/FormView/OrderTableDetails.d.ts +2 -0
  24. package/dist/components/FormView/OrderTableDetails.d.ts.map +1 -0
  25. package/dist/components/FormView/OrderedProductDetail.d.ts +2 -0
  26. package/dist/components/FormView/OrderedProductDetail.d.ts.map +1 -0
  27. package/dist/components/Tag/CustomTag.d.ts +8 -0
  28. package/dist/components/Tag/CustomTag.d.ts.map +1 -0
  29. package/dist/components/auth/Login.d.ts +3 -0
  30. package/dist/components/auth/Login.d.ts.map +1 -0
  31. package/dist/components/auth/Register.d.ts +3 -0
  32. package/dist/components/auth/Register.d.ts.map +1 -0
  33. package/dist/components/common/AuthBanner.d.ts +3 -0
  34. package/dist/components/common/AuthBanner.d.ts.map +1 -0
  35. package/dist/components/common/AutoCompleteField.d.ts +2 -0
  36. package/dist/components/common/AutoCompleteField.d.ts.map +1 -0
  37. package/dist/components/common/CancelButton.d.ts +3 -0
  38. package/dist/components/common/CancelButton.d.ts.map +1 -0
  39. package/dist/components/common/CodeEditor.d.ts +3 -0
  40. package/dist/components/common/CodeEditor.d.ts.map +1 -0
  41. package/dist/components/common/CreateButton.d.ts +2 -0
  42. package/dist/components/common/CreateButton.d.ts.map +1 -0
  43. package/dist/components/common/DropzonePlaceholder.d.ts +2 -0
  44. package/dist/components/common/DropzonePlaceholder.d.ts.map +1 -0
  45. package/dist/components/common/DropzoneUpload.d.ts +2 -0
  46. package/dist/components/common/DropzoneUpload.d.ts.map +1 -0
  47. package/dist/components/common/FilterComponent.d.ts +3 -0
  48. package/dist/components/common/FilterComponent.d.ts.map +1 -0
  49. package/dist/components/common/HeaderDynamicTitles.d.ts +2 -0
  50. package/dist/components/common/HeaderDynamicTitles.d.ts.map +1 -0
  51. package/dist/components/common/MarkdownViewer.d.ts +3 -0
  52. package/dist/components/common/MarkdownViewer.d.ts.map +1 -0
  53. package/dist/components/common/MultipleSelectAutoCompleteField.d.ts +2 -0
  54. package/dist/components/common/MultipleSelectAutoCompleteField.d.ts.map +1 -0
  55. package/dist/components/common/SingleSelectAutoCompleteField.d.ts +2 -0
  56. package/dist/components/common/SingleSelectAutoCompleteField.d.ts.map +1 -0
  57. package/dist/components/common/SocialMediaLogin.d.ts +2 -0
  58. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -0
  59. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts +2 -0
  60. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts.map +1 -0
  61. package/dist/components/core/common/SolidCreateButton.d.ts +2 -0
  62. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -0
  63. package/dist/components/core/common/SolidGlobalSearchElement.d.ts +2 -0
  64. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -0
  65. package/dist/components/core/common/SolidSearchBox.d.ts +2 -0
  66. package/dist/components/core/common/SolidSearchBox.d.ts.map +1 -0
  67. package/dist/components/core/field/FieldListViewData.d.ts +7 -0
  68. package/dist/components/core/field/FieldListViewData.d.ts.map +1 -0
  69. package/dist/components/core/form/SolidFormView.d.ts +14 -0
  70. package/dist/components/core/form/SolidFormView.d.ts.map +1 -0
  71. package/dist/components/core/form/fields/ISolidField.d.ts +63 -0
  72. package/dist/components/core/form/fields/ISolidField.d.ts.map +1 -0
  73. package/dist/components/core/form/fields/SolidBooleanField.d.ts +11 -0
  74. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -0
  75. package/dist/components/core/form/fields/SolidDateField.d.ts +11 -0
  76. package/dist/components/core/form/fields/SolidDateField.d.ts.map +1 -0
  77. package/dist/components/core/form/fields/SolidDateTimeField.d.ts +11 -0
  78. package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -0
  79. package/dist/components/core/form/fields/SolidDecimalField.d.ts +11 -0
  80. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -0
  81. package/dist/components/core/form/fields/SolidIntegerField.d.ts +11 -0
  82. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -0
  83. package/dist/components/core/form/fields/SolidJsonField.d.ts +11 -0
  84. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -0
  85. package/dist/components/core/form/fields/SolidLongTextField.d.ts +11 -0
  86. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -0
  87. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts +11 -0
  88. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -0
  89. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts +11 -0
  90. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -0
  91. package/dist/components/core/form/fields/SolidRelationField.d.ts +13 -0
  92. package/dist/components/core/form/fields/SolidRelationField.d.ts.map +1 -0
  93. package/dist/components/core/form/fields/SolidRichTextField.d.ts +11 -0
  94. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -0
  95. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts +11 -0
  96. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -0
  97. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts +11 -0
  98. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -0
  99. package/dist/components/core/form/fields/SolidShortTextField.d.ts +11 -0
  100. package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -0
  101. package/dist/components/core/form/fields/SolidTimeField.d.ts +11 -0
  102. package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -0
  103. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts +14 -0
  104. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -0
  105. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts +11 -0
  106. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -0
  107. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts +12 -0
  108. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -0
  109. package/dist/components/core/kanban/KanbanBoard.d.ts +3 -0
  110. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -0
  111. package/dist/components/core/kanban/KanbanCard.d.ts +14 -0
  112. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -0
  113. package/dist/components/core/kanban/KanbanColumn.d.ts +20 -0
  114. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -0
  115. package/dist/components/core/kanban/SolidKanbanFilter.d.ts +2 -0
  116. package/dist/components/core/kanban/SolidKanbanFilter.d.ts.map +1 -0
  117. package/dist/components/core/kanban/SolidKanbanView.d.ts +8 -0
  118. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -0
  119. package/dist/components/core/kanban/SolidKanbanViewSearchColumn.d.ts +10 -0
  120. package/dist/components/core/kanban/SolidKanbanViewSearchColumn.d.ts.map +1 -0
  121. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts +2 -0
  122. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -0
  123. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts +2 -0
  124. package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts.map +1 -0
  125. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts +2 -0
  126. package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts.map +1 -0
  127. package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts +12 -0
  128. package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts.map +1 -0
  129. package/dist/components/core/kanban/columns/SolidBigintColumn.d.ts +4 -0
  130. package/dist/components/core/kanban/columns/SolidBigintColumn.d.ts.map +1 -0
  131. package/dist/components/core/kanban/columns/SolidBooleanColumn.d.ts +4 -0
  132. package/dist/components/core/kanban/columns/SolidBooleanColumn.d.ts.map +1 -0
  133. package/dist/components/core/kanban/columns/SolidComputedColumn.d.ts +4 -0
  134. package/dist/components/core/kanban/columns/SolidComputedColumn.d.ts.map +1 -0
  135. package/dist/components/core/kanban/columns/SolidDateColumn.d.ts +9 -0
  136. package/dist/components/core/kanban/columns/SolidDateColumn.d.ts.map +1 -0
  137. package/dist/components/core/kanban/columns/SolidDatetimeColumn.d.ts +4 -0
  138. package/dist/components/core/kanban/columns/SolidDatetimeColumn.d.ts.map +1 -0
  139. package/dist/components/core/kanban/columns/SolidDecimalColumn.d.ts +4 -0
  140. package/dist/components/core/kanban/columns/SolidDecimalColumn.d.ts.map +1 -0
  141. package/dist/components/core/kanban/columns/SolidExternalIdColumn.d.ts +4 -0
  142. package/dist/components/core/kanban/columns/SolidExternalIdColumn.d.ts.map +1 -0
  143. package/dist/components/core/kanban/columns/SolidFloatColumn.d.ts +4 -0
  144. package/dist/components/core/kanban/columns/SolidFloatColumn.d.ts.map +1 -0
  145. package/dist/components/core/kanban/columns/SolidIdColumn.d.ts +4 -0
  146. package/dist/components/core/kanban/columns/SolidIdColumn.d.ts.map +1 -0
  147. package/dist/components/core/kanban/columns/SolidIntColumn.d.ts +4 -0
  148. package/dist/components/core/kanban/columns/SolidIntColumn.d.ts.map +1 -0
  149. package/dist/components/core/kanban/columns/SolidLongTextColumn.d.ts +4 -0
  150. package/dist/components/core/kanban/columns/SolidLongTextColumn.d.ts.map +1 -0
  151. package/dist/components/core/kanban/columns/SolidMediaMultipleColumn.d.ts +4 -0
  152. package/dist/components/core/kanban/columns/SolidMediaMultipleColumn.d.ts.map +1 -0
  153. package/dist/components/core/kanban/columns/SolidMediaSingleColumn.d.ts +4 -0
  154. package/dist/components/core/kanban/columns/SolidMediaSingleColumn.d.ts.map +1 -0
  155. package/dist/components/core/kanban/columns/SolidRelationColumn.d.ts +4 -0
  156. package/dist/components/core/kanban/columns/SolidRelationColumn.d.ts.map +1 -0
  157. package/dist/components/core/kanban/columns/SolidRichTextColumn.d.ts +4 -0
  158. package/dist/components/core/kanban/columns/SolidRichTextColumn.d.ts.map +1 -0
  159. package/dist/components/core/kanban/columns/SolidSelectionDynamicColumn.d.ts +4 -0
  160. package/dist/components/core/kanban/columns/SolidSelectionDynamicColumn.d.ts.map +1 -0
  161. package/dist/components/core/kanban/columns/SolidSelectionStaticColumn.d.ts +4 -0
  162. package/dist/components/core/kanban/columns/SolidSelectionStaticColumn.d.ts.map +1 -0
  163. package/dist/components/core/kanban/columns/SolidShortTextColumn.d.ts +4 -0
  164. package/dist/components/core/kanban/columns/SolidShortTextColumn.d.ts.map +1 -0
  165. package/dist/components/core/kanban/columns/SolidTimeColumn.d.ts +4 -0
  166. package/dist/components/core/kanban/columns/SolidTimeColumn.d.ts.map +1 -0
  167. package/dist/components/core/kanban/columns/SolidUuidColumn.d.ts +4 -0
  168. package/dist/components/core/kanban/columns/SolidUuidColumn.d.ts.map +1 -0
  169. package/dist/components/core/kanban/columns/relations/SolidRelationManyToOneColumn.d.ts +4 -0
  170. package/dist/components/core/kanban/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -0
  171. package/dist/components/core/list/SolidListView.d.ts +12 -0
  172. package/dist/components/core/list/SolidListView.d.ts.map +1 -0
  173. package/dist/components/core/list/SolidListViewColumn.d.ts +8 -0
  174. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -0
  175. package/dist/components/core/list/SolidListingHeader.d.ts +3 -0
  176. package/dist/components/core/list/SolidListingHeader.d.ts.map +1 -0
  177. package/dist/components/core/list/SolidManyToOneFilterElement.d.ts +2 -0
  178. package/dist/components/core/list/SolidManyToOneFilterElement.d.ts.map +1 -0
  179. package/dist/components/core/list/SolidSelectionDynamicFilterElement.d.ts +2 -0
  180. package/dist/components/core/list/SolidSelectionDynamicFilterElement.d.ts.map +1 -0
  181. package/dist/components/core/list/SolidSelectionStaticFilterElement.d.ts +2 -0
  182. package/dist/components/core/list/SolidSelectionStaticFilterElement.d.ts.map +1 -0
  183. package/dist/components/core/list/SolidVarInputsFilterElement.d.ts +12 -0
  184. package/dist/components/core/list/SolidVarInputsFilterElement.d.ts.map +1 -0
  185. package/dist/components/core/list/columns/SolidBigintColumn.d.ts +4 -0
  186. package/dist/components/core/list/columns/SolidBigintColumn.d.ts.map +1 -0
  187. package/dist/components/core/list/columns/SolidBooleanColumn.d.ts +4 -0
  188. package/dist/components/core/list/columns/SolidBooleanColumn.d.ts.map +1 -0
  189. package/dist/components/core/list/columns/SolidComputedColumn.d.ts +4 -0
  190. package/dist/components/core/list/columns/SolidComputedColumn.d.ts.map +1 -0
  191. package/dist/components/core/list/columns/SolidDateColumn.d.ts +9 -0
  192. package/dist/components/core/list/columns/SolidDateColumn.d.ts.map +1 -0
  193. package/dist/components/core/list/columns/SolidDatetimeColumn.d.ts +4 -0
  194. package/dist/components/core/list/columns/SolidDatetimeColumn.d.ts.map +1 -0
  195. package/dist/components/core/list/columns/SolidDecimalColumn.d.ts +4 -0
  196. package/dist/components/core/list/columns/SolidDecimalColumn.d.ts.map +1 -0
  197. package/dist/components/core/list/columns/SolidExternalIdColumn.d.ts +4 -0
  198. package/dist/components/core/list/columns/SolidExternalIdColumn.d.ts.map +1 -0
  199. package/dist/components/core/list/columns/SolidFloatColumn.d.ts +4 -0
  200. package/dist/components/core/list/columns/SolidFloatColumn.d.ts.map +1 -0
  201. package/dist/components/core/list/columns/SolidIdColumn.d.ts +4 -0
  202. package/dist/components/core/list/columns/SolidIdColumn.d.ts.map +1 -0
  203. package/dist/components/core/list/columns/SolidIntColumn.d.ts +4 -0
  204. package/dist/components/core/list/columns/SolidIntColumn.d.ts.map +1 -0
  205. package/dist/components/core/list/columns/SolidLongTextColumn.d.ts +4 -0
  206. package/dist/components/core/list/columns/SolidLongTextColumn.d.ts.map +1 -0
  207. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts +4 -0
  208. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -0
  209. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts +4 -0
  210. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -0
  211. package/dist/components/core/list/columns/SolidRelationColumn.d.ts +4 -0
  212. package/dist/components/core/list/columns/SolidRelationColumn.d.ts.map +1 -0
  213. package/dist/components/core/list/columns/SolidRichTextColumn.d.ts +4 -0
  214. package/dist/components/core/list/columns/SolidRichTextColumn.d.ts.map +1 -0
  215. package/dist/components/core/list/columns/SolidSelectionDynamicColumn.d.ts +4 -0
  216. package/dist/components/core/list/columns/SolidSelectionDynamicColumn.d.ts.map +1 -0
  217. package/dist/components/core/list/columns/SolidSelectionStaticColumn.d.ts +4 -0
  218. package/dist/components/core/list/columns/SolidSelectionStaticColumn.d.ts.map +1 -0
  219. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts +4 -0
  220. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -0
  221. package/dist/components/core/list/columns/SolidTimeColumn.d.ts +4 -0
  222. package/dist/components/core/list/columns/SolidTimeColumn.d.ts.map +1 -0
  223. package/dist/components/core/list/columns/SolidUuidColumn.d.ts +4 -0
  224. package/dist/components/core/list/columns/SolidUuidColumn.d.ts.map +1 -0
  225. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts +4 -0
  226. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -0
  227. package/dist/components/core/model/CreateModel.d.ts +3 -0
  228. package/dist/components/core/model/CreateModel.d.ts.map +1 -0
  229. package/dist/components/core/model/FieldMetaData.d.ts +3 -0
  230. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -0
  231. package/dist/components/core/model/FieldMetaDataForm.d.ts +3 -0
  232. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -0
  233. package/dist/components/core/model/FieldSelector.d.ts +3 -0
  234. package/dist/components/core/model/FieldSelector.d.ts.map +1 -0
  235. package/dist/components/core/model/ModelListViewData.d.ts +8 -0
  236. package/dist/components/core/model/ModelListViewData.d.ts.map +1 -0
  237. package/dist/components/core/model/ModelMetaData.d.ts +4 -0
  238. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -0
  239. package/dist/components/core/module/CreateModule.d.ts +3 -0
  240. package/dist/components/core/module/CreateModule.d.ts.map +1 -0
  241. package/dist/components/core/module/ModuleListViewData.d.ts +7 -0
  242. package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -0
  243. package/dist/components/core/users/CreateUser.d.ts +3 -0
  244. package/dist/components/core/users/CreateUser.d.ts.map +1 -0
  245. package/dist/components/core/users/CreateUserRole.d.ts +3 -0
  246. package/dist/components/core/users/CreateUserRole.d.ts.map +1 -0
  247. package/dist/components/core/users/UserListView.d.ts +2 -0
  248. package/dist/components/core/users/UserListView.d.ts.map +1 -0
  249. package/dist/components/layout/AdminSidebar.d.ts +3 -0
  250. package/dist/components/layout/AdminSidebar.d.ts.map +1 -0
  251. package/dist/components/layout/ButtonLoader.d.ts +3 -0
  252. package/dist/components/layout/ButtonLoader.d.ts.map +1 -0
  253. package/dist/components/layout/CustomPagination.d.ts +7 -0
  254. package/dist/components/layout/CustomPagination.d.ts.map +1 -0
  255. package/dist/components/layout/DashboardHeader.d.ts +3 -0
  256. package/dist/components/layout/DashboardHeader.d.ts.map +1 -0
  257. package/dist/components/layout/FilterMenu.d.ts +3 -0
  258. package/dist/components/layout/FilterMenu.d.ts.map +1 -0
  259. package/dist/components/layout/Footer.d.ts +3 -0
  260. package/dist/components/layout/Footer.d.ts.map +1 -0
  261. package/dist/components/layout/GlobalSearch.d.ts +2 -0
  262. package/dist/components/layout/GlobalSearch.d.ts.map +1 -0
  263. package/dist/components/layout/Header.d.ts +3 -0
  264. package/dist/components/layout/Header.d.ts.map +1 -0
  265. package/dist/components/layout/ListingHeader.d.ts +3 -0
  266. package/dist/components/layout/ListingHeader.d.ts.map +1 -0
  267. package/dist/components/layout/Loader.d.ts +3 -0
  268. package/dist/components/layout/Loader.d.ts.map +1 -0
  269. package/dist/components/layout/UserSidebar.d.ts +3 -0
  270. package/dist/components/layout/UserSidebar.d.ts.map +1 -0
  271. package/dist/components/layout/navbar-one.d.ts +3 -0
  272. package/dist/components/layout/navbar-one.d.ts.map +1 -0
  273. package/dist/components/layout/navbar-two-menu.d.ts +3 -0
  274. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -0
  275. package/dist/components/layout/navbar-two.d.ts +3 -0
  276. package/dist/components/layout/navbar-two.d.ts.map +1 -0
  277. package/dist/components/layout/user-profile-menu.d.ts +3 -0
  278. package/dist/components/layout/user-profile-menu.d.ts.map +1 -0
  279. package/dist/components/layout/user-profile.d.ts +3 -0
  280. package/dist/components/layout/user-profile.d.ts.map +1 -0
  281. package/dist/components/modelsComponents/filterIcon.d.ts +2 -0
  282. package/dist/components/modelsComponents/filterIcon.d.ts.map +1 -0
  283. package/dist/components/tables/DemoData.d.ts +23 -0
  284. package/dist/components/tables/DemoData.d.ts.map +1 -0
  285. package/dist/components/tables/DynamicTable.d.ts +6 -0
  286. package/dist/components/tables/DynamicTable.d.ts.map +1 -0
  287. package/dist/components/tables/ListViewTable.d.ts +12 -0
  288. package/dist/components/tables/ListViewTable.d.ts.map +1 -0
  289. package/dist/helpers/ToastContainer.d.ts +4 -0
  290. package/dist/helpers/ToastContainer.d.ts.map +1 -0
  291. package/dist/helpers/authHeader.d.ts +7 -0
  292. package/dist/helpers/authHeader.d.ts.map +1 -0
  293. package/dist/helpers/countries.d.ts +6 -0
  294. package/dist/helpers/countries.d.ts.map +1 -0
  295. package/dist/helpers/helpers.d.ts +10 -0
  296. package/dist/helpers/helpers.d.ts.map +1 -0
  297. package/dist/helpers/menu.d.ts +35 -0
  298. package/dist/helpers/menu.d.ts.map +1 -0
  299. package/dist/helpers/permissions.d.ts +4 -0
  300. package/dist/helpers/permissions.d.ts.map +1 -0
  301. package/dist/helpers/revalidate.d.ts +2 -0
  302. package/dist/helpers/revalidate.d.ts.map +1 -0
  303. package/dist/index.d.ts +182 -0
  304. package/dist/index.d.ts.map +1 -0
  305. package/dist/index.js +45552 -0
  306. package/dist/index.js.map +1 -0
  307. package/dist/redux/api/articleApi.d.ts +19 -0
  308. package/dist/redux/api/articleApi.d.ts.map +1 -0
  309. package/dist/redux/api/authApi.d.ts +9 -0
  310. package/dist/redux/api/authApi.d.ts.map +1 -0
  311. package/dist/redux/api/automationApi.d.ts +19 -0
  312. package/dist/redux/api/automationApi.d.ts.map +1 -0
  313. package/dist/redux/api/categoryApi.d.ts +10 -0
  314. package/dist/redux/api/categoryApi.d.ts.map +1 -0
  315. package/dist/redux/api/cityApi.d.ts +36 -0
  316. package/dist/redux/api/cityApi.d.ts.map +1 -0
  317. package/dist/redux/api/cmsBannerImageApi.d.ts +19 -0
  318. package/dist/redux/api/cmsBannerImageApi.d.ts.map +1 -0
  319. package/dist/redux/api/countryApi.d.ts +39 -0
  320. package/dist/redux/api/countryApi.d.ts.map +1 -0
  321. package/dist/redux/api/fetchBaseQuery.d.ts +2 -0
  322. package/dist/redux/api/fetchBaseQuery.d.ts.map +1 -0
  323. package/dist/redux/api/fieldApi.d.ts +20 -0
  324. package/dist/redux/api/fieldApi.d.ts.map +1 -0
  325. package/dist/redux/api/mediaApi.d.ts +19 -0
  326. package/dist/redux/api/mediaApi.d.ts.map +1 -0
  327. package/dist/redux/api/mediaStorageProviderApi.d.ts +19 -0
  328. package/dist/redux/api/mediaStorageProviderApi.d.ts.map +1 -0
  329. package/dist/redux/api/menuApi.d.ts +19 -0
  330. package/dist/redux/api/menuApi.d.ts.map +1 -0
  331. package/dist/redux/api/menuItemsApi.d.ts +19 -0
  332. package/dist/redux/api/menuItemsApi.d.ts.map +1 -0
  333. package/dist/redux/api/modelApi.d.ts +20 -0
  334. package/dist/redux/api/modelApi.d.ts.map +1 -0
  335. package/dist/redux/api/moduleApi.d.ts +22 -0
  336. package/dist/redux/api/moduleApi.d.ts.map +1 -0
  337. package/dist/redux/api/orderAttributeApi.d.ts +8 -0
  338. package/dist/redux/api/orderAttributeApi.d.ts.map +1 -0
  339. package/dist/redux/api/permissionApi.d.ts +15 -0
  340. package/dist/redux/api/permissionApi.d.ts.map +1 -0
  341. package/dist/redux/api/pincodeApi.d.ts +36 -0
  342. package/dist/redux/api/pincodeApi.d.ts.map +1 -0
  343. package/dist/redux/api/productData.d.ts +51 -0
  344. package/dist/redux/api/productData.d.ts.map +1 -0
  345. package/dist/redux/api/radixExtraModelAttributeApi.d.ts +8 -0
  346. package/dist/redux/api/radixExtraModelAttributeApi.d.ts.map +1 -0
  347. package/dist/redux/api/radixModelMetadataApi.d.ts +20 -0
  348. package/dist/redux/api/radixModelMetadataApi.d.ts.map +1 -0
  349. package/dist/redux/api/radixModelsApi.d.ts +13 -0
  350. package/dist/redux/api/radixModelsApi.d.ts.map +1 -0
  351. package/dist/redux/api/ratingApi.d.ts +19 -0
  352. package/dist/redux/api/ratingApi.d.ts.map +1 -0
  353. package/dist/redux/api/reviewApi.d.ts +19 -0
  354. package/dist/redux/api/reviewApi.d.ts.map +1 -0
  355. package/dist/redux/api/roleApi.d.ts +10 -0
  356. package/dist/redux/api/roleApi.d.ts.map +1 -0
  357. package/dist/redux/api/solidActionApi.d.ts +19 -0
  358. package/dist/redux/api/solidActionApi.d.ts.map +1 -0
  359. package/dist/redux/api/solidEntityApi.d.ts +18 -0
  360. package/dist/redux/api/solidEntityApi.d.ts.map +1 -0
  361. package/dist/redux/api/solidMenuApi.d.ts +20 -0
  362. package/dist/redux/api/solidMenuApi.d.ts.map +1 -0
  363. package/dist/redux/api/solidViewApi.d.ts +20 -0
  364. package/dist/redux/api/solidViewApi.d.ts.map +1 -0
  365. package/dist/redux/api/stateApi.d.ts +36 -0
  366. package/dist/redux/api/stateApi.d.ts.map +1 -0
  367. package/dist/redux/api/tagApi.d.ts +19 -0
  368. package/dist/redux/api/tagApi.d.ts.map +1 -0
  369. package/dist/redux/api/tagGroupApi.d.ts +19 -0
  370. package/dist/redux/api/tagGroupApi.d.ts.map +1 -0
  371. package/dist/redux/api/userApi.d.ts +17 -0
  372. package/dist/redux/api/userApi.d.ts.map +1 -0
  373. package/dist/redux/features/authSlice.d.ts +6 -0
  374. package/dist/redux/features/authSlice.d.ts.map +1 -0
  375. package/dist/redux/features/dataViewSlice.d.ts +7 -0
  376. package/dist/redux/features/dataViewSlice.d.ts.map +1 -0
  377. package/dist/redux/features/navbarSlice.d.ts +6 -0
  378. package/dist/redux/features/navbarSlice.d.ts.map +1 -0
  379. package/dist/redux/features/popupSlice.d.ts +7 -0
  380. package/dist/redux/features/popupSlice.d.ts.map +1 -0
  381. package/dist/redux/features/themeSlice.d.ts +6 -0
  382. package/dist/redux/features/themeSlice.d.ts.map +1 -0
  383. package/dist/redux/features/userSlice.d.ts +13 -0
  384. package/dist/redux/features/userSlice.d.ts.map +1 -0
  385. package/dist/redux/hooks.d.ts +2 -0
  386. package/dist/redux/hooks.d.ts.map +1 -0
  387. package/dist/redux/store.d.ts +375 -0
  388. package/dist/redux/store.d.ts.map +1 -0
  389. package/package.json +114 -0
  390. package/rollup.config.mjs +45 -0
  391. package/solidstarters-solid-core-ui-0.1.24.tgz +0 -0
  392. package/src/components/CustomFooter/CustomFooter.tsx +263 -0
  393. package/src/components/CustomFooter/FooterForm.tsx +18 -0
  394. package/src/components/CustomHeader/CallIcon.tsx +19 -0
  395. package/src/components/CustomHeader/CustomDropdown.tsx +175 -0
  396. package/src/components/CustomHeader/CustomHeader.tsx +64 -0
  397. package/src/components/CustomHeader/EmailIcon.tsx +11 -0
  398. package/src/components/CustomHeader/HeaderCart.tsx +14 -0
  399. package/src/components/CustomHeader/productNavData.tsx +179 -0
  400. package/src/components/FormView/DetailsViews.tsx +46 -0
  401. package/src/components/FormView/OrderAddressDetails.tsx +69 -0
  402. package/src/components/FormView/OrderPaymentDetails.tsx +17 -0
  403. package/src/components/FormView/OrderTableDetails.tsx +35 -0
  404. package/src/components/FormView/OrderedProductDetail.tsx +21 -0
  405. package/src/components/Tag/CustomTag.tsx +49 -0
  406. package/src/components/auth/Login.tsx +155 -0
  407. package/src/components/auth/Register.tsx +239 -0
  408. package/src/components/common/AuthBanner.tsx +40 -0
  409. package/src/components/common/AutoCompleteField.tsx +74 -0
  410. package/src/components/common/CancelButton.tsx +42 -0
  411. package/src/components/common/CodeEditor.tsx +24 -0
  412. package/src/components/common/CreateButton.tsx +16 -0
  413. package/src/components/common/DropzonePlaceholder.tsx +9 -0
  414. package/src/components/common/DropzoneUpload.tsx +9 -0
  415. package/src/components/common/FilterComponent.tsx +427 -0
  416. package/src/components/common/HeaderDynamicTitles.tsx +11 -0
  417. package/src/components/common/MarkdownViewer.tsx +14 -0
  418. package/src/components/common/MultipleSelectAutoCompleteField.tsx +61 -0
  419. package/src/components/common/SingleSelectAutoCompleteField.tsx +64 -0
  420. package/src/components/common/SocialMediaLogin.tsx +44 -0
  421. package/src/components/core/common/SolidConfigureLayoutElement.tsx +24 -0
  422. package/src/components/core/common/SolidCreateButton.tsx +19 -0
  423. package/src/components/core/common/SolidGlobalSearchElement.tsx +37 -0
  424. package/src/components/core/common/SolidSearchBox.tsx +17 -0
  425. package/src/components/core/field/FieldListViewData.tsx +312 -0
  426. package/src/components/core/form/SolidFormView.tsx +821 -0
  427. package/src/components/core/form/fields/ISolidField.tsx +64 -0
  428. package/src/components/core/form/fields/SolidBooleanField.tsx +112 -0
  429. package/src/components/core/form/fields/SolidDateField.tsx +89 -0
  430. package/src/components/core/form/fields/SolidDateTimeField.tsx +87 -0
  431. package/src/components/core/form/fields/SolidDecimalField.tsx +85 -0
  432. package/src/components/core/form/fields/SolidIntegerField.tsx +85 -0
  433. package/src/components/core/form/fields/SolidJsonField.tsx +79 -0
  434. package/src/components/core/form/fields/SolidLongTextField.tsx +99 -0
  435. package/src/components/core/form/fields/SolidMediaMultipleField.tsx +246 -0
  436. package/src/components/core/form/fields/SolidMediaSingleField.tsx +227 -0
  437. package/src/components/core/form/fields/SolidRelationField.tsx +53 -0
  438. package/src/components/core/form/fields/SolidRichTextField.tsx +97 -0
  439. package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +122 -0
  440. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +117 -0
  441. package/src/components/core/form/fields/SolidShortTextField.tsx +99 -0
  442. package/src/components/core/form/fields/SolidTimeField.tsx +87 -0
  443. package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +435 -0
  444. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +137 -0
  445. package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +184 -0
  446. package/src/components/core/kanban/KanbanBoard.tsx +116 -0
  447. package/src/components/core/kanban/KanbanCard.tsx +159 -0
  448. package/src/components/core/kanban/KanbanColumn.tsx +124 -0
  449. package/src/components/core/kanban/SolidKanbanFilter.tsx +104 -0
  450. package/src/components/core/kanban/SolidKanbanView.tsx +660 -0
  451. package/src/components/core/kanban/SolidKanbanViewSearchColumn.tsx +131 -0
  452. package/src/components/core/kanban/SolidManyToOneFilterElement.tsx +56 -0
  453. package/src/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +49 -0
  454. package/src/components/core/kanban/SolidSelectionStaticFilterElement.tsx +31 -0
  455. package/src/components/core/kanban/SolidVarInputsFilterElement.tsx +183 -0
  456. package/src/components/core/kanban/columns/SolidBigintColumn.tsx +8 -0
  457. package/src/components/core/kanban/columns/SolidBooleanColumn.tsx +49 -0
  458. package/src/components/core/kanban/columns/SolidComputedColumn.tsx +22 -0
  459. package/src/components/core/kanban/columns/SolidDateColumn.tsx +58 -0
  460. package/src/components/core/kanban/columns/SolidDatetimeColumn.tsx +45 -0
  461. package/src/components/core/kanban/columns/SolidDecimalColumn.tsx +8 -0
  462. package/src/components/core/kanban/columns/SolidExternalIdColumn.tsx +46 -0
  463. package/src/components/core/kanban/columns/SolidFloatColumn.tsx +8 -0
  464. package/src/components/core/kanban/columns/SolidIdColumn.tsx +46 -0
  465. package/src/components/core/kanban/columns/SolidIntColumn.tsx +56 -0
  466. package/src/components/core/kanban/columns/SolidLongTextColumn.tsx +8 -0
  467. package/src/components/core/kanban/columns/SolidMediaMultipleColumn.tsx +54 -0
  468. package/src/components/core/kanban/columns/SolidMediaSingleColumn.tsx +56 -0
  469. package/src/components/core/kanban/columns/SolidRelationColumn.tsx +12 -0
  470. package/src/components/core/kanban/columns/SolidRichTextColumn.tsx +8 -0
  471. package/src/components/core/kanban/columns/SolidSelectionDynamicColumn.tsx +46 -0
  472. package/src/components/core/kanban/columns/SolidSelectionStaticColumn.tsx +47 -0
  473. package/src/components/core/kanban/columns/SolidShortTextColumn.tsx +53 -0
  474. package/src/components/core/kanban/columns/SolidTimeColumn.tsx +42 -0
  475. package/src/components/core/kanban/columns/SolidUuidColumn.tsx +44 -0
  476. package/src/components/core/kanban/columns/relations/SolidRelationManyToOneColumn.tsx +79 -0
  477. package/src/components/core/list/SolidListView.tsx +569 -0
  478. package/src/components/core/list/SolidListViewColumn.tsx +161 -0
  479. package/src/components/core/list/SolidListingHeader.tsx +41 -0
  480. package/src/components/core/list/SolidManyToOneFilterElement.tsx +56 -0
  481. package/src/components/core/list/SolidSelectionDynamicFilterElement.tsx +49 -0
  482. package/src/components/core/list/SolidSelectionStaticFilterElement.tsx +31 -0
  483. package/src/components/core/list/SolidVarInputsFilterElement.tsx +183 -0
  484. package/src/components/core/list/columns/SolidBigintColumn.tsx +8 -0
  485. package/src/components/core/list/columns/SolidBooleanColumn.tsx +60 -0
  486. package/src/components/core/list/columns/SolidComputedColumn.tsx +22 -0
  487. package/src/components/core/list/columns/SolidDateColumn.tsx +63 -0
  488. package/src/components/core/list/columns/SolidDatetimeColumn.tsx +51 -0
  489. package/src/components/core/list/columns/SolidDecimalColumn.tsx +8 -0
  490. package/src/components/core/list/columns/SolidExternalIdColumn.tsx +51 -0
  491. package/src/components/core/list/columns/SolidFloatColumn.tsx +8 -0
  492. package/src/components/core/list/columns/SolidIdColumn.tsx +52 -0
  493. package/src/components/core/list/columns/SolidIntColumn.tsx +60 -0
  494. package/src/components/core/list/columns/SolidLongTextColumn.tsx +8 -0
  495. package/src/components/core/list/columns/SolidMediaMultipleColumn.tsx +29 -0
  496. package/src/components/core/list/columns/SolidMediaSingleColumn.tsx +29 -0
  497. package/src/components/core/list/columns/SolidRelationColumn.tsx +12 -0
  498. package/src/components/core/list/columns/SolidRichTextColumn.tsx +8 -0
  499. package/src/components/core/list/columns/SolidSelectionDynamicColumn.tsx +52 -0
  500. package/src/components/core/list/columns/SolidSelectionStaticColumn.tsx +53 -0
  501. package/src/components/core/list/columns/SolidShortTextColumn.tsx +60 -0
  502. package/src/components/core/list/columns/SolidTimeColumn.tsx +51 -0
  503. package/src/components/core/list/columns/SolidUuidColumn.tsx +51 -0
  504. package/src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +70 -0
  505. package/src/components/core/model/CreateModel.tsx +340 -0
  506. package/src/components/core/model/FieldMetaData.tsx +148 -0
  507. package/src/components/core/model/FieldMetaDataForm.tsx +2877 -0
  508. package/src/components/core/model/FieldSelector.tsx +67 -0
  509. package/src/components/core/model/ModelListViewData.tsx +383 -0
  510. package/src/components/core/model/ModelMetaData.tsx +777 -0
  511. package/src/components/core/module/CreateModule.tsx +577 -0
  512. package/src/components/core/module/ModuleListViewData.tsx +429 -0
  513. package/src/components/core/users/CreateUser.tsx +415 -0
  514. package/src/components/core/users/CreateUserRole.tsx +209 -0
  515. package/src/components/core/users/UserListView.tsx +374 -0
  516. package/src/components/layout/AdminSidebar.tsx +65 -0
  517. package/src/components/layout/ButtonLoader.tsx +7 -0
  518. package/src/components/layout/CustomPagination.tsx +55 -0
  519. package/src/components/layout/DashboardHeader.tsx +88 -0
  520. package/src/components/layout/FilterMenu.tsx +122 -0
  521. package/src/components/layout/Footer.tsx +12 -0
  522. package/src/components/layout/GlobalSearch.tsx +36 -0
  523. package/src/components/layout/Header.tsx +8 -0
  524. package/src/components/layout/ListingHeader.tsx +203 -0
  525. package/src/components/layout/Loader.tsx +15 -0
  526. package/src/components/layout/UserSidebar.tsx +53 -0
  527. package/src/components/layout/navbar-one.tsx +258 -0
  528. package/src/components/layout/navbar-two-menu.tsx +64 -0
  529. package/src/components/layout/navbar-two.tsx +36 -0
  530. package/src/components/layout/user-profile-menu.tsx +214 -0
  531. package/src/components/layout/user-profile.tsx +6 -0
  532. package/src/components/modelsComponents/filterIcon.tsx +9 -0
  533. package/src/components/tables/DemoData.tsx +317 -0
  534. package/src/components/tables/DynamicTable.tsx +56 -0
  535. package/src/components/tables/ListViewTable.tsx +155 -0
  536. package/src/helpers/ToastContainer.tsx +92 -0
  537. package/src/helpers/authHeader.ts +19 -0
  538. package/src/helpers/countries.tsx +259 -0
  539. package/src/helpers/helpers.ts +39 -0
  540. package/src/helpers/menu.tsx +670 -0
  541. package/src/helpers/permissions.ts +15 -0
  542. package/src/helpers/revalidate.ts +6 -0
  543. package/src/index.ts +630 -0
  544. package/src/redux/api/articleApi.ts +55 -0
  545. package/src/redux/api/authApi.ts +60 -0
  546. package/src/redux/api/automationApi.ts +55 -0
  547. package/src/redux/api/categoryApi.tsx +46 -0
  548. package/src/redux/api/cityApi.tsx +56 -0
  549. package/src/redux/api/cmsBannerImageApi.tsx +55 -0
  550. package/src/redux/api/countryApi.tsx +56 -0
  551. package/src/redux/api/fetchBaseQuery.tsx +15 -0
  552. package/src/redux/api/fieldApi.ts +78 -0
  553. package/src/redux/api/mediaApi.ts +55 -0
  554. package/src/redux/api/mediaStorageProviderApi.ts +55 -0
  555. package/src/redux/api/menuApi.tsx +55 -0
  556. package/src/redux/api/menuItemsApi.tsx +56 -0
  557. package/src/redux/api/modelApi.ts +70 -0
  558. package/src/redux/api/moduleApi.ts +72 -0
  559. package/src/redux/api/orderAttributeApi.tsx +37 -0
  560. package/src/redux/api/permissionApi.ts +32 -0
  561. package/src/redux/api/pincodeApi.tsx +56 -0
  562. package/src/redux/api/productData.tsx +87 -0
  563. package/src/redux/api/radixExtraModelAttributeApi.tsx +37 -0
  564. package/src/redux/api/radixModelMetadataApi.tsx +62 -0
  565. package/src/redux/api/radixModelsApi.tsx +64 -0
  566. package/src/redux/api/ratingApi.ts +55 -0
  567. package/src/redux/api/reviewApi.ts +55 -0
  568. package/src/redux/api/roleApi.ts +58 -0
  569. package/src/redux/api/solidActionApi.ts +66 -0
  570. package/src/redux/api/solidEntityApi.tsx +86 -0
  571. package/src/redux/api/solidMenuApi.ts +71 -0
  572. package/src/redux/api/solidViewApi.ts +72 -0
  573. package/src/redux/api/stateApi.tsx +56 -0
  574. package/src/redux/api/tagApi.ts +55 -0
  575. package/src/redux/api/tagGroupApi.tsx +55 -0
  576. package/src/redux/api/userApi.ts +120 -0
  577. package/src/redux/features/authSlice.ts +19 -0
  578. package/src/redux/features/dataViewSlice.ts +26 -0
  579. package/src/redux/features/navbarSlice.ts +21 -0
  580. package/src/redux/features/popupSlice.ts +27 -0
  581. package/src/redux/features/themeSlice.ts +17 -0
  582. package/src/redux/features/userSlice.ts +28 -0
  583. package/src/types/index.d.ts +7 -0
  584. package/src/types/next.d.ts +46 -0
  585. package/tsconfig.json +37 -0
@@ -0,0 +1,2877 @@
1
+ import React, { useEffect, useRef, useState } from "react";
2
+ import { useFormik } from "formik";
3
+ import * as Yup from "yup";
4
+ import { InputText } from "primereact/inputtext";
5
+ import { Dropdown, DropdownChangeEvent } from "primereact/dropdown";
6
+ import { Button } from "primereact/button";
7
+ import { classNames } from "primereact/utils";
8
+ import { Message } from "primereact/message";
9
+ import { Toast } from "primereact/toast";
10
+ import { usePathname } from "next/navigation";
11
+ import { SelectButton } from "primereact/selectbutton";
12
+ import { InputTextarea } from "primereact/inputtextarea";
13
+ import { TabPanel, TabView } from "primereact/tabview";
14
+ import { AutoComplete } from "primereact/autocomplete";
15
+ import { Checkbox } from "primereact/checkbox";
16
+ import { useGetFieldDefaultMetaDataQuery } from "@/redux/api/fieldApi";
17
+ import { InputNumber } from "primereact/inputnumber";
18
+ import { Calendar } from "primereact/calendar";
19
+ import CodeEditor from "@/components/common/CodeEditor";
20
+ import qs from "qs";
21
+ import { useLazyGetMediaStorageProvidersQuery } from "@/redux/api/mediaStorageProviderApi";
22
+ import FieldSelector from "./FieldSelector";
23
+ import { capitalize } from "lodash";
24
+ import { getSingularAndPlural } from "@/helpers/helpers";
25
+ import { RadioButton } from "primereact/radiobutton";
26
+ import { useLazyGetModelsQuery } from "@/redux/api/modelApi";
27
+ import { useLazyGetmodulesQuery } from "@/redux/api/moduleApi";
28
+ import { SingleSelectAutoCompleteField } from "@/components/common/SingleSelectAutoCompleteField";
29
+ import { MultiSelect } from "primereact/multiselect";
30
+ import { Dialog } from "primereact/dialog";
31
+
32
+
33
+
34
+ enum SolidFieldType {
35
+ // numeric types
36
+ int = 'int',
37
+ bigint = 'bigint',
38
+ float = 'float',
39
+ // double = 'double',
40
+ decimal = 'decimal',
41
+
42
+ // text types
43
+ shortText = 'shortText',
44
+ longtext = 'longText',
45
+ richText = 'richText',
46
+ json = 'json',
47
+
48
+ // boolean types
49
+ boolean = 'boolean',
50
+
51
+ // date
52
+ date = 'date',
53
+ datetime = 'datetime',
54
+ time = 'time',
55
+
56
+ // relation
57
+ relation = 'relation',
58
+
59
+ // media
60
+ mediaSingle = 'mediaSingle',
61
+ mediaMultiple = 'mediaMultiple',
62
+
63
+ email = 'email',
64
+ password = 'password',
65
+
66
+ // selection
67
+ selectionStatic = 'selectionStatic',
68
+ selectionDynamic = 'selectionDynamic',
69
+
70
+ computed = 'computed',
71
+
72
+ uuid = 'uuid'
73
+ }
74
+
75
+ const SelectionStaticValues = ({ enumValue, onUpdate, onDelete, onAdd }: any) => {
76
+ const [value, display] = enumValue.split(":");
77
+
78
+ const handleValueChange = (newValue: string) => {
79
+ onUpdate(`${newValue}:${display || ""}`);
80
+ };
81
+
82
+ const handleDisplayChange = (newDisplay: string) => {
83
+ onUpdate(`${value || ""}:${newDisplay}`);
84
+ };
85
+
86
+ return (
87
+ <div className="flex align-items-center gap-2">
88
+
89
+ {/* Input field for Value */}
90
+ <InputText
91
+ value={value || ""}
92
+ onChange={(e) => handleValueChange(e.target.value)}
93
+ placeholder="Value"
94
+ className="p-inputtext-sm small-input w-full"
95
+ />
96
+
97
+ {/* Input field for Display */}
98
+ <InputText
99
+ value={display || ""}
100
+ onChange={(e) => handleDisplayChange(e.target.value)}
101
+ placeholder="Display"
102
+ className="p-inputtext-sm small-input w-full"
103
+ />
104
+
105
+
106
+
107
+ {/* Plus Button to add a new row */}
108
+ <Button
109
+ icon="pi pi-plus"
110
+ size="small"
111
+ className="small-button"
112
+ onClick={onAdd}
113
+ type="button"
114
+ />
115
+
116
+ {/* Trash Button to delete the row */}
117
+ <Button
118
+ icon="pi pi-trash"
119
+ size="small"
120
+ className="small-button"
121
+ onClick={onDelete}
122
+ outlined
123
+ severity="danger"
124
+ type="button"
125
+ />
126
+ </div>
127
+ );
128
+
129
+ }
130
+
131
+ const fieldBasedPayloadFormating = (values: any, currentFields: string[], fieldMetaData: any) => {
132
+ // const booleanFields: string | any[] = [
133
+ // "isSystem",
134
+ // "defaultValue",
135
+ // "required",
136
+ // "unique",
137
+ // "encrypt",
138
+ // "index",
139
+ // "private",
140
+ // "relationCreateInverse"];
141
+ const transformedPayload = currentFields.reduce((acc: any, key: any) => {
142
+ acc[key] = values[key]; // Set key and its value as the same string
143
+ // if (booleanFields.includes(acc[key])) {
144
+ // acc[key] = values[key] == "false" ? "" : true
145
+ // }
146
+ return acc;
147
+ }, {});
148
+
149
+ transformedPayload.displayName = transformedPayload.displayName.trim()
150
+
151
+ transformedPayload.identifier = fieldMetaData ? fieldMetaData.identifier : Date.now();
152
+ if (fieldMetaData?.id) {
153
+ transformedPayload.id = fieldMetaData.id
154
+ }
155
+ if (currentFields.includes("mediaStorageProviderId")) {
156
+ transformedPayload.mediaStorageProvider = values.mediaStorageProvider
157
+ }
158
+ if (currentFields.includes("selectionDynamicProviderCtxt")) {
159
+ const prettified = JSON.stringify(JSON.parse(values.selectionDynamicProviderCtxt), null, 2);
160
+
161
+ transformedPayload.selectionDynamicProviderCtxt = prettified
162
+ }
163
+
164
+ if (currentFields.includes("computedFieldValueProviderCtxt")) {
165
+ const prettified = JSON.stringify(JSON.parse(values.computedFieldValueProviderCtxt), null, 2);
166
+ transformedPayload.computedFieldValueProviderCtxt = prettified
167
+ }
168
+ if (currentFields.includes("relationCreateInverse")) {
169
+ transformedPayload.relationCreateInverse = values.relationCreateInverse == "false" ? "" : true
170
+ }
171
+
172
+
173
+
174
+ return transformedPayload
175
+
176
+ }
177
+
178
+ function fetchCurrentFields(solidFieldType: any, fieldDefaultMetaData: any) {
179
+
180
+ if (solidFieldType) {
181
+ const allowedFields = fieldDefaultMetaData?.data?.fieldTypes.filter((e: any) => e.fieldType === solidFieldType);
182
+ if (allowedFields.length > 0) {
183
+ return allowedFields[0].fields
184
+ }
185
+
186
+ }
187
+ return [
188
+ "name",
189
+ "displayName",
190
+ "type",
191
+ "ormType",
192
+ "required",
193
+ "unique",
194
+ "index",
195
+ "private",
196
+ "encrypt",
197
+ ];
198
+
199
+ }
200
+
201
+ const createValidationSchema = (currentFields: any, selectedType: any, allFields: any, fieldMetaData: any, encryptState: any) => {
202
+
203
+ let reservedNames;
204
+
205
+ if (fieldMetaData) {
206
+ reservedNames = allFields.length > 0 ? allFields.filter((i: any) => i.id !== fieldMetaData.id).map((f: any) => f.name) : [];
207
+ } else {
208
+
209
+ reservedNames = allFields.length > 0 ? allFields.map((f: any) => f.name) : [];
210
+ }
211
+
212
+
213
+
214
+ const schema = {
215
+ name: Yup.string()
216
+ // .matches(/^[a-z]+(-[a-z]+)*$/,"Invalid format. Use lowercase letters and hyphens only.")
217
+ .notOneOf(reservedNames, "Name Already in use. Please choose a different name.")
218
+ .required("Name is required."),
219
+ displayName: Yup.string().required("Display Name is required"),
220
+ description: Yup.string().nullable(),
221
+ type: Yup.string().required("Type is required"),
222
+ isSystem: Yup.boolean(),
223
+ // Conditionally add validation rules based on `currentFields`
224
+ ...(currentFields.includes("ormType") && {
225
+ ormType: Yup.string().required("Orm Type is required"),
226
+ }),
227
+ ...(currentFields.includes("length") && {
228
+ length: Yup.number().typeError("Length must be an integer").nullable(),
229
+ }),
230
+ // ...(currentFields.includes("defaultValue") && {
231
+ // defaultValue: Yup.string().required("Default Value is required"),
232
+ // }),
233
+ // Conditionally validate defaultValue based on SolidFieldType
234
+ ...(currentFields.includes("defaultValue") && {
235
+ defaultValue: Yup.mixed().nullable().when("type", (type: any) => {
236
+ switch (selectedType.value) {
237
+ case "int":
238
+ case "bigint":
239
+ return Yup.number().nullable().typeError("Default value must be an integer")
240
+ .integer("Default value must be an integer");
241
+ case "float":
242
+ case "decimal":
243
+ return Yup.number().nullable().typeError("Default value must be an integer")
244
+ case "shortText":
245
+ case "longText":
246
+ case "richText":
247
+ case "json":
248
+ return Yup.string().nullable().typeError("Default value must be an String")
249
+ case "boolean":
250
+ return Yup.boolean().nullable().typeError("Default value must be a boolean")
251
+ case "date":
252
+ case "datetime":
253
+ case "time":
254
+ return Yup.date().nullable().typeError("Default value must be an Date")
255
+ default:
256
+ return Yup.mixed().nullable(); // Default fallback if no match
257
+ }
258
+ }),
259
+ }),
260
+
261
+ // Add more conditional fields as needed
262
+
263
+ ...(currentFields.includes("regexPattern") && {
264
+ regexPattern: Yup.string(),
265
+ regexPatternNotMatchingErrorMsg: Yup.string(),
266
+ }),
267
+ ...(currentFields.includes("required") && {
268
+ required: Yup.boolean(),
269
+ }),
270
+ ...(currentFields.includes("unique") && {
271
+ unique: Yup.boolean(),
272
+ }),
273
+ ...(currentFields.includes("encrypt") && {
274
+ encrypt: Yup.boolean(),
275
+ }),
276
+ ...(currentFields.includes("encryptionType") && encryptState == true && {
277
+ encryptionType: Yup.string().required(
278
+ "Encryption Type Value is required"
279
+ ),
280
+ }),
281
+ ...(currentFields.includes("decryptWhen") && encryptState == true && {
282
+
283
+ decryptWhen: Yup.string().required("Decrypt When Value is required"),
284
+ }),
285
+ ...(currentFields.includes("index") && {
286
+ index: Yup.boolean(),
287
+ }),
288
+ // ...(currentFields.includes("min") && {
289
+ // min: Yup.number().required("Min is required"),
290
+ // }),
291
+ ...(currentFields.includes("min") && {
292
+ min: Yup.mixed().nullable()
293
+ .when("type", (type: any) => {
294
+ switch (selectedType.value) {
295
+ case "int":
296
+ return Yup.number().nullable().typeError("Min must be an integer")
297
+ .integer("Min must be an integer");
298
+ case "decimal":
299
+ case "shortText":
300
+ case "longText":
301
+ case "richText":
302
+ case "json":
303
+ return Yup.number().nullable().typeError("Min must be an integer");
304
+ default:
305
+ return Yup.mixed().nullable().nullable(); // Default fallback if no match
306
+ }
307
+ }),
308
+ }),
309
+ // ...(currentFields.includes("max") && {
310
+ // max: Yup.number().required("Max is required"),
311
+ // }),
312
+ ...(currentFields.includes("max") && {
313
+ max: Yup.mixed()
314
+ .when("type", (type: any) => {
315
+ switch (selectedType.value) {
316
+ case "int":
317
+ return Yup.number().nullable().typeError("Max must be an integer")
318
+ .integer("Max must be an integer")
319
+ .test(
320
+ "greater-than-min",
321
+ "Max must be greater than Min",
322
+ function (value) {
323
+ const { min } = this.parent; // Access sibling field 'min'
324
+ if (min != null && value == null) {
325
+ // Trigger error if Min is filled but Max is empty
326
+ return this.createError({
327
+ message: "Max is required if Min is specified",
328
+ });
329
+ }
330
+ return value == null || value > min; // Validate only if Max exists
331
+ }
332
+ );
333
+
334
+
335
+ case "decimal":
336
+ case "shortText":
337
+ case "longText":
338
+ case "richText":
339
+ case "json":
340
+ return Yup.number().nullable().typeError("Max must be an integer")
341
+ .test(
342
+ "greater-than-min",
343
+ "Max must be greater than Min",
344
+ function (value) {
345
+ const { min } = this.parent; // Access sibling field 'min'
346
+ if (min != null && value == null) {
347
+ // Trigger error if Min is filled but Max is empty
348
+ return this.createError({
349
+ message: "Max is required if Min is specified",
350
+ });
351
+ }
352
+ return value == null || value > min; // Validate only if Max exists
353
+ }
354
+ );
355
+
356
+
357
+ default:
358
+ return Yup.mixed().nullable().nullable(); // Default fallback if no match
359
+ }
360
+ }),
361
+ }),
362
+ ...(currentFields.includes("private") && {
363
+ private: Yup.boolean(),
364
+ }),
365
+ ...(currentFields.includes("mediaTypes") && {
366
+ mediaTypes: Yup.mixed().required("Media Types must be an array").required("Media Types is required"),
367
+ }),
368
+
369
+ ...(currentFields.includes("mediaMaxSizeKb") && {
370
+ mediaMaxSizeKb: Yup.number().required("Media Max Size is required"),
371
+ }),
372
+ ...(currentFields.includes("mediaStorageProviderId") && {
373
+ mediaStorageProviderId: Yup.number().required(
374
+ "Media Storage Provider is required"
375
+ ),
376
+ }),
377
+ ...(currentFields.includes("mediaStorageProviderId") && {
378
+ mediaStorageProvider: Yup.object().required(
379
+ "Media Storage Provider is required"
380
+ ),
381
+ }),
382
+
383
+ ...(currentFields.includes("mediaEmbedded") && {
384
+ mediaEmbedded: Yup.boolean(),
385
+ }),
386
+ ...(currentFields.includes("relationType") && {
387
+ relationType: Yup.string().required("Relation Type is required"),
388
+ }),
389
+ ...(currentFields.includes("relationModelSingularName") && {
390
+ relationModelSingularName: Yup.string().required(
391
+ "Relation Model Singular Name is required"
392
+ ),
393
+ }),
394
+ ...(currentFields.includes("relationModelFieldName") && {
395
+ relationModelFieldName: Yup.string()
396
+ // .required(
397
+ // "Relation Model Field Name is required"
398
+ // ),
399
+ }),
400
+
401
+ ...(currentFields.includes("relationCreateInverse") && {
402
+ relationCreateInverse: Yup.boolean(),
403
+ }),
404
+ // ...(currentFields.includes("relationCascade") && {
405
+ // relationCascade: Yup.string().required(
406
+ // "Relation Cascade Value is required"
407
+ // ),
408
+ // }),
409
+
410
+ // Conditionally validate relationCascade based on relationType
411
+ ...(currentFields.includes("relation") && {
412
+ relationCascade: Yup.string().when("relationType", (relationType: any, schema) => {
413
+ return relationType === "one-to-one"
414
+ ? schema.required("Relation Cascade Value is required for one-to-one relationships")
415
+ : schema.notRequired();
416
+ }),
417
+ }),
418
+
419
+
420
+ ...(currentFields.includes("relationModelModuleName") && {
421
+ relationModelModuleName: Yup.string().required(
422
+ "Relation Model Module Name Value is required"
423
+ ),
424
+ }),
425
+ ...(currentFields.includes("selectionDynamicProvider") && {
426
+ selectionDynamicProvider: Yup.string().required(
427
+ "Selection Dynamic Provider Value is required"
428
+ ),
429
+ }),
430
+ ...(currentFields.includes("selectionDynamicProviderCtxt") && {
431
+ selectionDynamicProviderCtxt: Yup.string().required(
432
+ "Selection Dynamic Provider Context Value is required"
433
+ ).test(
434
+ "is-valid-json",
435
+ "Computed Field Value Provider Context Value must be valid JSON",
436
+ (value) => {
437
+ if (!value) return false; // Ensure it's required
438
+ try {
439
+ JSON.parse(value); // Check if it's valid JSON
440
+ return true;
441
+ } catch {
442
+ return false;
443
+ }
444
+ }
445
+ ),
446
+ }),
447
+
448
+ ...(currentFields.includes("selectionStaticValues") && {
449
+ selectionStaticValues: Yup.array().of(
450
+ Yup.string().matches(/^[\w\s\d-]+:[\w\s-]+$/, "Label and Value are required.")
451
+ ),
452
+ }),
453
+ ...(currentFields.includes("computedFieldValueProvider") && {
454
+ computedFieldValueProvider: Yup.string().required(
455
+ "Computed Field Function Value is required"
456
+ ),
457
+ }),
458
+ ...(currentFields.includes("computedFieldValueProviderCtxt") && {
459
+ computedFieldValueProviderCtxt: Yup.string().required(
460
+ "Computed Field Value Provider Context Value is required"
461
+ ).test(
462
+ "is-valid-json",
463
+ "Computed Field Value Provider Context Value must be valid JSON",
464
+ (value) => {
465
+ if (!value) return false; // Ensure it's required
466
+ try {
467
+ JSON.parse(value); // Check if it's valid JSON
468
+ return true;
469
+ } catch {
470
+ return false;
471
+ }
472
+ }
473
+ ),
474
+
475
+ }),
476
+ ...(currentFields.includes("computedFieldValueType") && {
477
+ computedFieldValueType: Yup.string().required(
478
+ "Computed Field Value Type is required"
479
+ ),
480
+ }),
481
+
482
+ ...(currentFields.includes("columnName") && {
483
+ columnName: Yup.string().nullable().matches(
484
+ /^[a-z0-9_]+$/,
485
+ "Column name must be in snake_case (lowercase letters, numbers, and underscores only)."
486
+ ),
487
+ }),
488
+
489
+
490
+
491
+
492
+ // ...(currentFields.includes("externalIdProvider") && {
493
+ // externalIdProvider: Yup.string().required(
494
+ // "ExternalId Provider Value is required"
495
+ // ),
496
+ // }),
497
+ // ...(currentFields.includes("externalIdProviderCtxt") && {
498
+ // externalIdProviderCtxt: Yup.string().required(
499
+ // "EexternalId Provider Context Value is required"
500
+ // ),
501
+ // }),
502
+ };
503
+
504
+ return Yup.object(schema);
505
+ };
506
+
507
+ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, allFields, deleteModelFunction, setVisiblePopup }: any) => {
508
+
509
+ const booleanOptions = ["false", "true"];
510
+ const [isBackPopupVisible, setIsBackPopupVisible] = useState(false);
511
+ const [showColumnName, setShowColumnName] = useState<any>(false);
512
+
513
+ const pathname = usePathname();
514
+
515
+ const toast = useRef<Toast>(null);
516
+
517
+ const { data: fieldDefaultMetaData, isLoading, error, refetch } = useGetFieldDefaultMetaDataQuery(null);
518
+ const [currentFields, setCurrentFields] = useState(
519
+ fetchCurrentFields(fieldMetaData && fieldMetaData.type, fieldDefaultMetaData)
520
+ );
521
+
522
+ const [triggerGetMediaStorageProvider, { data: MediaStorageProviderData, isFetching: isMediaStorageProviderFetching, error: MediaStorageProviderError }] = useLazyGetMediaStorageProvidersQuery();
523
+ const [triggerGetModules, { data: moduleData, isFetching: isModuleFetching, error: moduleError }] = useLazyGetmodulesQuery();
524
+ const [triggerGetModels, { data: modelData, isFetching: ismodelFetching, error: modelError }] = useLazyGetModelsQuery();
525
+
526
+
527
+ const [markdownText, setMarkdownText] = useState<string>();
528
+ const [encryptState, setEncryptState] = useState<any>(false);
529
+
530
+ const [showTypeFilter, setShowTypeFilter] = useState(fieldMetaData ? false : true);
531
+ const [selectedType, setSelectedType] = useState(fieldMetaData?.type && { label: fieldMetaData?.type, value: fieldMetaData?.type });
532
+ const [selectedComputedFieldValueType, setSelectedComputedFieldValueType] = useState(fieldMetaData?.computedFieldValueType && { label: fieldMetaData.computedFieldValueType, value: fieldMetaData.computedFieldValueType });
533
+ const [selectionDynamicProvider, setSelectionDynamicProvider] = useState(fieldMetaData?.selectionDynamicProvider && { label: fieldMetaData.selectionDynamicProvider, value: fieldMetaData.selectionDynamicProvider });
534
+ // const [externalIdProvider, setExternalIdProvider] = useState(fieldMetaData?.externalIdProvider && { label: fieldMetaData.externalIdProvider, value: fieldMetaData.externalIdProvider });
535
+ const [selectionStaticValues, setSelectionStaticValues] = useState(fieldMetaData && fieldMetaData.selectionStaticValues && fieldMetaData.selectionStaticValues.length > 0 && fieldMetaData?.selectionStaticValues.filter((line: any) => line.trim() !== "").join("\n"));
536
+ const [filteredComputedFieldValueTypes, setFilteredComputedFieldValueTypes] = useState([]);
537
+ const [
538
+ filteredSelectionDynamicProvider,
539
+ setFilteredSelectionDynamicProvider,
540
+ ] = useState([]);
541
+
542
+ const [ormTypeOptions, setOrmTypeOptions] = useState([]);
543
+ const [selectedOrmType, setSelectedOrmType] = useState<any>(fieldMetaData?.ormType);
544
+
545
+
546
+
547
+ const [
548
+ filteredExternalIdProvider,
549
+ setFilteredExternalIdProvider,
550
+ ] = useState([]);
551
+
552
+ const [filteredSelectionEncryptionType, setFilteredSelectionEncryptionType] = useState([]);
553
+
554
+ const [filteredSelectionDecryptWhen, setFilteredSelectionDecryptWhen] = useState([]);
555
+
556
+ const items = Array.from({ length: 100000 }).map((_, i) => ({
557
+ label: `Item #${i}`,
558
+ value: i,
559
+ }));
560
+
561
+ const validationSchema = React.useMemo(
562
+ () => createValidationSchema(currentFields, selectedType, allFields, fieldMetaData, encryptState),
563
+ [currentFields, encryptState]
564
+ );
565
+
566
+ const [typeSelected, setTypeSelected] = useState(false);
567
+
568
+
569
+ const searchMediaTypes = async (event: any) => {
570
+ const query = event.query;
571
+ try {
572
+ const suggestionData: any = fieldDefaultMetaData.data.mediaTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
573
+ return suggestionData;
574
+ } catch (error) {
575
+ console.error("Error fetching items:", error);
576
+ return []
577
+ }
578
+ };
579
+
580
+ const searchMediaStorageProvIderId = async (event: any) => {
581
+ try {
582
+ const query = event.query;
583
+ const queryData = {
584
+ limit: 10,
585
+ offset: 0,
586
+ // filters: {
587
+ // name: {
588
+ // $containsi: query,
589
+ // },
590
+ // },
591
+ };
592
+
593
+ const queryString = qs.stringify(queryData, {
594
+ encodeValuesOnly: true,
595
+ });
596
+
597
+ const result = await triggerGetMediaStorageProvider(queryString).unwrap();
598
+
599
+ if (result && result.records) {
600
+ const updatedSuggestion = [...result.records];
601
+ return updatedSuggestion
602
+ } else {
603
+ return []
604
+ }
605
+ } catch (error) {
606
+ return []
607
+ }
608
+ };
609
+
610
+
611
+ const searchModel = async (event: any) => {
612
+ const query = event.query;
613
+ const queryData = {
614
+ limit: 10,
615
+ offset: 0,
616
+ // filters: {
617
+ // title: {
618
+ // $containsi: query
619
+ // }
620
+ // }
621
+ };
622
+
623
+ const queryString = qs.stringify(queryData, {
624
+ encodeValuesOnly: true
625
+ });
626
+
627
+ // Trigger the API call manually
628
+ const result = await triggerGetModels(queryString).unwrap(); // Unwrap to access the data
629
+
630
+ // Map the API response to AutoComplete format
631
+ if (result && result.records) {
632
+ const filteredMenu = result.records.map((m: any) => (
633
+ {
634
+ label: m.name,
635
+ value: m.id,
636
+ name: m.name,
637
+ id: m.id,
638
+ }
639
+ ));
640
+
641
+ // Update the suggestions in state
642
+ return filteredMenu
643
+ } else {
644
+ // Handle the case where no data is returned
645
+ return []
646
+ }
647
+ };
648
+
649
+
650
+
651
+
652
+ const searchOrmTypes = async (event: any) => {
653
+ const query = event.query;
654
+ try {
655
+
656
+ const ormType = fieldDefaultMetaData.data.ormType[modelMetaData?.dataSourceType];
657
+ const _filteredOrmType = ormType[formik.values.type].ormTypes.map((e: any) => ({ label: e, value: e }))
658
+
659
+ const suggestionData: any = _filteredOrmType.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
660
+ return suggestionData
661
+ } catch (error) {
662
+ console.error("Error fetching items:", error);
663
+ return []
664
+ }
665
+ };
666
+
667
+
668
+
669
+
670
+ const searchRelationModelModuleNames = async (event: any) => {
671
+ try {
672
+ const query = event.query;
673
+ const queryData = {
674
+ limit: 10,
675
+ offset: 0,
676
+ filters: {
677
+ name: {
678
+ $containsi: query,
679
+ },
680
+ },
681
+ };
682
+
683
+ const queryString = qs.stringify(queryData, {
684
+ encodeValuesOnly: true,
685
+ });
686
+
687
+ const result = await triggerGetModules(queryString).unwrap(); // Unwrap to access the data
688
+
689
+ if (result && result.records) {
690
+ const updatedSuggestion = [...result.records];
691
+ return updatedSuggestion
692
+ } else {
693
+ return []
694
+ }
695
+ } catch (error) {
696
+ return []
697
+ }
698
+ };
699
+
700
+ const searchRelationModelSingularNames = async (event: any) => {
701
+ try {
702
+ const query = event.query;
703
+ const queryData: any = {
704
+ limit: 10,
705
+ offset: 0,
706
+ filters: {
707
+ module: {
708
+ name: {
709
+ $containsi: formik.values.relationModelModuleName
710
+ }
711
+ }
712
+ }
713
+ };
714
+ if (query) {
715
+ queryData.filters.singularName = {
716
+ $containsi: query,
717
+ };
718
+ }
719
+ const queryString = qs.stringify(queryData, {
720
+ encodeValuesOnly: true,
721
+ });
722
+
723
+ const result = await triggerGetModels(queryString).unwrap(); // Unwrap to access the data
724
+
725
+ if (result && result.records) {
726
+ const updatedSuggestion = [...result.records];
727
+ return updatedSuggestion
728
+ } else {
729
+ return []
730
+ }
731
+ } catch (error) {
732
+ return []
733
+ }
734
+ };
735
+
736
+
737
+
738
+ const searchComputedFieldValueType = async (event: any) => {
739
+ const query = event.query;
740
+ try {
741
+
742
+ const _filteredTypes: any = fieldDefaultMetaData.data.computedFieldValueTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
743
+
744
+ setFilteredComputedFieldValueTypes(_filteredTypes);
745
+ } catch (error) {
746
+ console.error("Error fetching items:", error);
747
+ setFilteredComputedFieldValueTypes([]);
748
+ }
749
+ };
750
+
751
+
752
+
753
+ const searchSelectionDynamicProvider = async (event: any) => {
754
+ const query = event.query;
755
+ try {
756
+ const filterredData: any = fieldDefaultMetaData.data.selectionDynamicProviders.filter((t: any) => t.provider.toLowerCase().startsWith(query.toLowerCase()));
757
+ const transformedData = filterredData.map((e: any) => ({ label: e.provider, value: e.provider, help: e.help }));
758
+ return transformedData
759
+ } catch (error) {
760
+ console.error("Error fetching items:", error);
761
+ return []
762
+ }
763
+ };
764
+
765
+
766
+
767
+ const searchComputedProvider = async (event: any) => {
768
+ const query = event.query;
769
+ try {
770
+ const filterredData: any = fieldDefaultMetaData.data.computedProviders.filter((t: any) => t.provider.toLowerCase().startsWith(query.toLowerCase()));
771
+ const transformedData = filterredData.map((e: any) => ({ label: e.provider, value: e.provider, help: e.help }));
772
+ return transformedData
773
+ } catch (error) {
774
+ console.error("Error fetching items:", error);
775
+ return []
776
+ }
777
+ };
778
+
779
+ const searchExternalIdProvider = async (event: any) => {
780
+ const query = event.query;
781
+ try {
782
+ const filterredData: any = fieldDefaultMetaData.data.externalIdProviders.filter((t: any) => t.provider.toLowerCase().startsWith(query.toLowerCase()));
783
+ const transformedData = filterredData.map((e: any) => ({ label: e.provider, value: e.provider, help: e.help }));
784
+ return transformedData
785
+ } catch (error) {
786
+ console.error("Error fetching items:", error);
787
+ return []
788
+ }
789
+ };
790
+
791
+
792
+
793
+ const searchSelectionEncryptionType = async (event: any) => {
794
+ const query = event.query;
795
+ try {
796
+
797
+ const _filteredTypes: any = fieldDefaultMetaData.data.encryptionTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
798
+
799
+ setFilteredSelectionEncryptionType(_filteredTypes);
800
+ return _filteredTypes
801
+ } catch (error) {
802
+ console.error("Error fetching items:", error);
803
+ setFilteredSelectionEncryptionType([]);
804
+ return []
805
+ }
806
+ };
807
+
808
+ const searchSelectionDecryptWhen = async (event: any) => {
809
+ const query = event.query;
810
+ try {
811
+
812
+ const _filteredTypes: any = fieldDefaultMetaData.data.decryptWhenTypes.filter((t: any) => t.label.toLowerCase().startsWith(query.toLowerCase()));
813
+
814
+ setFilteredSelectionDecryptWhen(_filteredTypes);
815
+ return _filteredTypes
816
+ } catch (error) {
817
+ console.error("Error fetching items:", error);
818
+ setFilteredSelectionDecryptWhen([]);
819
+ return []
820
+ }
821
+ };
822
+
823
+
824
+ const isFormFieldValid = (formik: any, fieldName: string) => {
825
+ return formik.touched[fieldName] && formik.errors[fieldName];
826
+ };
827
+
828
+
829
+ const mediaStorageProviderId = [
830
+ { label: "mediaStorageProviderId", value: "mediaStorageProviderId" },
831
+ { label: "id2", value: "2" },
832
+ ];
833
+
834
+ const selctionValueTypes = [
835
+ { label: "String", value: "string" },
836
+ { label: "Int", value: "int" },
837
+ ];
838
+
839
+
840
+ const relationCreateInverses = [
841
+ { label: "True", value: "true" },
842
+ { label: "False", value: "false" },
843
+ ];
844
+
845
+ const [selectedPasswordPolicy, setSelectedPasswordPolicy] = useState<any>(fieldMetaData?.regexPattern);
846
+ const passwordPolicyOptions = [
847
+ { label: 'Lowercase and Uppercase Alphabets Required', value: '^(?=.*[a-z])(?=.*[A-Z]).*$' },
848
+ { label: 'Lowercase and Uppercase Alphabets and Numbers Required', value: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).*$' },
849
+ { label: 'Lowercase and Uppercase Alphabets, Numbers, and Special Characters Required', value: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&]).*$' },
850
+ { label: 'custom', value: 'custom' },
851
+
852
+ ];
853
+
854
+ const mediaTypesOptions = [
855
+ { label: 'Image (Supports JPEG, PNG, WEBP, etc.)', value: 'image' },
856
+ { label: 'Audio (Supports MP3, WAV, AAC, etc.)', value: 'audio' },
857
+ { label: 'Video (Supports MP4, AVI, MKV, etc.)', value: 'video' },
858
+ { label: 'File (Supports PDF, DOCX, TXT, etc.)', value: 'file' }
859
+ ];
860
+
861
+
862
+ const initialValues = {
863
+ name: fieldMetaData ? fieldMetaData?.name : null,
864
+ displayName: fieldMetaData ? fieldMetaData?.displayName : null,
865
+ description: fieldMetaData ? fieldMetaData?.description : null,
866
+ type: fieldMetaData ? fieldMetaData?.type : null,
867
+ ormType: fieldMetaData ? fieldMetaData?.ormType : null,
868
+ length: fieldMetaData ? fieldMetaData?.length : null,
869
+ defaultValue: fieldMetaData ? fieldMetaData?.defaultValue : null,
870
+ regexPattern: fieldMetaData ? fieldMetaData?.regexPattern : null,
871
+ regexPatternNotMatchingErrorMsg: fieldMetaData ? fieldMetaData?.regexPatternNotMatchingErrorMsg : "",
872
+ required: fieldMetaData ? fieldMetaData?.required : false,
873
+ unique: fieldMetaData ? fieldMetaData?.unique : false,
874
+ encrypt: fieldMetaData ? fieldMetaData?.encrypt : false,
875
+ encryptionType: fieldMetaData ? fieldMetaData?.encryptionType : null,
876
+ decryptWhen: fieldMetaData ? fieldMetaData?.decryptWhen : null,
877
+ index: fieldMetaData ? fieldMetaData?.index : false,
878
+ min: fieldMetaData ? fieldMetaData?.min : null,
879
+ max: fieldMetaData ? fieldMetaData?.max : null,
880
+ private: fieldMetaData ? fieldMetaData?.private : false,
881
+ mediaTypes: fieldMetaData ? fieldMetaData?.mediaTypes : null,
882
+ mediaMaxSizeKb: fieldMetaData ? fieldMetaData?.mediaMaxSizeKb : null,
883
+ mediaStorageProviderId: fieldMetaData ? fieldMetaData?.mediaStorageProvider?.id : null,
884
+ mediaStorageProvider: fieldMetaData ? fieldMetaData?.mediaStorageProvider : null,
885
+ mediaEmbedded: fieldMetaData ? (fieldMetaData?.mediaEmbedded && fieldMetaData?.mediaEmbedded.toString()) : "true",
886
+ relationType: fieldMetaData ? fieldMetaData?.relationType : null,
887
+ relationModelSingularName: fieldMetaData ? fieldMetaData?.relationModelSingularName : null,
888
+ relationModelFieldName: fieldMetaData ? fieldMetaData?.relationModelFieldName : '',
889
+ relationCreateInverse: fieldMetaData && fieldMetaData.relationCreateInverse === false ? "false" : "true",
890
+ relationCascade: fieldMetaData ? fieldMetaData?.relationCascade : 'cascade',
891
+ relationModelModuleName: fieldMetaData ? fieldMetaData?.relationModelModuleName : modelMetaData?.module.name,
892
+ selectionDynamicProvider: fieldMetaData ? fieldMetaData?.selectionDynamicProvider : null,
893
+ selectionDynamicProviderCtxt: fieldMetaData ? fieldMetaData?.selectionDynamicProviderCtxt : "",
894
+ selectionStaticValues: fieldMetaData ? fieldMetaData?.selectionStaticValues : [""],
895
+ selectionValueType: fieldMetaData ? fieldMetaData?.selectionValueType : null,
896
+ computedFieldValueProvider: fieldMetaData ? fieldMetaData?.computedFieldValueProvider : null,
897
+ computedFieldValueType: fieldMetaData ? fieldMetaData?.computedFieldValueType : null,
898
+ computedFieldValueProviderCtxt: fieldMetaData ? fieldMetaData?.computedFieldValueProviderCtxt : "",
899
+ // externalIdProvider: fieldMetaData ? fieldMetaData?.externalIdProvider : null,
900
+ // externalIdProviderCtxt: fieldMetaData ? fieldMetaData?.externalIdProviderCtxt : "",
901
+ isSystem: fieldMetaData ? fieldMetaData?.isSystem : false,
902
+ columnName: fieldMetaData ? fieldMetaData?.columnName : null
903
+ };
904
+
905
+
906
+ const formik = useFormik({
907
+ initialValues,
908
+ validationSchema,
909
+ enableReinitialize: true,
910
+ onSubmit: async (values) => {
911
+ try {
912
+
913
+ setFieldMetaData((prevItems: any) => {
914
+ const newFieldData = { ...values, isSystem: values.isSystem == true ? true : '' }
915
+ const formtatedFieldPayload = fieldBasedPayloadFormating(newFieldData, currentFields, fieldMetaData);
916
+ const existingIndex = prevItems.findIndex((item: any) => item.identifier === formtatedFieldPayload.identifier);
917
+ if (existingIndex !== -1) {
918
+ const updatedItems = [...prevItems];
919
+ updatedItems[existingIndex] = formtatedFieldPayload;
920
+ return updatedItems
921
+ }
922
+ else {
923
+ return [...prevItems, formtatedFieldPayload]
924
+ }
925
+ });
926
+ // nextTab()
927
+ setVisiblePopup(false);
928
+
929
+ } catch (err) {
930
+ console.error("Failed to create Radix Model:", err);
931
+ }
932
+ },
933
+ validateOnBlur: false // Disable validation on blur
934
+
935
+
936
+
937
+ });
938
+
939
+ const showError = async () => {
940
+ const errors = await formik.validateForm(); // Trigger validation and get the updated errors
941
+ const errorMessages = Object.values(errors);
942
+
943
+
944
+ if (errorMessages.length > 0) {
945
+ toast?.current?.show({
946
+ severity: "error",
947
+ summary: "Can you send me the report?",
948
+ // sticky: true,
949
+ life: 3000,
950
+ //@ts-ignore
951
+ content: (props) => (
952
+ <div
953
+ className="flex flex-column align-items-left"
954
+ style={{ flex: "1" }}
955
+ >
956
+ {errorMessages.map((m, index) => (
957
+ <div className="flex align-items-center gap-2" key={index}>
958
+ <span className="font-bold text-900">{String(m)}</span>
959
+ </div>
960
+ ))}
961
+ </div>
962
+ ),
963
+ });
964
+ }
965
+ };
966
+
967
+
968
+
969
+ const handleTypeSelect = (e: any) => {
970
+
971
+
972
+ setShowTypeFilter(false);
973
+ setSelectedType({ label: e, value: e });
974
+ formik.setFieldValue("type", e);
975
+ if (e == "email") {
976
+ formik.setFieldValue("regexPattern", "/^[a-zA-Z0-9. _%+-]+@[a-zA-Z0-9. -]+\\. [a-zA-Z]{2,}$/");
977
+ } else {
978
+ formik.setFieldValue("regexPattern", "");
979
+ }
980
+ const ormType = fieldDefaultMetaData.data.ormType[modelMetaData?.dataSourceType];
981
+ const availableOrmTypes = ormType[e];
982
+ // setFilteredOrmTypes(availableOrmTypes.ormTypes.map((e: any) => ({
983
+ // label: e,
984
+ // value: e,
985
+ // })));
986
+ // setSelectedOrmType({ label: availableOrmTypes.ormTypes[0], value: availableOrmTypes.ormTypes[0] });
987
+ setOrmTypeOptions(availableOrmTypes.ormTypes)
988
+ formik.setFieldValue("ormType", availableOrmTypes.ormTypes[0].label);
989
+ setSelectedOrmType(availableOrmTypes.ormTypes[0].label)
990
+ setCurrentFields(
991
+ fetchCurrentFields(e, fieldDefaultMetaData)
992
+ );
993
+ // setTypeSelected(true);
994
+ }
995
+
996
+
997
+ useEffect((() => {
998
+ setOrmTypeOptions(fieldDefaultMetaData && formik.values.type && fieldDefaultMetaData.data.ormType[modelMetaData?.dataSourceType][formik.values.type].ormTypes);
999
+ }), [formik])
1000
+
1001
+
1002
+ useEffect(() => {
1003
+ if (fieldMetaData && fieldMetaData.columnName) {
1004
+ setShowColumnName(true)
1005
+ }
1006
+ }, [fieldMetaData])
1007
+
1008
+ const updateEnumValues = (index: number, updatedString: string) => {
1009
+ const updatedValues = formik.values.selectionStaticValues.map((enumValue: string, i: number) =>
1010
+ i === index ? updatedString : enumValue
1011
+ );
1012
+ formik.setFieldValue("selectionStaticValues", updatedValues);
1013
+ };
1014
+
1015
+ const addEnumValue = () => {
1016
+ formik.setFieldValue("selectionStaticValues", [...formik.values.selectionStaticValues, ":"]);
1017
+ };
1018
+
1019
+ const deleteEnumValue = (index: number) => {
1020
+ if (formik.values.selectionStaticValues.length > 1) {
1021
+ const updatedRows = formik.values.selectionStaticValues.filter((_: string, rowIndex: number) => rowIndex !== index);
1022
+ formik.setFieldValue("selectionStaticValues", updatedRows);
1023
+ } else {
1024
+
1025
+ }
1026
+ };
1027
+
1028
+ return (
1029
+ <div className="field-popup" >
1030
+ <Toast ref={toast} />
1031
+ <div>
1032
+ <form onSubmit={formik.handleSubmit}>
1033
+ <div className="field-popup-navigation">
1034
+ {pathname.includes('create') ?
1035
+ <div className="flex gap-3 justify-content-between ">
1036
+ {showTypeFilter === false ?
1037
+ <div className="flex text-2xl font-bold align-items-center" style={{ color: '#000' }}>
1038
+ <Button icon="pi pi-arrow-left" rounded text type="reset" aria-label="Cancel" size="small" onClick={() => {
1039
+ if (!formik.values.displayName) {
1040
+ setShowTypeFilter(true)
1041
+ } else {
1042
+ setIsBackPopupVisible(true)
1043
+ }
1044
+ }
1045
+ } />
1046
+ <p className="field-popup-nav-heading">{capitalize(modelMetaData?.displayName)}</p>
1047
+ </div> :
1048
+ <div className="flex text-2xl font-bold align-items-center ml-4" style={{ color: '#000' }}>
1049
+ <p className="field-popup-nav-heading">Model - {capitalize(modelMetaData?.displayName)}</p>
1050
+ </div>
1051
+ }
1052
+ <div className="flex align-items-center gap-3 close-popup">
1053
+ <Button icon="pi pi-times" rounded text aria-label="Cancel" type="reset" size="small" onClick={() => setVisiblePopup(false)} />
1054
+ </div>
1055
+ </div> :
1056
+ <div className="flex gap-3 justify-content-between ">
1057
+ <div className="flex text-2xl font-bold align-items-center" style={{ color: '#000' }}>
1058
+ {!fieldMetaData?.id &&
1059
+ < Button icon="pi pi-arrow-left" rounded text type="reset" aria-label="Cancel" size="small" onClick={() => {
1060
+ if (!formik.values.displayName) {
1061
+ setShowTypeFilter(true)
1062
+ } else {
1063
+ setIsBackPopupVisible(true)
1064
+ }
1065
+ }
1066
+ } />
1067
+ }
1068
+ {fieldMetaData ?
1069
+
1070
+ <p className="field-popup-nav-heading ml-2">{capitalize(modelMetaData?.displayName)} &gt; {capitalize(fieldMetaData?.displayName)}</p>
1071
+
1072
+ :
1073
+ <p className="field-popup-nav-heading ml-2">Add New Field to {capitalize(modelMetaData?.displayName)}</p>
1074
+ }
1075
+
1076
+ </div>
1077
+ <div className="flex align-items-center gap-3 close-popup">
1078
+ <Button icon="pi pi-times" rounded text aria-label="Cancel" type="reset" size="small" onClick={() => setVisiblePopup(false)} />
1079
+ </div>
1080
+ </div>
1081
+ }
1082
+ </div>
1083
+ {showTypeFilter === true ?
1084
+ <FieldSelector
1085
+ handleTypeSelect={handleTypeSelect}
1086
+ modelMetaData={modelMetaData}
1087
+ ></FieldSelector>
1088
+ :
1089
+ <div className="field-popup-form" >
1090
+ <div className="p-d-flex p-jc-center creat-field-for form-dem">
1091
+ <div className="p-fluid" style={{ position: 'relative' }}>
1092
+ <div className="field-popup-heading">
1093
+ <p>Add a new {capitalize(selectedType.value)} Field</p>
1094
+ </div>
1095
+
1096
+
1097
+ <TabView panelContainerClassName="px-0 pb-0">
1098
+ <TabPanel
1099
+ header="Basic Info"
1100
+ className={(formik.touched.hasOwnProperty("name") && formik.errors.hasOwnProperty("name")) || (formik.touched.hasOwnProperty("displayName") && formik.errors.hasOwnProperty("displayName")) || (formik.touched.hasOwnProperty("displayName") && formik.errors.hasOwnProperty("ormType")) ? "tab-error-heading" : ""}
1101
+ // rightIcon="pi pi-info-circle ml-2"
1102
+ >
1103
+ <div className="grid p-nogutter">
1104
+ {currentFields.includes("displayName") && (
1105
+ <div className="md:col-6 sm:col-12">
1106
+ <div className="field">
1107
+ <label htmlFor="displayName" className="form-label form-field-label">
1108
+ Display Name
1109
+ </label>
1110
+ <InputText
1111
+ type="text"
1112
+ disabled={fieldMetaData?.id}
1113
+ id="displayName"
1114
+ name="displayName"
1115
+ onChange={(e) => {
1116
+ formik.setFieldValue("displayName", e.target.value);
1117
+ const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);
1118
+ formik.setFieldValue("name", toCamelCase);
1119
+ if (showColumnName) {
1120
+ formik.setFieldValue("columnName", toSnakeCase);
1121
+ }
1122
+
1123
+ }}
1124
+ value={formik.values.displayName}
1125
+ className={classNames("p-inputtext-sm w-full small-input", {
1126
+ "p-invalid": isFormFieldValid(
1127
+ formik,
1128
+ "displayName"
1129
+ ),
1130
+ })}
1131
+ />
1132
+ {isFormFieldValid(formik, "displayName") && (
1133
+ <Message
1134
+ severity="error"
1135
+ text={formik?.errors?.displayName?.toString()}
1136
+ />
1137
+ )}
1138
+ </div>
1139
+ </div>
1140
+ )}
1141
+
1142
+
1143
+ {currentFields.includes("name") && (
1144
+ <div className="md:col-6 sm:col-12">
1145
+ <div className="field">
1146
+ <label htmlFor="name" className="form-label form-field-label">
1147
+ Name
1148
+ </label>
1149
+ <InputText
1150
+ disabled={fieldMetaData?.id}
1151
+ type="text"
1152
+ id="name"
1153
+ name="name"
1154
+ onChange={formik.handleChange}
1155
+ value={formik.values.name}
1156
+ className={classNames("p-inputtext-sm w-full small-input", {
1157
+ "p-invalid": isFormFieldValid(formik, "name"),
1158
+ })}
1159
+ />
1160
+ {isFormFieldValid(formik, "name") && (
1161
+ <Message
1162
+ severity="error"
1163
+ text={formik?.errors?.name?.toString()}
1164
+ />
1165
+ )}
1166
+ </div>
1167
+ </div>
1168
+ )}
1169
+ {currentFields.includes("description") && (
1170
+ <div className="md:col-6 sm:col-12">
1171
+ <div className="field">
1172
+ <label htmlFor="description" className="form-label form-field-label">
1173
+ Description
1174
+ </label>
1175
+ <InputTextarea
1176
+ aria-describedby="Description of your field"
1177
+ id="description"
1178
+ name="description"
1179
+ onChange={formik.handleChange}
1180
+ value={formik.values.description}
1181
+ rows={5}
1182
+ cols={30}
1183
+ className={classNames("p-inputtext-sm w-full", {
1184
+ "p-invalid": isFormFieldValid(
1185
+ formik,
1186
+ "description"
1187
+ ),
1188
+ })}
1189
+ />
1190
+ {isFormFieldValid(formik, "description") && (
1191
+ <Message
1192
+ severity="error"
1193
+ text={formik?.errors?.description?.toString()}
1194
+ />
1195
+ )}
1196
+ </div>
1197
+ </div>
1198
+ )}
1199
+
1200
+ {currentFields.includes("columnName") && (
1201
+ <div className="md:col-6 sm:col-12">
1202
+ <div className="field mt-5">
1203
+ <div className="flex align-items-center">
1204
+
1205
+ <div className="flex align-items-center">
1206
+ <Checkbox onChange={e => {
1207
+ setShowColumnName(e.checked);
1208
+ if (e.checked === true) {
1209
+ const { toCamelCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(formik.values.displayName);
1210
+ if (pathname.includes('create')) {
1211
+ formik.setFieldValue("columnName", toSnakeCase);
1212
+ }
1213
+ }
1214
+
1215
+ }} checked={showColumnName}></Checkbox>
1216
+ <label htmlFor="ingredient1" className="ml-2">
1217
+ Set Column Name
1218
+ </label>
1219
+ </div>
1220
+ </div>
1221
+ </div>
1222
+ {showColumnName &&
1223
+ <div className="field mt-3">
1224
+ <label htmlFor="columnName" className="form-label form-field-label">
1225
+ Column Name
1226
+ </label>
1227
+ <InputText
1228
+ disabled={fieldMetaData?.id}
1229
+ type="text"
1230
+ id="columnName"
1231
+ name="columnName"
1232
+ onChange={formik.handleChange}
1233
+ value={formik.values.columnName}
1234
+ className={classNames("p-inputtext-sm w-full small-input", {
1235
+ "p-invalid": isFormFieldValid(formik, "columnName"),
1236
+ })}
1237
+ />
1238
+ {isFormFieldValid(formik, "columnName") && (
1239
+ <Message
1240
+ severity="error"
1241
+ text={formik?.errors?.columnName?.toString()}
1242
+ />
1243
+ )}
1244
+ </div>
1245
+ }
1246
+ </div>
1247
+ )}
1248
+
1249
+
1250
+ {/* {currentFields.includes("type") && (
1251
+ <div className="md:col-6 sm:col-12">
1252
+ <div className="field">
1253
+ <label htmlFor="type" className="form-label form-field-label">
1254
+ Type
1255
+ </label>
1256
+ <AutoComplete
1257
+ value={selectedType}
1258
+ suggestions={filteredTypes}
1259
+ invalid={isFormFieldValid(formik, "type")}
1260
+ completeMethod={searchTypes}
1261
+ virtualScrollerOptions={{ itemSize: 38 }}
1262
+ field="label"
1263
+ className="small-input"
1264
+ dropdown
1265
+ onChange={(e) => {
1266
+ formik.setFieldTouched('type', true); // Manually mark as touched
1267
+ setSelectedType(e.value);
1268
+ formik.setFieldValue("type", e.value.value);
1269
+ if (e.value.value == "email") {
1270
+ formik.setFieldValue("regexPattern", "/^[a-zA-Z0-9. _%+-]+@[a-zA-Z0-9. -]+\\. [a-zA-Z]{2,}$/");
1271
+ } else {
1272
+ formik.setFieldValue("regexPattern", "");
1273
+ }
1274
+ const _filteredOrmType: any = fieldDefaultMetaData.data.ormType.filter((t: any) => t.solidType == e.value.value);
1275
+ setSelectedOrmType(_filteredOrmType[0].value)
1276
+ formik.setFieldValue("ormType", _filteredOrmType[0].value);
1277
+
1278
+ setCurrentFields(
1279
+ fetchCurrentFields(e.value.value, fieldDefaultMetaData)
1280
+ );
1281
+ }}
1282
+
1283
+
1284
+ />
1285
+
1286
+ {isFormFieldValid(formik, "type") && (
1287
+ <Message
1288
+ severity="error"
1289
+ text={formik?.errors?.type?.toString()}
1290
+ />
1291
+ )}
1292
+ </div>
1293
+ </div>
1294
+ )} */}
1295
+
1296
+ </div>
1297
+
1298
+ </TabPanel>
1299
+
1300
+ <TabPanel header="Advance Config"
1301
+
1302
+ // rightIcon="pi pi-cog ml-2"
1303
+ >
1304
+ {formik?.values?.type?.length > 0 && (
1305
+ <div className="grid p-nogutter">
1306
+ {currentFields.includes("length") && (
1307
+ <div className="md:col-6 sm:col-12">
1308
+ <div className="field">
1309
+ <label htmlFor="length" className="form-label form-field-label">
1310
+ Length
1311
+ </label>
1312
+ <InputNumber
1313
+ // type="text"
1314
+ id="length"
1315
+ name="length"
1316
+ onValueChange={formik.handleChange}
1317
+ value={formik.values.length}
1318
+ className={classNames("p-inputtext-sm w-full small-input", {
1319
+ "p-invalid": isFormFieldValid(
1320
+ formik,
1321
+ "length"
1322
+ ),
1323
+ })}
1324
+ />
1325
+ {isFormFieldValid(formik, "length") && (
1326
+ <Message
1327
+ severity="error"
1328
+ text={formik?.errors?.length?.toString()}
1329
+ />
1330
+ )}
1331
+ </div>
1332
+ </div>
1333
+ )}
1334
+ {currentFields.includes("defaultValue") && (
1335
+ <div className="md:col-6 sm:col-12">
1336
+ <div className="field">
1337
+ <label
1338
+ htmlFor="defaultValue"
1339
+ className="form-label form-field-label"
1340
+ >
1341
+ Default Value
1342
+ </label>
1343
+ {/* <InputText
1344
+ type="text"
1345
+ id="defaultValue"
1346
+ name="defaultValue"
1347
+ onChange={formik.handleChange}
1348
+ value={formik.values.defaultValue}
1349
+ className={classNames("p-inputtext-sm w-full small-input", {
1350
+ "p-invalid": isFormFieldValid(
1351
+ formik,
1352
+ "defaultValue"
1353
+ ),
1354
+ })}
1355
+ /> */}
1356
+ {(selectedType.value === "shortText" || selectedType.value === "longText" || selectedType.value === "richText" || selectedType.value === "json" || selectedType.value === "password" || selectedType.value === "selectionStatic") &&
1357
+ <InputText
1358
+ type="text"
1359
+ id="defaultValue"
1360
+ name="defaultValue"
1361
+ onChange={formik.handleChange}
1362
+ value={formik.values.defaultValue}
1363
+ className={classNames("p-inputtext-sm w-full small-input", {
1364
+ "p-invalid": isFormFieldValid(
1365
+ formik,
1366
+ "defaultValue"
1367
+ ),
1368
+ })}
1369
+ />
1370
+ }
1371
+ {(selectedType.value === "float" || selectedType.value === "decimal") &&
1372
+ <InputNumber
1373
+ id="defaultValue"
1374
+ name="defaultValue"
1375
+ minFractionDigits={2}
1376
+ maxFractionDigits={5}
1377
+ value={formik.values.defaultValue}
1378
+ onValueChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Ensure correct value change handling
1379
+ className={classNames("p-inputtext-sm w-full small-input", {
1380
+ "p-invalid": isFormFieldValid(formik, "defaultValue"),
1381
+ })}
1382
+ />
1383
+ }
1384
+ {(selectedType.value === "int" || selectedType.value === "bigint") &&
1385
+ <InputNumber
1386
+ id="defaultValue"
1387
+ name="defaultValue"
1388
+ value={formik.values.defaultValue}
1389
+ onValueChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Ensure correct value change handling
1390
+ className={classNames("p-inputtext-sm w-full small-input", {
1391
+ "p-invalid": isFormFieldValid(formik, "defaultValue"),
1392
+ })}
1393
+ />
1394
+ }
1395
+ {selectedType.value === "boolean" &&
1396
+ <SelectButton
1397
+ value={formik.values.defaultValue ? formik.values.defaultValue : "false"}
1398
+ onChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Custom handling for boolean input
1399
+ options={booleanOptions}
1400
+ className={classNames("p-inputtext-sm w-full small-input flex boolean-switch", {
1401
+ "p-invalid": isFormFieldValid(formik, "defaultValue"),
1402
+ })}
1403
+ />
1404
+ }
1405
+ {(selectedType.value === "date" || selectedType.value === "datetime" || selectedType.value === "time") &&
1406
+ <Calendar
1407
+ id="defaultValue"
1408
+ name="defaultValue"
1409
+ value={formik.values.defaultValue ? new Date(formik.values.defaultValue) : new Date()}
1410
+ onChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Use setFieldValue for proper handling
1411
+ showTime={formik.values.type === "datetime"} // Show time picker for datetime
1412
+ timeOnly={formik.values.type === "time"} // Time-only for time
1413
+ dateFormat="yy-mm-dd"
1414
+ hourFormat="24" // 24-hour format for time
1415
+ className={classNames("p-inputtext-sm w-full small-input", {
1416
+ "p-invalid": isFormFieldValid(formik, "defaultValue"),
1417
+ })}
1418
+ />
1419
+ }
1420
+ {isFormFieldValid(formik, "defaultValue") && (
1421
+ <Message
1422
+ severity="error"
1423
+ text={formik?.errors?.defaultValue?.toString()}
1424
+ />
1425
+ )}
1426
+ </div>
1427
+ </div>
1428
+ )}
1429
+
1430
+
1431
+
1432
+
1433
+
1434
+ {currentFields.includes("mediaTypes") && (
1435
+ <div className="md:col-6 sm:col-12">
1436
+ <div className="field">
1437
+ <label
1438
+ htmlFor="mediaTypes"
1439
+ className="form-label form-field-label"
1440
+ >
1441
+ Media Type
1442
+ </label>
1443
+ {/* <MultipleSelectAutoCompleteField
1444
+ key="mediaTypes"
1445
+ formik={formik}
1446
+ isFormFieldValid={isFormFieldValid}
1447
+ fieldName="mediaTypes"
1448
+ fieldNameId="mediaTypes"
1449
+ labelKey="label"
1450
+ valueKey="value"
1451
+ searchData={searchMediaTypes}
1452
+ existingData={formik.values.mediaTypes}
1453
+ /> */}
1454
+
1455
+ {/* {selectedType.value === "mediaSingle" &&
1456
+ <SingleSelectAutoCompleteField
1457
+ key="mediaTypes"
1458
+ formik={formik}
1459
+ isFormFieldValid={isFormFieldValid}
1460
+ fieldName="mediaTypes"
1461
+ fieldNameId="mediaTypes"
1462
+ labelKey="label"
1463
+ valueKey="value"
1464
+ searchData={searchMediaTypes}
1465
+ existingData={formik.values.mediaTypes}
1466
+ />
1467
+ } */}
1468
+
1469
+ {isFormFieldValid(formik, "mediaTypes") && (
1470
+ <Message
1471
+ severity="error"
1472
+ text={formik?.errors?.mediaTypes?.toString()}
1473
+ />
1474
+ )}
1475
+ <MultiSelect value={formik.values.mediaTypes} onChange={(e) => formik.setFieldValue("mediaTypes", e.value)} options={mediaTypesOptions} optionLabel="label"
1476
+ placeholder="Select Media Types" maxSelectedLabels={3} display="chip" className="p-inputtext-sm w-full small-input" />
1477
+
1478
+
1479
+ {/* <Dropdown
1480
+ id="mediaTypes"
1481
+ name="mediaTypes"
1482
+ multiple
1483
+ value={formik.values.mediaTypes}
1484
+ options={fieldDefaultMetaData.data.mediaTypes}
1485
+ onChange={(e) =>
1486
+ formik.setFieldValue("mediaTypes", e.value)
1487
+ }
1488
+ placeholder="Select a Media Type"
1489
+ className={classNames("p-inputtext-sm w-full small-input", {
1490
+ "p-invalid": isFormFieldValid(
1491
+ formik,
1492
+ "mediaTypes"
1493
+ ),
1494
+ })}
1495
+ /> */}
1496
+
1497
+
1498
+ </div>
1499
+ </div>
1500
+ )}
1501
+ {currentFields.includes("mediaMaxSizeKb") && (
1502
+ <div className="md:col-6 sm:col-12">
1503
+ <div className="field">
1504
+ <label
1505
+ htmlFor="mediaMaxSizeKb"
1506
+ className="form-label form-field-label"
1507
+ >
1508
+ Media Max Size (Mb)
1509
+ </label>
1510
+ <InputNumber
1511
+ id="mediaMaxSizeKb"
1512
+ name="mediaMaxSizeKb"
1513
+ onValueChange={formik.handleChange}
1514
+ value={formik.values.mediaMaxSizeKb}
1515
+ className={classNames("p-inputtext-sm w-full small-input", {
1516
+ "p-invalid": isFormFieldValid(
1517
+ formik,
1518
+ "mediaMaxSizeKb"
1519
+ ),
1520
+ })}
1521
+ />
1522
+
1523
+ {isFormFieldValid(formik, "mediaMaxSizeKb") && (
1524
+ <Message
1525
+ severity="error"
1526
+ text={formik?.errors?.mediaMaxSizeKb?.toString()}
1527
+ />
1528
+ )}
1529
+ </div>
1530
+ </div>
1531
+ )}
1532
+ {currentFields.includes("mediaStorageProviderId") && (
1533
+ <div className="md:col-6 sm:col-12">
1534
+ <div className="field form-dropdown-select">
1535
+ <label
1536
+ htmlFor="mediaStorageProviderId"
1537
+ className="form-label form-field-label"
1538
+ >
1539
+ Media Storage Provider
1540
+ </label>
1541
+
1542
+ <SingleSelectAutoCompleteField
1543
+ key="mediaStorageProviderId"
1544
+ formik={formik}
1545
+ isFormFieldValid={isFormFieldValid}
1546
+ relationField={true}
1547
+ fieldName="mediaStorageProvider"
1548
+ fieldNameId="mediaStorageProviderId"
1549
+ labelKey="name"
1550
+ valueKey="value"
1551
+ searchData={searchMediaStorageProvIderId}
1552
+ existingData={formik.values.mediaStorageProvider}
1553
+ />
1554
+
1555
+ {isFormFieldValid(
1556
+ formik,
1557
+ "mediaStorageProvider"
1558
+ ) && (
1559
+ <Message
1560
+ severity="error"
1561
+ text={formik?.errors?.mediaStorageProviderId?.toString()}
1562
+ />
1563
+ )}
1564
+ </div>
1565
+ </div>
1566
+ )}
1567
+
1568
+ {currentFields.includes("mediaEmbedded") && (
1569
+ <div className="md:col-6 sm:col-12">
1570
+ <div className="field">
1571
+ <label
1572
+ htmlFor="mediaEmbedded"
1573
+ className="form-label form-field-label"
1574
+ >
1575
+ Media Embedded
1576
+ </label>
1577
+ {/* <InputText
1578
+ type="text"
1579
+ id="mediaEmbedded"
1580
+ name="mediaEmbedded"
1581
+ onChange={formik.handleChange}
1582
+ value={formik.values.mediaEmbedded}
1583
+ className={classNames("p-inputtext-sm w-full small-input", {
1584
+ "p-invalid": isFormFieldValid(
1585
+ formik,
1586
+ "mediaEmbedded"
1587
+ ),
1588
+ })}
1589
+ /> */}
1590
+ <SelectButton
1591
+ value={formik.values.mediaEmbedded}
1592
+ // onChange={formik.handleChange}
1593
+ onChange={(e) => {
1594
+ formik.setFieldValue("mediaEmbedded", e.value);
1595
+ }}
1596
+ options={booleanOptions}
1597
+ className={classNames("p-inputtext-sm w-full small-input flex boolean-switch", {
1598
+ "p-invalid": isFormFieldValid(
1599
+ formik,
1600
+ "mediaEmbedded"
1601
+ ),
1602
+ })}
1603
+ />
1604
+ {isFormFieldValid(formik, "mediaEmbedded") && (
1605
+ <Message
1606
+ severity="error"
1607
+ text={formik?.errors?.mediaEmbedded?.toString()}
1608
+ />
1609
+ )}
1610
+ </div>
1611
+ </div>
1612
+ )}
1613
+ {currentFields.includes("relationType") && (
1614
+ <div className="md:col-6 sm:col-12">
1615
+ <div className="field">
1616
+ {/* <label
1617
+ htmlFor="relationType"
1618
+ className="form-label form-field-label"
1619
+ >
1620
+ Relation Type
1621
+ </label>
1622
+ <Dropdown
1623
+ id="relationType"
1624
+ name="relationType"
1625
+ value={formik.values.relationType}
1626
+ options={fieldDefaultMetaData.data.relationTypes}
1627
+ onChange={(e) =>
1628
+ formik.setFieldValue("relationType", e.value)
1629
+ }
1630
+ placeholder="Select a Data Source"
1631
+ className={classNames("p-inputtext-sm w-full small-input", {
1632
+ "p-invalid": isFormFieldValid(
1633
+ formik,
1634
+ "relationType"
1635
+ ),
1636
+ })}
1637
+ /> */}
1638
+
1639
+ <label
1640
+ htmlFor="relationType"
1641
+ className="form-label form-field-label "
1642
+ >
1643
+ Relation Type
1644
+ </label>
1645
+ <SelectButton
1646
+ value={formik.values.relationType}
1647
+ options={fieldDefaultMetaData.data.relationTypes}
1648
+ onChange={(e) =>
1649
+ formik.setFieldValue("relationType", e.value)
1650
+ }
1651
+ className={classNames("p-inputtext-sm w-full small-input flex boolean-switch", {
1652
+ "p-invalid": isFormFieldValid(formik, "relationType"),
1653
+ })}
1654
+ optionLabel="label"
1655
+ />
1656
+
1657
+ {/* <div className="align-items-center">
1658
+ <div className="flex mt-3">
1659
+ {fieldDefaultMetaData?.data?.relationTypes.map((i: any) => (
1660
+ <div key={i.value} className="mr-3">
1661
+ <RadioButton
1662
+ inputId="ingredient1"
1663
+ name="pizza"
1664
+ value={i.value}
1665
+ onChange={(e) => formik.setFieldValue("relationType", e.value)}
1666
+ checked={formik.values.relationType === i.value}
1667
+ />
1668
+ <label htmlFor="ingredient1" className="form-label form-field-label ml-2">{i.value}</label>
1669
+ </div>
1670
+ ))}
1671
+ </div>
1672
+ </div> */}
1673
+
1674
+ {isFormFieldValid(formik, "relationType") && (
1675
+ <Message
1676
+ severity="error"
1677
+ text={formik?.errors?.relationType?.toString()}
1678
+ />
1679
+ )}
1680
+ </div>
1681
+ </div>
1682
+ )}
1683
+ {currentFields.includes("relationType") && formik.values.relationType === "many-to-one" && (
1684
+ <div className="md:col-6 sm:col-12">
1685
+ <div className="field">
1686
+ <label
1687
+ htmlFor="relationCascade"
1688
+ className="form-label form-field-label"
1689
+ >
1690
+ Relation Cascade
1691
+ </label>
1692
+ <Dropdown
1693
+ id="relationCascade"
1694
+ name="relationCascade"
1695
+ value={formik.values.relationCascade}
1696
+ options={fieldDefaultMetaData.data.cascadeTypes}
1697
+ onChange={(e) =>
1698
+ formik.setFieldValue(
1699
+ "relationCascade",
1700
+ e.value
1701
+ )
1702
+ }
1703
+ placeholder="Cascade"
1704
+ className={classNames("small-input p-inputtext-sm w-full", {
1705
+ "p-invalid": isFormFieldValid(
1706
+ formik,
1707
+ "relationCascade"
1708
+ ),
1709
+ })}
1710
+ />
1711
+ {isFormFieldValid(formik, "relationCascade") && (
1712
+ <Message
1713
+ severity="error"
1714
+ text={formik?.errors?.relationCascade?.toString()}
1715
+ />
1716
+ )}
1717
+ </div>
1718
+ </div>
1719
+ )}
1720
+
1721
+
1722
+ {currentFields.includes("relationModelFieldName") && formik.values.relationType === "many-to-many" && (
1723
+ <div className="md:col-6 sm:col-12">
1724
+ <div className="field">
1725
+ <label
1726
+ htmlFor="relationModelFieldName"
1727
+ className="form-label form-field-label"
1728
+ >
1729
+ Relation Model Field Name
1730
+ </label>
1731
+ <InputText
1732
+ type="text"
1733
+ id="relationModelFieldName"
1734
+ name="relationModelFieldName"
1735
+ onChange={formik.handleChange}
1736
+ value={formik.values.relationModelFieldName}
1737
+ className={classNames("p-inputtext-sm w-full small-input", {
1738
+ "p-invalid": isFormFieldValid(
1739
+ formik,
1740
+ "relationModelFieldName"
1741
+ ),
1742
+ })}
1743
+ />
1744
+ {isFormFieldValid(formik, "relationModelFieldName") && (
1745
+ <Message
1746
+ severity="error"
1747
+ text={formik?.errors?.relationModelFieldName?.toString()}
1748
+ />
1749
+ )}
1750
+
1751
+ </div>
1752
+ </div>
1753
+ )}
1754
+
1755
+
1756
+ {currentFields.includes("relationCreateInverse") && formik.values.relationType === "many-to-many" && (
1757
+ <div className="md:col-6 sm:col-12">
1758
+ <div className="field">
1759
+ <label
1760
+ htmlFor="relationCreateInverse"
1761
+ className="form-label form-field-label"
1762
+ >
1763
+ Relation Create Inverse
1764
+ </label>
1765
+ <Dropdown
1766
+ id="relationCreateInverse"
1767
+ name="relationCreateInverse"
1768
+ value={formik.values.relationCreateInverse}
1769
+ options={relationCreateInverses}
1770
+ onChange={(e) =>
1771
+ formik.setFieldValue(
1772
+ "relationCreateInverse",
1773
+ e.value
1774
+ )
1775
+ }
1776
+ placeholder="Select a Data Source"
1777
+ className={classNames("p-inputtext-sm w-full small-input", {
1778
+ "p-invalid": isFormFieldValid(
1779
+ formik,
1780
+ "relationCreateInverse"
1781
+ ),
1782
+ })}
1783
+ />
1784
+ {isFormFieldValid(
1785
+ formik,
1786
+ "relationCreateInverse"
1787
+ ) && (
1788
+ <Message
1789
+ severity="error"
1790
+ text={formik?.errors?.relationCreateInverse?.toString()}
1791
+ />
1792
+ )}
1793
+ </div>
1794
+ </div>
1795
+ )}
1796
+
1797
+
1798
+ <div className="md:col-12 sm:col-12">
1799
+ <div className="grid p-nogutter">
1800
+ {currentFields.includes("relationModelModuleName") && (
1801
+ <div className="md:col-6 sm:col-12">
1802
+ <div className="field">
1803
+ <label
1804
+ htmlFor="relationModelModuleName"
1805
+ className="form-label form-field-label"
1806
+ >
1807
+ Relation Model Module Name
1808
+ </label>
1809
+
1810
+ <SingleSelectAutoCompleteField
1811
+ key="relationModelModuleName"
1812
+ formik={formik}
1813
+ isFormFieldValid={isFormFieldValid}
1814
+ fieldName="relationModelModuleName"
1815
+ fieldNameId="relationModelModuleName"
1816
+ labelKey="name"
1817
+ valueKey="name"
1818
+ searchData={searchRelationModelModuleNames}
1819
+ existingData={formik.values.relationModelModuleName}
1820
+ additionalAction={(e: any) => formik.setFieldValue("relationModelSingularName", "")}
1821
+ />
1822
+
1823
+ {/* <AutoComplete
1824
+ value={selectedRelationModelModuleName}
1825
+ suggestions={filteredRelationModelModuleNames}
1826
+ invalid={isFormFieldValid(
1827
+ formik,
1828
+ "relationModelModuleName"
1829
+ )}
1830
+ completeMethod={searchRelationModelModuleNames}
1831
+ virtualScrollerOptions={{ itemSize: 38 }}
1832
+ field="label"
1833
+ className="small-input"
1834
+ dropdown
1835
+ onChange={(e) => {
1836
+ setSelectedRelationModelModuleName(e.value);
1837
+ formik.setFieldValue(
1838
+ "relationModelModuleName",
1839
+ e.value
1840
+ );
1841
+ }}
1842
+ /> */}
1843
+
1844
+ {isFormFieldValid(
1845
+ formik,
1846
+ "relationModelModuleName"
1847
+ ) && (
1848
+ <Message
1849
+ severity="error"
1850
+ text={formik?.errors?.relationModelModuleName?.toString()}
1851
+ />
1852
+ )}
1853
+ </div>
1854
+ </div>
1855
+ )}
1856
+
1857
+ {currentFields.includes(
1858
+ "relationModelSingularName"
1859
+ ) && (
1860
+ <div className="md:col-6 sm:col-12">
1861
+ <div className="field">
1862
+ <label
1863
+ htmlFor="relationModelSingularName"
1864
+ className="form-label form-field-label"
1865
+ >
1866
+ Relation Model Singular Name
1867
+ </label>
1868
+
1869
+
1870
+ <SingleSelectAutoCompleteField
1871
+ key="relationModelSingularName"
1872
+ formik={formik}
1873
+ isFormFieldValid={isFormFieldValid}
1874
+ fieldName="relationModelSingularName"
1875
+ fieldNameId="relationModelSingularName"
1876
+ labelKey="displayName"
1877
+ valueKey="singularName"
1878
+ searchData={searchRelationModelSingularNames}
1879
+ existingData={formik.values.relationModelSingularName}
1880
+ />
1881
+
1882
+ {/* <InputText
1883
+ type="text"
1884
+ id="relationModelSingularName"
1885
+ name="relationModelSingularName"
1886
+ onChange={formik.handleChange}
1887
+ value={formik.values.relationModelSingularName}
1888
+ className={classNames("p-inputtext-sm w-full small-input", {
1889
+ "p-invalid": isFormFieldValid(
1890
+ formik,
1891
+ "relationModelSingularName"
1892
+ ),
1893
+ })}
1894
+ /> */}
1895
+ {isFormFieldValid(
1896
+ formik,
1897
+ "relationModelSingularName"
1898
+ ) && (
1899
+ <Message
1900
+ severity="error"
1901
+ text={formik?.errors?.relationModelSingularName?.toString()}
1902
+ />
1903
+ )}
1904
+ </div>
1905
+ </div>
1906
+ )}
1907
+
1908
+
1909
+ </div>
1910
+ </div>
1911
+
1912
+
1913
+ {currentFields.includes("selectionDynamicProvider") && (
1914
+ <div className="md:col-6 sm:col-12">
1915
+ <div className="field">
1916
+ <label
1917
+ htmlFor="selectionDynamicProvider"
1918
+ className="form-label form-field-label"
1919
+ >
1920
+ Selection Dynamic Provider
1921
+ </label>
1922
+
1923
+ <SingleSelectAutoCompleteField
1924
+ key="selectionDynamicProvider"
1925
+ formik={formik}
1926
+ isFormFieldValid={isFormFieldValid}
1927
+ // relationField={false}
1928
+ fieldName="selectionDynamicProvider"
1929
+ fieldNameId={null}
1930
+ labelKey="label"
1931
+ valueKey="value"
1932
+ searchData={searchSelectionDynamicProvider}
1933
+ existingData={formik.values.selectionDynamicProvider}
1934
+ additionalAction={(e: any) => setMarkdownText(e.target.value.help)}
1935
+ />
1936
+
1937
+
1938
+ {/* <AutoComplete
1939
+ value={selectionDynamicProvider}
1940
+ suggestions={filteredSelectionDynamicProvider}
1941
+ invalid={isFormFieldValid(
1942
+ formik,
1943
+ "selectionDynamicProvider"
1944
+ )}
1945
+ completeMethod={searchSelectionDynamicProvider}
1946
+ virtualScrollerOptions={{ itemSize: 38 }}
1947
+ field="label"
1948
+ className="small-input"
1949
+ dropdown
1950
+ onChange={(e) => {
1951
+ setSelectionDynamicProvider(e.value);
1952
+ formik.setFieldValue(
1953
+ "selectionDynamicProvider",
1954
+ e.value.value
1955
+ );
1956
+ }}
1957
+ /> */}
1958
+
1959
+ {isFormFieldValid(
1960
+ formik,
1961
+ "selectionDynamicProvider"
1962
+ ) && (
1963
+ <Message
1964
+ severity="error"
1965
+ text={formik?.errors?.selectionDynamicProvider?.toString()}
1966
+ />
1967
+ )}
1968
+ </div>
1969
+ </div>
1970
+ )}
1971
+ {currentFields.includes("selectionValueType") && (
1972
+ <div className="md:col-6 sm:col-12">
1973
+ <div className="field form-dropdown-select">
1974
+ <label
1975
+ htmlFor="selectionValueType"
1976
+ className="form-label form-field-label"
1977
+ >
1978
+ Selection Value Type
1979
+ </label>
1980
+ <Dropdown
1981
+ id="selectionValueType"
1982
+ name="selectionValueType"
1983
+ value={formik.values.selectionValueType}
1984
+ options={selctionValueTypes}
1985
+ onChange={(e) =>
1986
+ formik.setFieldValue(
1987
+ "selectionValueType",
1988
+ e.value
1989
+ )
1990
+ }
1991
+ placeholder="Select a Data Source"
1992
+ className={classNames("p-inputtext-sm w-full small-input", {
1993
+ "p-invalid": isFormFieldValid(
1994
+ formik,
1995
+ "selectionValueType"
1996
+ ),
1997
+ })}
1998
+ />
1999
+ {isFormFieldValid(
2000
+ formik,
2001
+ "selectionValueType"
2002
+ ) && (
2003
+ <Message
2004
+ severity="error"
2005
+ text={formik?.errors?.selectionValueType?.toString()}
2006
+ />
2007
+ )}
2008
+ </div>
2009
+ </div>
2010
+ )}
2011
+
2012
+ {currentFields.includes("selectionStaticValues") && (
2013
+ <div className="md:col-6 sm:col-12">
2014
+ <div className="field">
2015
+ <label
2016
+ htmlFor="selectionStaticValues"
2017
+ className="form-label form-field-label"
2018
+ >
2019
+ Selection Static Values
2020
+ </label>
2021
+ {/* <InputTextarea
2022
+ value={selectionStaticValues}
2023
+ placeholder="male:Male"
2024
+ onChange={(e) => {
2025
+ const data = e.target.value
2026
+ .split("\n")
2027
+ .filter((line) => line.trim() !== "");
2028
+
2029
+ setSelectionStaticValues(e.target.value);
2030
+ formik.setFieldValue(
2031
+ "selectionStaticValues",
2032
+ data
2033
+ );
2034
+ }}
2035
+ rows={5}
2036
+ cols={30}
2037
+ /> */}
2038
+ {formik.values.selectionStaticValues.map((enumValue: string, index: number) => (
2039
+ <SelectionStaticValues
2040
+ key={index}
2041
+ enumValue={enumValue}
2042
+ onUpdate={(updatedString: any) => updateEnumValues(index, updatedString)}
2043
+ onDelete={() => deleteEnumValue(index)}
2044
+ onAdd={addEnumValue}
2045
+ />
2046
+ ))
2047
+ }
2048
+ {isFormFieldValid(
2049
+ formik,
2050
+ "selectionStaticValues"
2051
+ ) && (
2052
+ <Message
2053
+ severity="error"
2054
+ text={formik?.errors?.selectionStaticValues?.toString()}
2055
+ />
2056
+ )}
2057
+ </div>
2058
+ </div>
2059
+ )}
2060
+ {currentFields.includes("computedFieldValueType") && (
2061
+ <div className="md:col-6 sm:col-12">
2062
+ <div className="field">
2063
+ <label
2064
+ htmlFor="computedFieldValueType"
2065
+ className="form-label form-field-label"
2066
+ >
2067
+ Computed Field Value Type
2068
+ </label>
2069
+ <AutoComplete
2070
+
2071
+ value={selectedComputedFieldValueType}
2072
+ invalid={isFormFieldValid(formik, "computedFieldValueType")}
2073
+ suggestions={filteredComputedFieldValueTypes}
2074
+ completeMethod={searchComputedFieldValueType}
2075
+ virtualScrollerOptions={{ itemSize: 38 }}
2076
+ field="label"
2077
+ dropdown
2078
+ className="small-input"
2079
+ onChange={(e) => {
2080
+ setSelectedComputedFieldValueType(e.value);
2081
+ formik.setFieldValue("computedFieldValueType", e.value.value);
2082
+ }}
2083
+ />
2084
+
2085
+ {/* <Dropdown
2086
+ id="mediaTypes"
2087
+ name="mediaTypes"
2088
+ value={formik.values.mediaTypes}
2089
+ options={fieldDefaultMetaData.data.mediaTypes}
2090
+ onChange={(e) =>
2091
+ formik.setFieldValue("mediaTypes", e.value)
2092
+ }
2093
+ placeholder="Select a Data Source"
2094
+ className={classNames("p-inputtext-sm w-full small-input", {
2095
+ "p-invalid": isFormFieldValid(
2096
+ formik,
2097
+ "mediaTypes"
2098
+ ),
2099
+ })}
2100
+ /> */}
2101
+ {isFormFieldValid(formik, "computedFieldValueType") && (
2102
+ <Message
2103
+ severity="error"
2104
+ text={formik?.errors?.computedFieldValueType?.toString()}
2105
+ />
2106
+ )}
2107
+ </div>
2108
+ </div>
2109
+ )}
2110
+
2111
+ {currentFields.includes(
2112
+ "computedFieldValueProvider"
2113
+ ) && (
2114
+ <div className="md:col-6 sm:col-12">
2115
+ <div className="field">
2116
+ <label
2117
+ htmlFor="computedFieldValueProvider"
2118
+ className="form-label form-field-label"
2119
+ >
2120
+ Computed Field Provider
2121
+ </label>
2122
+
2123
+ <SingleSelectAutoCompleteField
2124
+ key="computedFieldValueProvider"
2125
+ formik={formik}
2126
+ isFormFieldValid={isFormFieldValid}
2127
+ // relationField={false}
2128
+ fieldName="computedFieldValueProvider"
2129
+ fieldNameId={null}
2130
+ labelKey="label"
2131
+ valueKey="value"
2132
+ searchData={searchComputedProvider}
2133
+ existingData={formik.values.computedFieldValueProvider}
2134
+ additionalAction={(e: any) => setMarkdownText(e.target.value.help)}
2135
+
2136
+ />
2137
+ {/* <InputText
2138
+ type="text"
2139
+ id="computedFieldValueProvider"
2140
+ name="computedFieldValueProvider"
2141
+ onChange={formik.handleChange}
2142
+ value={formik.values.computedFieldValueProvider}
2143
+ className={classNames("p-inputtext-sm w-full small-input", {
2144
+ "p-invalid": isFormFieldValid(
2145
+ formik,
2146
+ "computedFieldValueProvider"
2147
+ ),
2148
+ })}
2149
+ /> */}
2150
+ {isFormFieldValid(
2151
+ formik,
2152
+ "computedFieldValueProvider"
2153
+ ) && (
2154
+ <Message
2155
+ severity="error"
2156
+ text={formik?.errors?.computedFieldValueProvider?.toString()}
2157
+ />
2158
+ )}
2159
+ </div>
2160
+ </div>
2161
+ )}
2162
+ {/* {currentFields.includes("externalIdProvider") && (
2163
+ <div className="md:col-6 sm:col-12">
2164
+ <div className="field">
2165
+ <label
2166
+ htmlFor="externalIdProvider"
2167
+ className="form-label form-field-label"
2168
+ >
2169
+ External Id Provider
2170
+ </label>
2171
+ <SingleSelectAutoCompleteField
2172
+ key="externalIdProvider"
2173
+ formik={formik}
2174
+ isFormFieldValid={isFormFieldValid}
2175
+ // relationField={false}
2176
+ fieldName="externalIdProvider"
2177
+ fieldNameId={null}
2178
+ labelKey="label"
2179
+ valueKey="value"
2180
+ searchData={searchExternalIdProvider}
2181
+ existingData={formik.values.externalIdProvider}
2182
+ additionalAction={(e: any) => setMarkdownText(e.target.value.help)}
2183
+ />
2184
+
2185
+
2186
+ {isFormFieldValid(
2187
+ formik,
2188
+ "externalIdProvider"
2189
+ ) && (
2190
+ <Message
2191
+ severity="error"
2192
+ text={formik?.errors?.externalIdProvider?.toString()}
2193
+ />
2194
+ )}
2195
+ </div>
2196
+ </div>
2197
+ )} */}
2198
+
2199
+ {currentFields.includes("selectionDynamicProviderCtxt") && (
2200
+ <div className="md:col-12 sm:col-12">
2201
+
2202
+ <div className="grid p-nogutter">
2203
+ {/* {markdownText &&
2204
+ <div className="md:col-12 sm:col-12">
2205
+ <div className="field">
2206
+ <label htmlFor="name" className="form-label form-field-label">
2207
+ Markdown
2208
+ </label>
2209
+ <MarkdownViewer data={markdownText}></MarkdownViewer>
2210
+ </div>
2211
+ </div>
2212
+ } */}
2213
+
2214
+ <div className="md:col-12 sm:col-12">
2215
+ <div className="field">
2216
+ <label htmlFor="selectionDynamicProviderCtxt" className="form-label form-field-label">
2217
+ Selection Dynamic Provider Context
2218
+ </label>
2219
+ <CodeEditor
2220
+ formik={formik}
2221
+ field="selectionDynamicProviderCtxt" >
2222
+ </CodeEditor>
2223
+ <div className=" form-field-label mt-4">{markdownText}</div>
2224
+
2225
+ {isFormFieldValid(
2226
+ formik,
2227
+ "selectionDynamicProviderCtxt"
2228
+ ) && (
2229
+ <Message
2230
+ severity="error"
2231
+ text={formik?.errors?.selectionDynamicProviderCtxt?.toString()}
2232
+ />
2233
+ )}
2234
+ </div>
2235
+ </div>
2236
+ {/* {currentFields.includes("markdown") && ( */}
2237
+
2238
+ </div>
2239
+ </div>
2240
+ )}
2241
+
2242
+ {currentFields.includes("computedFieldValueProviderCtxt") && (
2243
+ <div className="md:col-12 sm:col-12">
2244
+
2245
+ <div className="grid p-nogutter">
2246
+ {/* {markdownText &&
2247
+ <div className="md:col-12 sm:col-12">
2248
+ <div className="field">
2249
+ <label htmlFor="name" className="form-label form-field-label">
2250
+ Markdown
2251
+ </label>
2252
+ <MarkdownViewer data={markdownText}></MarkdownViewer>
2253
+ </div>
2254
+ </div>
2255
+ } */}
2256
+ <div className="md:col-12 sm:col-12">
2257
+ <div className="field">
2258
+ <label htmlFor="computedFieldValueProviderCtxt" className="form-label form-field-label">
2259
+ Computed Field Value Provider Context
2260
+ </label>
2261
+ <CodeEditor
2262
+ formik={formik}
2263
+ field="computedFieldValueProviderCtxt" >
2264
+ </CodeEditor>
2265
+ <div className="form-field-label mt-4">{markdownText}</div>
2266
+
2267
+ {isFormFieldValid(
2268
+ formik,
2269
+ "computedFieldValueProviderCtxt"
2270
+ ) && (
2271
+ <Message
2272
+ severity="error"
2273
+ text={formik?.errors?.computedFieldValueProviderCtxt?.toString()}
2274
+ />
2275
+ )}
2276
+ </div>
2277
+ </div>
2278
+ {/* {currentFields.includes("markdown") && ( */}
2279
+
2280
+ </div>
2281
+ </div>
2282
+ )}
2283
+
2284
+ {/* {currentFields.includes("externalIdProviderCtxt") && (
2285
+ <div className="md:col-12 sm:col-12">
2286
+
2287
+ <div className="grid p-nogutter">
2288
+ {markdownText &&
2289
+ <div className="md:col-12 sm:col-12">
2290
+ <div className="field">
2291
+ <label htmlFor="name" className="form-label form-field-label">
2292
+ Markdown
2293
+ </label>
2294
+ <MarkdownViewer data={markdownText}></MarkdownViewer>
2295
+ </div>
2296
+ </div>
2297
+ }
2298
+ <div className="md:col-12 sm:col-12">
2299
+ <div className="field">
2300
+ <label htmlFor="name" className="form-label form-field-label">
2301
+ External Id Provider Context
2302
+ </label>
2303
+ <CodeEditor
2304
+ formik={formik}
2305
+ field="externalIdProviderCtxt" >
2306
+ </CodeEditor>
2307
+ {isFormFieldValid(
2308
+ formik,
2309
+ "externalIdProviderCtxt"
2310
+ ) && (
2311
+ <Message
2312
+ severity="error"
2313
+ text={formik?.errors?.externalIdProviderCtxt?.toString()}
2314
+ />
2315
+ )}
2316
+ </div>
2317
+ </div>
2318
+
2319
+ </div>
2320
+ </div>
2321
+ )} */}
2322
+
2323
+ </div>
2324
+ )}
2325
+ {(currentFields.includes("regexPattern") || currentFields.includes("min") || currentFields.includes("max") || currentFields.includes("ormType")) && ormTypeOptions &&
2326
+ <>
2327
+ <div className="grid p-nogutter section-sub-heading">
2328
+ <div className="md:col-12 sm:col-12">
2329
+ <p className="form-subheading">Validations</p>
2330
+ </div>
2331
+ </div>
2332
+ <div className="grid p-nogutter">
2333
+ {(currentFields.includes("regexPattern") && selectedType.value === "password") &&
2334
+ <>
2335
+ <div className="md:col-6 sm:col-12">
2336
+ <div className="field">
2337
+ <label
2338
+ htmlFor="regexPattern"
2339
+ className="form-label form-field-label"
2340
+ >
2341
+ Password Policy
2342
+ </label>
2343
+ <Dropdown value={selectedPasswordPolicy} onChange={(e: DropdownChangeEvent) => {
2344
+ setSelectedPasswordPolicy(e.value)
2345
+ if (e.value !== "custom") {
2346
+ formik.setFieldValue('regexPattern', e.value)
2347
+ }
2348
+ }} options={passwordPolicyOptions} optionLabel="label"
2349
+ placeholder="Select a Password Policy"
2350
+ // className="w-full md:w-14rem"
2351
+ className="p-inputtext-sm w-full small-input"
2352
+ checkmark={true} highlightOnSelect={false} />
2353
+
2354
+ </div>
2355
+ </div>
2356
+ </>
2357
+ }
2358
+ {currentFields.includes("regexPattern") && (
2359
+ <>
2360
+ <div className="md:col-6 sm:col-12">
2361
+ <div className="field">
2362
+ <label
2363
+ htmlFor="regexPattern"
2364
+ className="form-label form-field-label"
2365
+ >
2366
+ Regex Pattern
2367
+ </label>
2368
+ <InputText
2369
+ type="text"
2370
+ id="regexPattern"
2371
+ name="regexPattern"
2372
+ onChange={formik.handleChange}
2373
+ value={formik.values.regexPattern}
2374
+ className={classNames("p-inputtext-sm w-full small-input", {
2375
+ "p-invalid": isFormFieldValid(
2376
+ formik,
2377
+ "regexPattern"
2378
+ ),
2379
+ })}
2380
+ />
2381
+ {isFormFieldValid(formik, "regexPattern") && (
2382
+ <Message
2383
+ severity="error"
2384
+ text={formik?.errors?.regexPattern?.toString()}
2385
+ />
2386
+ )}
2387
+ </div>
2388
+ </div>
2389
+ {currentFields.includes("regexPattern") && (
2390
+
2391
+ <div className="md:col-6 sm:col-12">
2392
+ <div className="field">
2393
+ <label
2394
+ htmlFor="regexPatternNotMatchingErrorMsg"
2395
+ className="form-label form-field-label"
2396
+ >
2397
+ Regex Pattern Not Matching Error Msg
2398
+ </label>
2399
+ <InputText
2400
+ type="text"
2401
+ id="regexPatternNotMatchingErrorMsg"
2402
+ name="regexPatternNotMatchingErrorMsg"
2403
+ onChange={formik.handleChange}
2404
+ value={formik.values.regexPatternNotMatchingErrorMsg}
2405
+ className={classNames("p-inputtext-sm w-full small-input", {
2406
+ "p-invalid": isFormFieldValid(
2407
+ formik,
2408
+ "regexPatternNotMatchingErrorMsg"
2409
+ ),
2410
+ })}
2411
+ />
2412
+ {isFormFieldValid(formik, "regexPatternNotMatchingErrorMsg") && (
2413
+ <Message
2414
+ severity="error"
2415
+ text={formik?.errors?.regexPatternNotMatchingErrorMsg?.toString()}
2416
+ />
2417
+ )}
2418
+ </div>
2419
+ </div>
2420
+ )}
2421
+ </>
2422
+
2423
+ )}
2424
+ {(currentFields.includes("min") || currentFields.includes("max")) &&
2425
+ <div className="md:col-12 sm:col-12">
2426
+ <div className="grid p-nogutter">
2427
+ {currentFields.includes("min") && (
2428
+ <div className="md:col-6 sm:col-12">
2429
+ <div className="field">
2430
+ <label htmlFor="min" className="form-label form-field-label">
2431
+ Min (Characters Allowed)
2432
+
2433
+ </label>
2434
+ {/* <InputText
2435
+ type="text"
2436
+ id="min"
2437
+ name="min"
2438
+ onChange={formik.handleChange}
2439
+ value={formik.values.min}
2440
+ className={classNames("p-inputtext-sm w-full small-input", {
2441
+ "p-invalid": isFormFieldValid(formik, "min"),
2442
+ })}
2443
+ /> */}
2444
+ {/* <RenderMinValueInput></RenderMinValueInput> */}
2445
+ {(selectedType.value === "int" ||
2446
+ selectedType.value === "decimal" ||
2447
+ selectedType.value === "shortText" ||
2448
+ selectedType.value === "decimal" ||
2449
+ selectedType.value === "longText" ||
2450
+ selectedType.value === "richText" ||
2451
+ selectedType.value === "password" ||
2452
+ selectedType.value === "json") &&
2453
+ <InputNumber
2454
+ id="min"
2455
+ name="min"
2456
+ onValueChange={formik.handleChange}
2457
+ value={formik.values.min}
2458
+ className={classNames("p-inputtext-sm w-full small-input", {
2459
+ "p-invalid": isFormFieldValid(
2460
+ formik,
2461
+ "min"
2462
+ ),
2463
+ })}
2464
+ />
2465
+ }
2466
+
2467
+ {isFormFieldValid(formik, "min") && (
2468
+ <Message
2469
+ severity="error"
2470
+ text={formik?.errors?.min?.toString()}
2471
+ />
2472
+ )}
2473
+ </div>
2474
+ </div>
2475
+ )}
2476
+ {currentFields.includes("max") && (
2477
+ <div className="md:col-6 sm:col-12">
2478
+ <div className="field">
2479
+ <label htmlFor="max" className="form-label form-field-label">
2480
+ Max (Character allowed)
2481
+ </label>
2482
+ {/* <InputText
2483
+ type="text"
2484
+ id="max"
2485
+ name="max"
2486
+ onChange={formik.handleChange}
2487
+ value={formik.values.max}
2488
+ className={classNames("p-inputtext-sm w-full small-input", {
2489
+ "p-invalid": isFormFieldValid(formik, "max"),
2490
+ })}
2491
+ /> */}
2492
+ {(selectedType.value === "int" ||
2493
+ selectedType.value === "decimal" ||
2494
+ selectedType.value === "shortText" ||
2495
+ selectedType.value === "decimal" ||
2496
+ selectedType.value === "longText" ||
2497
+ selectedType.value === "richText" ||
2498
+ selectedType.value === "password" ||
2499
+ selectedType.value === "json") &&
2500
+ <InputNumber
2501
+ id="max"
2502
+ name="max"
2503
+ onValueChange={formik.handleChange}
2504
+ value={formik.values.max}
2505
+ className={classNames("p-inputtext-sm w-full small-input", {
2506
+ "p-invalid": isFormFieldValid(
2507
+ formik,
2508
+ "max"
2509
+ ),
2510
+ })}
2511
+ />
2512
+ }
2513
+
2514
+ {isFormFieldValid(formik, "max") && (
2515
+ <Message
2516
+ severity="error"
2517
+ text={formik?.errors?.max?.toString()}
2518
+ />
2519
+ )}
2520
+ </div>
2521
+ </div>
2522
+ )}
2523
+ </div>
2524
+ </div>
2525
+ }
2526
+ {currentFields.includes("ormType") && (
2527
+ <div className="md:col-12 sm:col-12">
2528
+ {ormTypeOptions && ormTypeOptions.length > 1 &&
2529
+ <div className="field">
2530
+ <label htmlFor="ormType" className="form-label form-field-label">
2531
+ Type
2532
+ </label>
2533
+ {/* <SingleSelectAutoCompleteField
2534
+ key="ormType"
2535
+ formik={formik}
2536
+ isFormFieldValid={isFormFieldValid}
2537
+ fieldName="ormType"
2538
+ fieldNameId="ormType"
2539
+ labelKey="label"
2540
+ valueKey="value"
2541
+ searchData={searchOrmTypes}
2542
+ existingData={formik.values.ormType}
2543
+ /> */}
2544
+
2545
+ <div className="ormTypeflex">
2546
+ {ormTypeOptions && ormTypeOptions.map((ormType: any) => {
2547
+ return (
2548
+ <>
2549
+ <div key={ormType.key} className="mr-3 align-items-center">
2550
+ <RadioButton inputId={ormType.label} name="ormType" value={ormType.label} onChange={(e) => {
2551
+ formik.setFieldValue("ormType", e.value);
2552
+ setSelectedOrmType(e.value)
2553
+ }} checked={selectedOrmType === ormType.label} />
2554
+ <label htmlFor={ormType.label} className="ml-2">{ormType.label}<br></br>
2555
+ <span className="ml-4 fieldSubTitle">{ormType.description}</span>
2556
+ </label>
2557
+ </div>
2558
+
2559
+ </>
2560
+ );
2561
+ })}
2562
+
2563
+ </div>
2564
+
2565
+ {isFormFieldValid(formik, "ormType") && (
2566
+ <Message
2567
+ severity="error"
2568
+ text={formik?.errors?.ormType?.toString()}
2569
+ />
2570
+ )}
2571
+ </div>
2572
+ }
2573
+
2574
+ </div>
2575
+ )}
2576
+ </div>
2577
+ </>
2578
+ }
2579
+
2580
+ <div className="grid p-nogutter section-sub-heading">
2581
+ <div className="md:col-12 sm:col-12">
2582
+ <p className="form-subheading">Settings</p>
2583
+ </div>
2584
+ </div>
2585
+ <div className="grid p-nogutter">
2586
+ {currentFields.includes("required") && (
2587
+ <div className="md:col-6 sm:col-12">
2588
+ <div className="field">
2589
+ <div className="flex align-items-center">
2590
+ <Checkbox
2591
+ name="required"
2592
+ onChange={(e) => {
2593
+ formik.setFieldValue("required", e.checked);
2594
+ }}
2595
+ checked={formik.values.required}
2596
+ ></Checkbox>
2597
+ <label htmlFor="ingredient1" className="form-label form-field-label ml-2">
2598
+ Required
2599
+ </label>
2600
+ </div>
2601
+ <p className="fieldSubTitle">You won't be able to create an entry if this field is empty</p>
2602
+
2603
+ {isFormFieldValid(formik, "required") && (
2604
+ <Message
2605
+ severity="error"
2606
+ text={formik?.errors?.required?.toString()}
2607
+ />
2608
+ )}
2609
+ </div>
2610
+ </div>
2611
+ )}
2612
+ {currentFields.includes("unique") && (
2613
+ <div className="md:col-6 sm:col-12">
2614
+ <div className="field">
2615
+ <div className="flex align-items-center">
2616
+ <Checkbox
2617
+ name="unique"
2618
+ onChange={(e) => {
2619
+ formik.setFieldValue("unique", e.checked);
2620
+ }}
2621
+ checked={formik.values.unique}
2622
+ ></Checkbox>
2623
+ <label htmlFor="ingredient1" className="form-label form-field-label ml-2">
2624
+ Unique
2625
+ </label>
2626
+ </div>
2627
+ <p className="fieldSubTitle">You won't be able to create an entry if there is an existing entry with identical content</p>
2628
+
2629
+ {isFormFieldValid(formik, "unique") && (
2630
+ <Message
2631
+ severity="error"
2632
+ text={formik?.errors?.unique?.toString()}
2633
+ />
2634
+ )}
2635
+ </div>
2636
+ </div>
2637
+ )}
2638
+ {currentFields.includes("index") && (
2639
+ <div className="md:col-6 sm:col-12">
2640
+ <div className="field">
2641
+ <div className="flex align-items-center">
2642
+ <Checkbox
2643
+ name="index"
2644
+ onChange={(e) => {
2645
+ formik.setFieldValue("index", e.checked);
2646
+ }}
2647
+ checked={formik.values.index}
2648
+ ></Checkbox>
2649
+ <label htmlFor="ingredient1" className="form-label form-field-label ml-2">
2650
+ Index
2651
+ </label>
2652
+ </div>
2653
+ {isFormFieldValid(formik, "index") && (
2654
+ <Message
2655
+ severity="error"
2656
+ text={formik?.errors?.index?.toString()}
2657
+ />
2658
+ )}
2659
+ </div>
2660
+ </div>
2661
+ )}
2662
+ {currentFields.includes("private") && (
2663
+ <div className="md:col-6 sm:col-12">
2664
+ <div className="field">
2665
+ <div className="flex align-items-center">
2666
+ <Checkbox
2667
+ name="private"
2668
+ onChange={(e) => {
2669
+ formik.setFieldValue("private", e.checked);
2670
+ }}
2671
+ checked={formik.values.private}
2672
+ ></Checkbox>
2673
+ <label htmlFor="ingredient1" className="form-label form-field-label ml-2">
2674
+ Private
2675
+ </label>
2676
+ </div>
2677
+ <p className="fieldSubTitle">This field will not show up in the API response</p>
2678
+
2679
+
2680
+ {isFormFieldValid(formik, "private") && (
2681
+ <Message
2682
+ severity="error"
2683
+ text={formik?.errors?.private?.toString()}
2684
+ />
2685
+ )}
2686
+ </div>
2687
+ </div>
2688
+ )}
2689
+ {currentFields.includes("encrypt") && (
2690
+ <div className="md:col-6 sm:col-12">
2691
+ <div className="field">
2692
+ <div className="flex align-items-center">
2693
+ <Checkbox
2694
+ name="encrypt"
2695
+ onChange={(e) => {
2696
+ formik.setFieldValue("encrypt", e.checked);
2697
+ setEncryptState(e.checked);
2698
+ }}
2699
+ checked={formik.values.encrypt}
2700
+ ></Checkbox>
2701
+ <label htmlFor="ingredient1" className="form-label form-field-label ml-2">
2702
+ Encrypt
2703
+ </label>
2704
+ </div>
2705
+ {isFormFieldValid(formik, "encrypt") && (
2706
+ <Message
2707
+ severity="error"
2708
+ text={formik?.errors?.encrypt?.toString()}
2709
+ />
2710
+ )}
2711
+ </div>
2712
+ </div>
2713
+ )}
2714
+ {currentFields.includes("isSystem") && (
2715
+ <div className="md:col-6 sm:col-12">
2716
+ <div className="field">
2717
+ <div className="flex align-items-center">
2718
+ <Checkbox
2719
+ name="isSystem"
2720
+ onChange={(e) => {
2721
+ formik.setFieldValue("isSystem", e.checked);
2722
+ }}
2723
+ checked={formik.values.isSystem}
2724
+ ></Checkbox>
2725
+ <label htmlFor="ingredient1" className="form-label form-field-label ml-2">
2726
+ isSystem
2727
+ </label>
2728
+ </div>
2729
+ {isFormFieldValid(formik, "isSystem") && (
2730
+ <Message
2731
+ severity="error"
2732
+ text={formik?.errors?.isSystem?.toString()}
2733
+ />
2734
+ )}
2735
+ </div>
2736
+ </div>
2737
+ )}
2738
+
2739
+ </div>
2740
+
2741
+
2742
+ {formik.values.encrypt === true && (
2743
+ <div className="grid p-nogutter mt-2">
2744
+ <div className="md:col-6 sm:col-12">
2745
+ <div className="field">
2746
+ <label
2747
+ htmlFor="encryptionType"
2748
+ className="form-label form-field-label"
2749
+ >
2750
+ Encryption Type
2751
+ </label>
2752
+ {/* <AutoComplete
2753
+ value={selectedEncryptionType}
2754
+ suggestions={filteredSelectionEncryptionType}
2755
+ invalid={isFormFieldValid(
2756
+ formik,
2757
+ "encryptionType"
2758
+ )}
2759
+ completeMethod={searchSelectionEncryptionType}
2760
+ virtualScrollerOptions={{ itemSize: 38 }}
2761
+ field="label"
2762
+ className="small-input"
2763
+ dropdown
2764
+ onChange={(e) => {
2765
+ setSelectedEncryptionType(e.value);
2766
+ formik.setFieldValue("encryptionType", e.value.value);
2767
+ }}
2768
+ /> */}
2769
+
2770
+ <SingleSelectAutoCompleteField
2771
+ key="encryptionType"
2772
+ formik={formik}
2773
+ isFormFieldValid={isFormFieldValid}
2774
+ fieldName="encryptionType"
2775
+ fieldNameId="encryptionType"
2776
+ labelKey="label"
2777
+ valueKey="value"
2778
+ searchData={searchSelectionEncryptionType}
2779
+ existingData={formik.values.encryptionType}
2780
+ />
2781
+ {isFormFieldValid(formik, "encryptionType") && (
2782
+ <Message
2783
+ severity="error"
2784
+ text={formik?.errors?.encryptionType?.toString()}
2785
+ />
2786
+ )}
2787
+ </div>
2788
+ </div>
2789
+ <div className="md:col-6 sm:col-12">
2790
+ <div className="field">
2791
+ <label htmlFor="decryptWhen" className="form-label form-field-label">
2792
+ Decrypt When
2793
+ </label>
2794
+ {/* <AutoComplete
2795
+ value={selectedDecryptWhen}
2796
+ suggestions={filteredSelectionDecryptWhen}
2797
+ invalid={isFormFieldValid(formik, "decryptWhen")}
2798
+ completeMethod={searchSelectionDecryptWhen}
2799
+ virtualScrollerOptions={{ itemSize: 38 }}
2800
+ field="label"
2801
+ className="small-input"
2802
+ dropdown
2803
+ onChange={(e) => {
2804
+ setSelectedeDecryptWhen(e.value);
2805
+ formik.setFieldValue("decryptWhen", e.value.value);
2806
+ }}
2807
+ /> */}
2808
+
2809
+ <SingleSelectAutoCompleteField
2810
+ key="decryptWhen"
2811
+ formik={formik}
2812
+ isFormFieldValid={isFormFieldValid}
2813
+ fieldName="decryptWhen"
2814
+ fieldNameId="decryptWhen"
2815
+ labelKey="label"
2816
+ valueKey="value"
2817
+ searchData={searchSelectionDecryptWhen}
2818
+ existingData={formik.values.decryptWhen}
2819
+ />
2820
+ {isFormFieldValid(formik, "decryptWhen") && (
2821
+ <Message
2822
+ severity="error"
2823
+ text={formik?.errors?.decryptWhen?.toString()}
2824
+ />
2825
+ )}
2826
+ </div>
2827
+ </div>
2828
+ </div>
2829
+ )}
2830
+ </TabPanel>
2831
+ </TabView>
2832
+ <div className="flex gap-3 justify-content-between">
2833
+ <div className="flex align-items-center gap-3 mt-3">
2834
+ <Button label="Cancel" size="small" severity="secondary" type="reset" onClick={() => setVisiblePopup(false)} outlined className="small-button" />
2835
+ </div>
2836
+ <div className="flex align-items-center gap-3 mt-3">
2837
+ <Button label="Finish" size="small" onClick={() => showError()} type="submit" className="small-button" />
2838
+ </div>
2839
+ </div>
2840
+ </div>
2841
+ {/* <div className="ml-4">
2842
+ <Button
2843
+ label="Save"
2844
+ onClick={() => showError(formik.validateForm)}
2845
+ type="submit"
2846
+ />
2847
+ </div> */}
2848
+ </div>
2849
+ </div>
2850
+ }
2851
+
2852
+ </form>
2853
+ </div >
2854
+ <Dialog
2855
+ visible={isBackPopupVisible}
2856
+ header="Select Type"
2857
+ headerClassName="text-center"
2858
+ modal
2859
+ footer={() => (
2860
+ <div className="flex justify-content-center">
2861
+ <Button label="Yes" icon="pi pi-check" className='small-button' type="reset" severity="danger" autoFocus onClick={() => {
2862
+ formik.resetForm()
2863
+ setIsBackPopupVisible(false);
2864
+ setShowTypeFilter(true);
2865
+ }} />
2866
+ <Button label="No" icon="pi pi-times" className='small-button' onClick={() => setIsBackPopupVisible(false)} />
2867
+ </div>
2868
+ )}
2869
+ onHide={() => setIsBackPopupVisible(false)}
2870
+ >
2871
+ <p>You have some unsaved data are you sure you want to go back?</p>
2872
+ </Dialog>
2873
+ </div >
2874
+ );
2875
+ };
2876
+
2877
+ export default FieldMetaDataForm;