@solidstarters/solid-core-ui 1.1.18 → 1.1.20

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 (495) hide show
  1. package/dist/components/Svg/FileSvg.d.ts +4 -0
  2. package/dist/components/Svg/FileSvg.d.ts.map +1 -0
  3. package/dist/components/Svg/FileSvg.js +15 -0
  4. package/dist/components/Svg/FileSvg.js.map +1 -0
  5. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  6. package/dist/components/auth/AuthLayout.js +9 -7
  7. package/dist/components/auth/AuthLayout.js.map +1 -1
  8. package/dist/components/auth/ForgotPasswordThankYou.d.ts.map +1 -1
  9. package/dist/components/auth/ForgotPasswordThankYou.js +3 -1
  10. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  11. package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
  12. package/dist/components/auth/SolidForgotPassword.js +3 -1
  13. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  14. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  15. package/dist/components/auth/SolidInitialLoginOtp.js +4 -2
  16. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  17. package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
  18. package/dist/components/auth/SolidInitiateRegisterOtp.js +4 -2
  19. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  20. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  21. package/dist/components/auth/SolidLogin.js +3 -1
  22. package/dist/components/auth/SolidLogin.js.map +1 -1
  23. package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -1
  24. package/dist/components/auth/SolidOTPVerify.js +3 -1
  25. package/dist/components/auth/SolidOTPVerify.js.map +1 -1
  26. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  27. package/dist/components/auth/SolidRegister.js +3 -1
  28. package/dist/components/auth/SolidRegister.js.map +1 -1
  29. package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
  30. package/dist/components/auth/SolidResetPassword.js +4 -2
  31. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  32. package/dist/components/common/CancelButton.js +2 -2
  33. package/dist/components/common/CancelButton.js.map +1 -1
  34. package/dist/components/common/DropzonePlaceholder.d.ts +6 -1
  35. package/dist/components/common/DropzonePlaceholder.d.ts.map +1 -1
  36. package/dist/components/common/DropzonePlaceholder.js +8 -2
  37. package/dist/components/common/DropzonePlaceholder.js.map +1 -1
  38. package/dist/components/common/FileReaderExt.d.ts.map +1 -1
  39. package/dist/components/common/FileReaderExt.js +2 -1
  40. package/dist/components/common/FileReaderExt.js.map +1 -1
  41. package/dist/components/common/SolidBreadcrumb.d.ts +11 -0
  42. package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -0
  43. package/dist/components/common/SolidBreadcrumb.js +22 -0
  44. package/dist/components/common/SolidBreadcrumb.js.map +1 -0
  45. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts +1 -1
  46. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts.map +1 -1
  47. package/dist/components/core/common/SolidConfigureLayoutElement.js +38 -10
  48. package/dist/components/core/common/SolidConfigureLayoutElement.js.map +1 -1
  49. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  50. package/dist/components/core/common/SolidGlobalSearchElement.js +3 -3
  51. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  52. package/dist/components/core/filter/SolidManyToOneFilterElement.js +1 -1
  53. package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
  54. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  55. package/dist/components/core/form/SolidFormView.js +33 -40
  56. package/dist/components/core/form/SolidFormView.js.map +1 -1
  57. package/dist/components/core/form/fields/ISolidField.d.ts +1 -0
  58. package/dist/components/core/form/fields/ISolidField.d.ts.map +1 -1
  59. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  60. package/dist/components/core/form/fields/SolidBooleanField.js +3 -2
  61. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  62. package/dist/components/core/form/fields/SolidDateField.d.ts.map +1 -1
  63. package/dist/components/core/form/fields/SolidDateField.js +3 -2
  64. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  65. package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/SolidDateTimeField.js +3 -2
  67. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  68. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
  69. package/dist/components/core/form/fields/SolidDecimalField.js +10 -2
  70. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  71. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  72. package/dist/components/core/form/fields/SolidIntegerField.js +10 -2
  73. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  74. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
  75. package/dist/components/core/form/fields/SolidJsonField.js +3 -2
  76. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  77. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  78. package/dist/components/core/form/fields/SolidLongTextField.js +3 -2
  79. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  80. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  81. package/dist/components/core/form/fields/SolidMediaMultipleField.js +69 -66
  82. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  83. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  84. package/dist/components/core/form/fields/SolidMediaSingleField.js +75 -93
  85. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  86. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  87. package/dist/components/core/form/fields/SolidRichTextField.js +3 -2
  88. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  89. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  90. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +3 -2
  91. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  92. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
  93. package/dist/components/core/form/fields/SolidSelectionStaticField.js +3 -2
  94. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  95. package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
  96. package/dist/components/core/form/fields/SolidShortTextField.js +3 -2
  97. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  98. package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
  99. package/dist/components/core/form/fields/SolidTimeField.js +3 -2
  100. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  101. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  102. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +9 -5
  103. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  104. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +7 -8
  105. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  106. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  107. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +10 -8
  108. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  109. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  110. package/dist/components/core/list/SolidListView.js +54 -48
  111. package/dist/components/core/list/SolidListView.js.map +1 -1
  112. package/dist/components/core/list/SolidManyToOneFilterElement.js +1 -1
  113. package/dist/components/core/list/SolidManyToOneFilterElement.js.map +1 -1
  114. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  115. package/dist/components/core/model/CreateModel.js +15 -8
  116. package/dist/components/core/model/CreateModel.js.map +1 -1
  117. package/dist/components/core/model/FieldMetaData.js +1 -1
  118. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  119. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  120. package/dist/components/core/model/FieldMetaDataForm.js +65 -68
  121. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  122. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  123. package/dist/components/core/model/ModelMetaData.js +6 -1
  124. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  125. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  126. package/dist/components/core/module/CreateModule.js +13 -7
  127. package/dist/components/core/module/CreateModule.js.map +1 -1
  128. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  129. package/dist/components/core/users/CreateUser.js +10 -4
  130. package/dist/components/core/users/CreateUser.js.map +1 -1
  131. package/dist/components/layout/AppConfig.js +1 -1
  132. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  133. package/dist/components/layout/AppSidebar.js +34 -5
  134. package/dist/components/layout/AppSidebar.js.map +1 -1
  135. package/dist/components/layout/navbar-two-menu.js +1 -1
  136. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  137. package/dist/components/layout/user-profile-menu.js +3 -1
  138. package/dist/components/layout/user-profile-menu.js.map +1 -1
  139. package/dist/helpers/downloadMediaFile.d.ts +2 -0
  140. package/dist/helpers/downloadMediaFile.d.ts.map +1 -0
  141. package/dist/helpers/downloadMediaFile.js +66 -0
  142. package/dist/helpers/downloadMediaFile.js.map +1 -0
  143. package/dist/helpers/getAcceptedFileTypes.d.ts +4 -0
  144. package/dist/helpers/getAcceptedFileTypes.d.ts.map +1 -0
  145. package/dist/helpers/getAcceptedFileTypes.js +20 -0
  146. package/dist/helpers/getAcceptedFileTypes.js.map +1 -0
  147. package/dist/helpers/permissions.d.ts +1 -0
  148. package/dist/helpers/permissions.d.ts.map +1 -1
  149. package/dist/helpers/permissions.js +3 -0
  150. package/dist/helpers/permissions.js.map +1 -1
  151. package/dist/index.js +2 -2
  152. package/dist/nextAuth/authProviders.d.ts.map +1 -1
  153. package/dist/nextAuth/authProviders.js +15 -10
  154. package/dist/nextAuth/authProviders.js.map +1 -1
  155. package/dist/redux/api/authApi.d.ts.map +1 -1
  156. package/dist/redux/api/authApi.js +1 -1
  157. package/dist/redux/api/authApi.js.map +1 -1
  158. package/dist/redux/api/solidViewApi.d.ts +1 -1
  159. package/dist/redux/api/solidViewApi.d.ts.map +1 -1
  160. package/dist/redux/api/solidViewApi.js +1 -1
  161. package/dist/redux/api/solidViewApi.js.map +1 -1
  162. package/dist/resources/globals.css +2551 -0
  163. package/dist/resources/images/AvatarDemo.png +0 -0
  164. package/dist/resources/images/Footerbg.png +0 -0
  165. package/dist/resources/images/LoginBanner.png +0 -0
  166. package/dist/resources/images/Navigation/Level.svg +5 -0
  167. package/dist/resources/images/Navigation/Presure.svg +7 -0
  168. package/dist/resources/images/Navigation/Temperature.svg +13 -0
  169. package/dist/resources/images/Navigation/settings.png +0 -0
  170. package/dist/resources/images/Profile/Avatar.png +0 -0
  171. package/dist/resources/images/SS-Logo.png +0 -0
  172. package/dist/resources/images/activity.svg +3 -0
  173. package/dist/resources/images/app-builder.png +0 -0
  174. package/dist/resources/images/auth/solid-left-layout-bg.png +0 -0
  175. package/dist/resources/images/auth/solid-login-light.png +0 -0
  176. package/dist/resources/images/auth/solid-right-layout-bg.png +0 -0
  177. package/dist/resources/images/clog-wheel.png +0 -0
  178. package/dist/resources/images/dark-mode.png +0 -0
  179. package/dist/resources/images/dashboard/Ellipse 1.svg +10 -0
  180. package/dist/resources/images/dashboard/Rectangle 17.svg +10 -0
  181. package/dist/resources/images/dashboard/Rectangle 25.svg +11 -0
  182. package/dist/resources/images/dashboard/image 5.svg +9 -0
  183. package/dist/resources/images/eye-icon.png +0 -0
  184. package/dist/resources/images/fb.svg +3 -0
  185. package/dist/resources/images/fileReader/image-jpg.png +0 -0
  186. package/dist/resources/images/filter-icon.png +0 -0
  187. package/dist/resources/images/form/user.png +0 -0
  188. package/dist/resources/images/iam.png +0 -0
  189. package/dist/resources/images/icons/icon-activity.svg +3 -0
  190. package/dist/resources/images/icons/icon-calender.svg +3 -0
  191. package/dist/resources/images/icons/icon-graph.svg +3 -0
  192. package/dist/resources/images/icons/icon-kanban.svg +3 -0
  193. package/dist/resources/images/icons/icon-list.svg +3 -0
  194. package/dist/resources/images/icons/icon-users.svg +3 -0
  195. package/dist/resources/images/icons/jump-to-icon.png +0 -0
  196. package/dist/resources/images/insta.svg +3 -0
  197. package/dist/resources/images/layout/images/comfortable.png +0 -0
  198. package/dist/resources/images/layout/images/compact.png +0 -0
  199. package/dist/resources/images/layout/images/cozy.png +0 -0
  200. package/dist/resources/images/layout/images/kanban.png +0 -0
  201. package/dist/resources/images/li.svg +3 -0
  202. package/dist/resources/images/loginhero.png +0 -0
  203. package/dist/resources/images/logo.png +0 -0
  204. package/dist/resources/images/mail-icon.png +0 -0
  205. package/dist/resources/images/menu/app-builder.svg +19 -0
  206. package/dist/resources/images/menu/iam.svg +14 -0
  207. package/dist/resources/images/menu/logicloop-black.svg +28 -0
  208. package/dist/resources/images/menu/logicloop-blue.svg +32 -0
  209. package/dist/resources/images/menu/logicloop-white.svg +32 -0
  210. package/dist/resources/images/menu/queues.svg +14 -0
  211. package/dist/resources/images/menu/radix.svg +9 -0
  212. package/dist/resources/images/menu/rl-lead-middleware.svg +19 -0
  213. package/dist/resources/images/menu/solid-address-master.svg +10 -0
  214. package/dist/resources/images/menu/srmd-tracker-black.svg +16 -0
  215. package/dist/resources/images/menu/srmd-tracker-original.svg +32 -0
  216. package/dist/resources/images/menu/srmd-tracker-white.svg +17 -0
  217. package/dist/resources/images/menu/srmd-tracker.svg +16 -0
  218. package/dist/resources/images/menu-icon.png +0 -0
  219. package/dist/resources/images/menu-toggle.png +0 -0
  220. package/dist/resources/images/password-icon.png +0 -0
  221. package/dist/resources/images/profile.png +0 -0
  222. package/dist/resources/images/radix-logo-white.png +0 -0
  223. package/dist/resources/images/radix-logo.png +0 -0
  224. package/dist/resources/images/search-icon.png +0 -0
  225. package/dist/resources/images/signupBanner.png +0 -0
  226. package/dist/resources/images/tw.svg +3 -0
  227. package/dist/resources/images/user-icon.png +0 -0
  228. package/dist/resources/stylesheets/_config.scss +54 -0
  229. package/dist/resources/stylesheets/_content.scss +91 -0
  230. package/dist/resources/stylesheets/_footer.scss +8 -0
  231. package/dist/resources/stylesheets/_main.scss +47 -0
  232. package/dist/resources/stylesheets/_menu.scss +185 -0
  233. package/dist/resources/stylesheets/_mixins.scss +13 -0
  234. package/dist/resources/stylesheets/_responsive.scss +99 -0
  235. package/dist/resources/stylesheets/_topbar.scss +149 -0
  236. package/dist/resources/stylesheets/_typography.scss +63 -0
  237. package/dist/resources/stylesheets/_utils.scss +27 -0
  238. package/dist/resources/stylesheets/_variables.scss +3 -0
  239. package/dist/resources/stylesheets/layout.scss +11 -0
  240. package/dist/stylesheets/globals.css +2476 -0
  241. package/dist/stylesheets/styles/SF-Pro-Display-Regular.otf +0 -0
  242. package/dist/stylesheets/styles/layout/_config.scss +54 -0
  243. package/dist/stylesheets/styles/layout/_content.scss +77 -0
  244. package/dist/stylesheets/styles/layout/_footer.scss +8 -0
  245. package/dist/stylesheets/styles/layout/_main.scss +47 -0
  246. package/dist/stylesheets/styles/layout/_menu.scss +185 -0
  247. package/dist/stylesheets/styles/layout/_mixins.scss +13 -0
  248. package/dist/stylesheets/styles/layout/_responsive.scss +99 -0
  249. package/dist/stylesheets/styles/layout/_topbar.scss +149 -0
  250. package/dist/stylesheets/styles/layout/_typography.scss +63 -0
  251. package/dist/stylesheets/styles/layout/_utils.scss +27 -0
  252. package/dist/stylesheets/styles/layout/_variables.scss +3 -0
  253. package/dist/stylesheets/styles/layout/layout.scss +11 -0
  254. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Black.otf +0 -0
  255. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Bold.otf +0 -0
  256. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Heavy.otf +0 -0
  257. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Light.otf +0 -0
  258. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Medium.otf +0 -0
  259. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Regular.otf +0 -0
  260. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Semibold.otf +0 -0
  261. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Thin.otf +0 -0
  262. package/dist/stylesheets/themes/solid-dark-purple/fonts/SF-Pro-Display-Ultralight.otf +0 -0
  263. package/dist/stylesheets/themes/solid-dark-purple/theme.css +9051 -0
  264. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Black.otf +0 -0
  265. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Bold.otf +0 -0
  266. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Heavy.otf +0 -0
  267. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Light.otf +0 -0
  268. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Medium.otf +0 -0
  269. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Regular.otf +0 -0
  270. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Semibold.otf +0 -0
  271. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Thin.otf +0 -0
  272. package/dist/stylesheets/themes/solid-light-purple/fonts/SF-Pro-Display-Ultralight.otf +0 -0
  273. package/dist/stylesheets/themes/solid-light-purple/theme.css +9077 -0
  274. package/package.json +6 -3
  275. package/src/components/Svg/FileSvg.tsx +18 -0
  276. package/src/components/auth/AuthLayout.tsx +13 -8
  277. package/src/components/auth/ForgotPasswordThankYou.tsx +6 -3
  278. package/src/components/auth/SolidForgotPassword.tsx +7 -4
  279. package/src/components/auth/SolidInitialLoginOtp.tsx +7 -4
  280. package/src/components/auth/SolidInitiateRegisterOtp.tsx +7 -4
  281. package/src/components/auth/SolidLogin.tsx +6 -3
  282. package/src/components/auth/SolidOTPVerify.tsx +6 -3
  283. package/src/components/auth/SolidRegister.tsx +6 -4
  284. package/src/components/auth/SolidResetPassword.tsx +7 -4
  285. package/src/components/common/CancelButton.tsx +2 -2
  286. package/src/components/common/DropzonePlaceholder.tsx +22 -9
  287. package/src/components/common/FileReaderExt.tsx +5 -3
  288. package/src/components/common/SolidBreadcrumb.tsx +27 -0
  289. package/src/components/core/common/SolidConfigureLayoutElement.tsx +102 -42
  290. package/src/components/core/common/SolidGlobalSearchElement.tsx +4 -3
  291. package/src/components/core/filter/SolidManyToOneFilterElement.tsx +1 -1
  292. package/src/components/core/form/SolidFormView.tsx +67 -69
  293. package/src/components/core/form/fields/ISolidField.tsx +2 -1
  294. package/src/components/core/form/fields/SolidBooleanField.tsx +3 -2
  295. package/src/components/core/form/fields/SolidDateField.tsx +3 -2
  296. package/src/components/core/form/fields/SolidDateTimeField.tsx +3 -2
  297. package/src/components/core/form/fields/SolidDecimalField.tsx +10 -2
  298. package/src/components/core/form/fields/SolidIntegerField.tsx +10 -2
  299. package/src/components/core/form/fields/SolidJsonField.tsx +3 -2
  300. package/src/components/core/form/fields/SolidLongTextField.tsx +3 -2
  301. package/src/components/core/form/fields/SolidMediaMultipleField.tsx +119 -97
  302. package/src/components/core/form/fields/SolidMediaSingleField.tsx +112 -125
  303. package/src/components/core/form/fields/SolidRichTextField.tsx +3 -2
  304. package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +3 -2
  305. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +3 -2
  306. package/src/components/core/form/fields/SolidShortTextField.tsx +3 -2
  307. package/src/components/core/form/fields/SolidTimeField.tsx +3 -2
  308. package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +14 -7
  309. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +7 -7
  310. package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +11 -7
  311. package/src/components/core/list/SolidListView.tsx +36 -55
  312. package/src/components/core/list/SolidManyToOneFilterElement.tsx +1 -1
  313. package/src/components/core/model/CreateModel.tsx +36 -27
  314. package/src/components/core/model/FieldMetaData.tsx +24 -24
  315. package/src/components/core/model/FieldMetaDataForm.tsx +45 -60
  316. package/src/components/core/model/ModelMetaData.tsx +7 -1
  317. package/src/components/core/module/CreateModule.tsx +24 -19
  318. package/src/components/core/users/CreateUser.tsx +15 -5
  319. package/src/components/layout/AppConfig.tsx +1 -1
  320. package/src/components/layout/AppSidebar.tsx +58 -23
  321. package/src/components/layout/navbar-two-menu.tsx +1 -1
  322. package/src/components/layout/user-profile-menu.tsx +18 -16
  323. package/src/declarations.d.ts +19 -0
  324. package/src/helpers/downloadMediaFile.tsx +19 -0
  325. package/src/helpers/getAcceptedFileTypes.tsx +22 -0
  326. package/src/helpers/permissions.ts +3 -0
  327. package/src/nextAuth/authProviders.tsx +3 -2
  328. package/src/redux/api/authApi.ts +2 -1
  329. package/src/redux/api/solidViewApi.ts +1 -0
  330. package/src/resources/globals.css +2551 -0
  331. package/src/resources/images/AvatarDemo.png +0 -0
  332. package/src/resources/images/Footerbg.png +0 -0
  333. package/src/resources/images/LoginBanner.png +0 -0
  334. package/src/resources/images/Navigation/Level.svg +5 -0
  335. package/src/resources/images/Navigation/Presure.svg +7 -0
  336. package/src/resources/images/Navigation/Temperature.svg +13 -0
  337. package/src/resources/images/Navigation/settings.png +0 -0
  338. package/src/resources/images/Profile/Avatar.png +0 -0
  339. package/src/resources/images/SS-Logo.png +0 -0
  340. package/src/resources/images/activity.svg +3 -0
  341. package/src/resources/images/app-builder.png +0 -0
  342. package/src/resources/images/auth/solid-left-layout-bg.png +0 -0
  343. package/src/resources/images/auth/solid-login-light.png +0 -0
  344. package/src/resources/images/auth/solid-right-layout-bg.png +0 -0
  345. package/src/resources/images/clog-wheel.png +0 -0
  346. package/src/resources/images/dark-mode.png +0 -0
  347. package/src/resources/images/dashboard/Ellipse 1.svg +10 -0
  348. package/src/resources/images/dashboard/Rectangle 17.svg +10 -0
  349. package/src/resources/images/dashboard/Rectangle 25.svg +11 -0
  350. package/src/resources/images/dashboard/image 5.svg +9 -0
  351. package/src/resources/images/eye-icon.png +0 -0
  352. package/src/resources/images/fb.svg +3 -0
  353. package/src/resources/images/fileReader/image-jpg.png +0 -0
  354. package/src/resources/images/filter-icon.png +0 -0
  355. package/src/resources/images/form/user.png +0 -0
  356. package/src/resources/images/iam.png +0 -0
  357. package/src/resources/images/icons/icon-activity.svg +3 -0
  358. package/src/resources/images/icons/icon-calender.svg +3 -0
  359. package/src/resources/images/icons/icon-graph.svg +3 -0
  360. package/src/resources/images/icons/icon-kanban.svg +3 -0
  361. package/src/resources/images/icons/icon-list.svg +3 -0
  362. package/src/resources/images/icons/icon-users.svg +3 -0
  363. package/src/resources/images/icons/jump-to-icon.png +0 -0
  364. package/src/resources/images/insta.svg +3 -0
  365. package/src/resources/images/layout/images/comfortable.png +0 -0
  366. package/src/resources/images/layout/images/compact.png +0 -0
  367. package/src/resources/images/layout/images/cozy.png +0 -0
  368. package/src/resources/images/layout/images/kanban.png +0 -0
  369. package/src/resources/images/li.svg +3 -0
  370. package/src/resources/images/loginhero.png +0 -0
  371. package/src/resources/images/logo.png +0 -0
  372. package/src/resources/images/mail-icon.png +0 -0
  373. package/src/resources/images/menu/app-builder.svg +19 -0
  374. package/src/resources/images/menu/iam.svg +14 -0
  375. package/src/resources/images/menu/logicloop-black.svg +28 -0
  376. package/src/resources/images/menu/logicloop-blue.svg +32 -0
  377. package/src/resources/images/menu/logicloop-white.svg +32 -0
  378. package/src/resources/images/menu/queues.svg +14 -0
  379. package/src/resources/images/menu/radix.svg +9 -0
  380. package/src/resources/images/menu/rl-lead-middleware.svg +19 -0
  381. package/src/resources/images/menu/solid-address-master.svg +10 -0
  382. package/src/resources/images/menu/srmd-tracker-black.svg +16 -0
  383. package/src/resources/images/menu/srmd-tracker-original.svg +32 -0
  384. package/src/resources/images/menu/srmd-tracker-white.svg +17 -0
  385. package/src/resources/images/menu/srmd-tracker.svg +16 -0
  386. package/src/resources/images/menu-icon.png +0 -0
  387. package/src/resources/images/menu-toggle.png +0 -0
  388. package/src/resources/images/password-icon.png +0 -0
  389. package/src/resources/images/profile.png +0 -0
  390. package/src/resources/images/radix-logo-white.png +0 -0
  391. package/src/resources/images/radix-logo.png +0 -0
  392. package/src/resources/images/search-icon.png +0 -0
  393. package/src/resources/images/signupBanner.png +0 -0
  394. package/src/resources/images/tw.svg +3 -0
  395. package/src/resources/images/user-icon.png +0 -0
  396. package/src/resources/stylesheets/_config.scss +54 -0
  397. package/src/resources/stylesheets/_content.scss +91 -0
  398. package/src/resources/stylesheets/_footer.scss +8 -0
  399. package/src/resources/stylesheets/_main.scss +47 -0
  400. package/src/resources/stylesheets/_menu.scss +185 -0
  401. package/src/resources/stylesheets/_mixins.scss +13 -0
  402. package/src/resources/stylesheets/_responsive.scss +99 -0
  403. package/src/resources/stylesheets/_topbar.scss +149 -0
  404. package/src/resources/stylesheets/_typography.scss +63 -0
  405. package/src/resources/stylesheets/_utils.scss +27 -0
  406. package/src/resources/stylesheets/_variables.scss +3 -0
  407. package/src/resources/stylesheets/layout.scss +11 -0
  408. package/dist/components/common/FilterComponent.d.ts +0 -3
  409. package/dist/components/common/FilterComponent.d.ts.map +0 -1
  410. package/dist/components/common/FilterComponent.js +0 -214
  411. package/dist/components/common/FilterComponent.js.map +0 -1
  412. package/dist/components/core/filter/columns/SolidBigintField.d.ts +0 -4
  413. package/dist/components/core/filter/columns/SolidBigintField.d.ts.map +0 -1
  414. package/dist/components/core/filter/columns/SolidBigintField.js +0 -8
  415. package/dist/components/core/filter/columns/SolidBigintField.js.map +0 -1
  416. package/dist/components/core/filter/columns/SolidBooleanField.d.ts +0 -4
  417. package/dist/components/core/filter/columns/SolidBooleanField.d.ts.map +0 -1
  418. package/dist/components/core/filter/columns/SolidBooleanField.js +0 -27
  419. package/dist/components/core/filter/columns/SolidBooleanField.js.map +0 -1
  420. package/dist/components/core/filter/columns/SolidComputedField.d.ts +0 -4
  421. package/dist/components/core/filter/columns/SolidComputedField.d.ts.map +0 -1
  422. package/dist/components/core/filter/columns/SolidComputedField.js +0 -22
  423. package/dist/components/core/filter/columns/SolidComputedField.js.map +0 -1
  424. package/dist/components/core/filter/columns/SolidDateField.d.ts +0 -9
  425. package/dist/components/core/filter/columns/SolidDateField.d.ts.map +0 -1
  426. package/dist/components/core/filter/columns/SolidDateField.js +0 -35
  427. package/dist/components/core/filter/columns/SolidDateField.js.map +0 -1
  428. package/dist/components/core/filter/columns/SolidDatetimeField.d.ts +0 -4
  429. package/dist/components/core/filter/columns/SolidDatetimeField.d.ts.map +0 -1
  430. package/dist/components/core/filter/columns/SolidDatetimeField.js +0 -24
  431. package/dist/components/core/filter/columns/SolidDatetimeField.js.map +0 -1
  432. package/dist/components/core/filter/columns/SolidDecimalField.d.ts +0 -4
  433. package/dist/components/core/filter/columns/SolidDecimalField.d.ts.map +0 -1
  434. package/dist/components/core/filter/columns/SolidDecimalField.js +0 -8
  435. package/dist/components/core/filter/columns/SolidDecimalField.js.map +0 -1
  436. package/dist/components/core/filter/columns/SolidExternalIdField.d.ts +0 -4
  437. package/dist/components/core/filter/columns/SolidExternalIdField.d.ts.map +0 -1
  438. package/dist/components/core/filter/columns/SolidExternalIdField.js +0 -25
  439. package/dist/components/core/filter/columns/SolidExternalIdField.js.map +0 -1
  440. package/dist/components/core/filter/columns/SolidFloatField.d.ts +0 -4
  441. package/dist/components/core/filter/columns/SolidFloatField.d.ts.map +0 -1
  442. package/dist/components/core/filter/columns/SolidFloatField.js +0 -8
  443. package/dist/components/core/filter/columns/SolidFloatField.js.map +0 -1
  444. package/dist/components/core/filter/columns/SolidIdField.d.ts +0 -4
  445. package/dist/components/core/filter/columns/SolidIdField.d.ts.map +0 -1
  446. package/dist/components/core/filter/columns/SolidIdField.js +0 -25
  447. package/dist/components/core/filter/columns/SolidIdField.js.map +0 -1
  448. package/dist/components/core/filter/columns/SolidIntField.d.ts +0 -4
  449. package/dist/components/core/filter/columns/SolidIntField.d.ts.map +0 -1
  450. package/dist/components/core/filter/columns/SolidIntField.js +0 -34
  451. package/dist/components/core/filter/columns/SolidIntField.js.map +0 -1
  452. package/dist/components/core/filter/columns/SolidLongTextField.d.ts +0 -4
  453. package/dist/components/core/filter/columns/SolidLongTextField.d.ts.map +0 -1
  454. package/dist/components/core/filter/columns/SolidLongTextField.js +0 -8
  455. package/dist/components/core/filter/columns/SolidLongTextField.js.map +0 -1
  456. package/dist/components/core/filter/columns/SolidMediaMultipleField.d.ts +0 -4
  457. package/dist/components/core/filter/columns/SolidMediaMultipleField.d.ts.map +0 -1
  458. package/dist/components/core/filter/columns/SolidMediaMultipleField.js +0 -35
  459. package/dist/components/core/filter/columns/SolidMediaMultipleField.js.map +0 -1
  460. package/dist/components/core/filter/columns/SolidMediaSingleField.d.ts +0 -4
  461. package/dist/components/core/filter/columns/SolidMediaSingleField.d.ts.map +0 -1
  462. package/dist/components/core/filter/columns/SolidMediaSingleField.js +0 -35
  463. package/dist/components/core/filter/columns/SolidMediaSingleField.js.map +0 -1
  464. package/dist/components/core/filter/columns/SolidRelationField.d.ts +0 -4
  465. package/dist/components/core/filter/columns/SolidRelationField.d.ts.map +0 -1
  466. package/dist/components/core/filter/columns/SolidRelationField.js +0 -12
  467. package/dist/components/core/filter/columns/SolidRelationField.js.map +0 -1
  468. package/dist/components/core/filter/columns/SolidRichTextField.d.ts +0 -4
  469. package/dist/components/core/filter/columns/SolidRichTextField.d.ts.map +0 -1
  470. package/dist/components/core/filter/columns/SolidRichTextField.js +0 -8
  471. package/dist/components/core/filter/columns/SolidRichTextField.js.map +0 -1
  472. package/dist/components/core/filter/columns/SolidSelectionDynamicField.d.ts +0 -4
  473. package/dist/components/core/filter/columns/SolidSelectionDynamicField.d.ts.map +0 -1
  474. package/dist/components/core/filter/columns/SolidSelectionDynamicField.js +0 -25
  475. package/dist/components/core/filter/columns/SolidSelectionDynamicField.js.map +0 -1
  476. package/dist/components/core/filter/columns/SolidSelectionStaticField.d.ts +0 -4
  477. package/dist/components/core/filter/columns/SolidSelectionStaticField.d.ts.map +0 -1
  478. package/dist/components/core/filter/columns/SolidSelectionStaticField.js +0 -26
  479. package/dist/components/core/filter/columns/SolidSelectionStaticField.js.map +0 -1
  480. package/dist/components/core/filter/columns/SolidShortTextField.d.ts +0 -4
  481. package/dist/components/core/filter/columns/SolidShortTextField.d.ts.map +0 -1
  482. package/dist/components/core/filter/columns/SolidShortTextField.js +0 -33
  483. package/dist/components/core/filter/columns/SolidShortTextField.js.map +0 -1
  484. package/dist/components/core/filter/columns/SolidTimeField.d.ts +0 -4
  485. package/dist/components/core/filter/columns/SolidTimeField.d.ts.map +0 -1
  486. package/dist/components/core/filter/columns/SolidTimeField.js +0 -24
  487. package/dist/components/core/filter/columns/SolidTimeField.js.map +0 -1
  488. package/dist/components/core/filter/columns/SolidUuidField.d.ts +0 -4
  489. package/dist/components/core/filter/columns/SolidUuidField.d.ts.map +0 -1
  490. package/dist/components/core/filter/columns/SolidUuidField.js +0 -25
  491. package/dist/components/core/filter/columns/SolidUuidField.js.map +0 -1
  492. package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.d.ts +0 -4
  493. package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.d.ts.map +0 -1
  494. package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.js +0 -54
  495. package/dist/components/core/filter/columns/relations/SolidRelationManyToOneField.js.map +0 -1
@@ -52,6 +52,7 @@ export class SolidDateTimeField implements ISolidField {
52
52
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
53
53
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
54
54
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
55
+ const readOnlyPermission = this.fieldContext.readOnly;
55
56
 
56
57
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
57
58
 
@@ -63,11 +64,11 @@ export class SolidDateTimeField implements ISolidField {
63
64
  <div className="flex flex-column gap-2 mt-4">
64
65
  {showFieldLabel != false &&
65
66
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
66
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
67
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
67
68
  </label>
68
69
  }
69
70
  <Calendar
70
- disabled={formDisabled || fieldDisabled}
71
+ disabled={formDisabled || fieldDisabled || readOnlyPermission}
71
72
  ref={calendarRef} // Attach ref to Calendar
72
73
  id={fieldLayoutInfo.attrs.name}
73
74
  aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
@@ -41,6 +41,13 @@ export class SolidDecimalField implements ISolidField {
41
41
  schema = schema.required(`${fieldLabel} is required.`);
42
42
  } else {
43
43
  schema = schema.nullable(); // Allow null when not required
44
+ }
45
+ // 2. length (min/max)
46
+ if (fieldMetadata.min && fieldMetadata.min > 0) {
47
+ schema = schema.min(fieldMetadata.min, `${fieldLabel} should be at-least ${fieldMetadata.min} characters long.`);
48
+ }
49
+ if (fieldMetadata.max && fieldMetadata.max > 0) {
50
+ schema = schema.max(fieldMetadata.max, `${fieldLabel} should not be more than ${fieldMetadata.max} characters long.`);
44
51
  }
45
52
  return schema;
46
53
  }
@@ -53,6 +60,7 @@ export class SolidDecimalField implements ISolidField {
53
60
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
54
61
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
55
62
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
63
+ const readOnlyPermission = this.fieldContext.readOnly;
56
64
 
57
65
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
58
66
 
@@ -67,11 +75,11 @@ export class SolidDecimalField implements ISolidField {
67
75
  <div className="flex flex-column gap-2 mt-4">
68
76
  {showFieldLabel != false &&
69
77
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
70
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
78
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
71
79
  </label>
72
80
  }
73
81
  <InputNumber
74
- readOnly={formReadonly || fieldReadonly}
82
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
75
83
  disabled={formDisabled || fieldDisabled}
76
84
  id={fieldLayoutInfo.attrs.name}
77
85
  minFractionDigits={2}
@@ -43,6 +43,13 @@ export class SolidIntegerField implements ISolidField {
43
43
  } else {
44
44
  schema = schema.nullable(); // Allow null when not required
45
45
  }
46
+ // 2. length (min/max)
47
+ if (fieldMetadata.min && fieldMetadata.min > 0) {
48
+ schema = schema.min(fieldMetadata.min, `${fieldLabel} should be at-least ${fieldMetadata.min} characters long.`);
49
+ }
50
+ if (fieldMetadata.max && fieldMetadata.max > 0) {
51
+ schema = schema.max(fieldMetadata.max, `${fieldLabel} should not be more than ${fieldMetadata.max} characters long.`);
52
+ }
46
53
  return schema;
47
54
  }
48
55
 
@@ -54,6 +61,7 @@ export class SolidIntegerField implements ISolidField {
54
61
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
55
62
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
56
63
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
64
+ const readOnlyPermission = this.fieldContext.readOnly;
57
65
 
58
66
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
59
67
 
@@ -68,11 +76,11 @@ export class SolidIntegerField implements ISolidField {
68
76
  <div className="flex flex-column gap-2 mt-4">
69
77
  {showFieldLabel != false &&
70
78
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
71
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
79
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
72
80
  </label>
73
81
  }
74
82
  <InputNumber
75
- readOnly={formReadonly || fieldReadonly}
83
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
76
84
  disabled={formDisabled || fieldDisabled}
77
85
  id={fieldLayoutInfo.attrs.name}
78
86
  aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
@@ -48,6 +48,7 @@ export class SolidJsonField implements ISolidField {
48
48
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
49
49
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
50
50
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
51
+ const readOnlyPermission = this.fieldContext.readOnly;
51
52
 
52
53
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
53
54
 
@@ -60,7 +61,7 @@ export class SolidJsonField implements ISolidField {
60
61
  {showFieldLabel != false &&
61
62
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
62
63
 
63
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
64
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
64
65
  </label>
65
66
  }
66
67
  <CodeEditor
@@ -68,7 +69,7 @@ export class SolidJsonField implements ISolidField {
68
69
  field={fieldLayoutInfo.attrs.name}
69
70
  height={fieldLayoutInfo.attrs?.height}
70
71
  fontSize={fieldLayoutInfo.attrs?.fontSize}
71
- readOnly={formReadonly || fieldReadonly}
72
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
72
73
  >
73
74
  </CodeEditor>
74
75
  </div>
@@ -66,6 +66,7 @@ export class SolidLongTextField implements ISolidField {
66
66
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
67
67
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
68
68
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
69
+ const readOnlyPermission = this.fieldContext.readOnly;
69
70
 
70
71
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
71
72
 
@@ -80,11 +81,11 @@ export class SolidLongTextField implements ISolidField {
80
81
  <div className="flex flex-column gap-2 mt-4">
81
82
  {showFieldLabel != false &&
82
83
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
83
- &nbsp; {fieldDescription && <span>({fieldDescription}) </span>}
84
+ {/* &nbsp; {fieldDescription && <span>({fieldDescription}) </span>} */}
84
85
  </label>
85
86
  }
86
87
  <InputTextarea
87
- readOnly={formReadonly || fieldReadonly}
88
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
88
89
  disabled={formDisabled || fieldDisabled}
89
90
  id={fieldLayoutInfo.attrs.name}
90
91
  aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
@@ -12,6 +12,9 @@ import { Schema } from "yup";
12
12
  import { FormikObject, ISolidField, SolidFieldProps } from "./ISolidField";
13
13
  import { FileReaderExt } from "@/components/common/FileReaderExt";
14
14
  import { ProgressBar } from "primereact/progressbar";
15
+ import getAcceptedFileTypes from "@/helpers/getAcceptedFileTypes";
16
+ import Link from "next/link";
17
+ import { downloadMediaFile } from "@/helpers/downloadMediaFile";
15
18
  export class SolidMediaMultipleField implements ISolidField {
16
19
 
17
20
  private fieldContext: SolidFieldProps;
@@ -94,17 +97,17 @@ export class SolidMediaMultipleField implements ISolidField {
94
97
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
95
98
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
96
99
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
100
+ const readOnlyPermission = this.fieldContext.readOnly;
97
101
 
98
- const [imagesPreview, setImagesPreview] = useState<Array<string | ArrayBuffer>>([]);
99
102
  const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);
100
103
  const [imageToBeDeletedData, setImageToBeDeletedData] = useState<any>();
101
- const [uploadProgress, setUploadProgress] = useState<Record<string, number>>({});
102
104
  const [uploadCompleted, setUploadCompleted] = useState<Record<string, boolean>>({});
103
- const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number }[]>([]);
105
+ const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);
104
106
  const [uploadedSize, setUploadedSize] = useState<Record<string, string>>({});
105
107
  const [totalSize, setTotalSize] = useState<Record<string, string>>({});
106
108
  const [selectedFileId, setSelectedFileId] = useState<string | null>(null);
107
109
 
110
+
108
111
  const formatFileSize = (size: number) => {
109
112
  return size >= 1024 * 1024
110
113
  ? `${(size / (1024 * 1024)).toFixed(1)} MB`
@@ -119,32 +122,29 @@ export class SolidMediaMultipleField implements ISolidField {
119
122
  const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];
120
123
  if (Array.isArray(fieldValue) && fieldValue.length > 0) {
121
124
  const urls: string[] = [];
122
- const details: { name: string; type: string; size: number, id: any }[] = [];
123
- const progress: Record<string, number> = {};
125
+ const details: { name: string; type: string; size: number, id: any, fileUrl: string }[] = [];
124
126
  const completed: Record<string, boolean> = {};
125
127
 
126
128
  fieldValue.forEach((file: File | any) => {
127
129
  if (file instanceof File) {
128
130
  // New file (from local upload)
129
131
  urls.push(URL.createObjectURL(file));
130
- details.push({ name: file.name, type: file.type, size: file.size, id: `${file.name}-${file.size}`, });
132
+ details.push({ name: file.name, type: file.type, size: file.size, id: `${file.name}-${file.size}`, fileUrl: "" });
131
133
  } else if (typeof file === "object" && file._full_url) {
132
134
  urls.push(file._full_url);
133
135
  details.push({
134
136
  name: file.relativeUri || "Unknown", // Use relativeUri or fallback
135
137
  type: file.mediaStorageProviderMetadata?.type || "Unknown", // Extract type if available
136
138
  size: 0, // API doesn't provide size, set 0 or fetch from metadata if available
137
- id: file.id
139
+ id: file.id,
140
+ fileUrl: file._full_url
138
141
  });
139
142
  }
140
143
  });
141
144
  details.forEach(file => {
142
- progress[`${file.name}-${file.size}`] = 100;
143
145
  completed[`${file.name}-${file.size}`] = true;
144
146
  });
145
- setUploadProgress(progress);
146
147
  setUploadCompleted(completed);
147
- setImagesPreview(urls);
148
148
  setFileDetails(details);
149
149
  }
150
150
  }, [formik.values, fieldLayoutInfo.attrs.name]);
@@ -153,7 +153,6 @@ export class SolidMediaMultipleField implements ISolidField {
153
153
  if (!acceptedFiles.length) return;
154
154
 
155
155
  const newFileDetails = [...fileDetails];
156
- const newUploadProgress = { ...uploadProgress };
157
156
  const newUploadedSize = { ...uploadedSize };
158
157
  const newTotalSize = { ...totalSize };
159
158
  const newUploadCompleted = { ...uploadCompleted };
@@ -161,8 +160,7 @@ export class SolidMediaMultipleField implements ISolidField {
161
160
  acceptedFiles.forEach((file) => {
162
161
  const fileId = `${file.name}-${file.size}`; // Unique identifier for tracking each file
163
162
 
164
- newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id });
165
- newUploadProgress[fileId] = 0;
163
+ newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id, fileUrl: file._full_url });
166
164
  newUploadedSize[fileId] = "0 KB";
167
165
  newTotalSize[fileId] = formatFileSize(file.size);
168
166
  newUploadCompleted[fileId] = false;
@@ -170,20 +168,16 @@ export class SolidMediaMultipleField implements ISolidField {
170
168
  const reader = new FileReader();
171
169
 
172
170
  reader.onloadstart = () => {
173
- setUploadProgress((prev) => ({ ...prev, [fileId]: 0 }));
174
171
  setUploadedSize((prev) => ({ ...prev, [fileId]: "0 KB" }));
175
172
  };
176
173
 
177
174
  reader.onprogress = (event) => {
178
175
  if (event.loaded && event.total) {
179
- const percent = Math.round((event.loaded / event.total) * 100);
180
- setUploadProgress((prev) => ({ ...prev, [fileId]: percent }));
181
176
  setUploadedSize((prev) => ({ ...prev, [fileId]: formatFileSize(event.loaded) }));
182
177
  }
183
178
  };
184
179
 
185
180
  reader.onloadend = () => {
186
- setUploadProgress((prev) => ({ ...prev, [fileId]: 100 }));
187
181
  setUploadCompleted((prev) => ({ ...prev, [fileId]: true }));
188
182
  setUploadedSize((prev) => ({ ...prev, [fileId]: newTotalSize[fileId] }));
189
183
  };
@@ -192,7 +186,6 @@ export class SolidMediaMultipleField implements ISolidField {
192
186
  });
193
187
 
194
188
  setFileDetails(newFileDetails);
195
- setUploadProgress(newUploadProgress);
196
189
  setUploadedSize(newUploadedSize);
197
190
  setTotalSize(newTotalSize);
198
191
  setUploadCompleted(newUploadCompleted);
@@ -203,11 +196,6 @@ export class SolidMediaMultipleField implements ISolidField {
203
196
 
204
197
  const handleCancelUpload = (fileId: string) => {
205
198
  setFileDetails((prev) => prev.filter((file) => fileId !== `${file.name}-${file.size}`));
206
- setUploadProgress((prev) => {
207
- const newProgress = { ...prev };
208
- delete newProgress[fileId];
209
- return newProgress;
210
- });
211
199
  setUploadCompleted((prev) => {
212
200
  const newCompleted = { ...prev };
213
201
  delete newCompleted[fileId];
@@ -234,51 +222,68 @@ export class SolidMediaMultipleField implements ISolidField {
234
222
 
235
223
  const deleteFile = () => {
236
224
  if (selectedFileId && imageToBeDeletedData) {
237
- handleCancelUpload(selectedFileId);
238
- deleteMedia(imageToBeDeletedData);
225
+ // Remove file from UI before making API call
226
+ setFileDetails((prev) => prev.filter((file) => `${file.name}-${file.size}` !== selectedFileId));
227
+
228
+ deleteMedia(imageToBeDeletedData)
229
+ .unwrap()
230
+ .then(() => {
231
+ // Ensure UI state updates only after successful deletion
232
+ setUploadCompleted((prev) => {
233
+ const newCompleted = { ...prev };
234
+ delete newCompleted[selectedFileId];
235
+ return newCompleted;
236
+ });
237
+
238
+ setUploadedSize((prev) => {
239
+ const newSize = { ...prev };
240
+ delete newSize[selectedFileId];
241
+ return newSize;
242
+ });
243
+
244
+ setTotalSize((prev) => {
245
+ const newSize = { ...prev };
246
+ delete newSize[selectedFileId];
247
+ return newSize;
248
+ });
249
+
250
+ // Update form state
251
+ formik.setFieldValue(
252
+ fieldLayoutInfo.attrs.name,
253
+ fileDetails.filter((file) => `${file.name}-${file.size}` !== selectedFileId)
254
+ );
255
+ })
256
+ .catch((error) => {
257
+ console.error("Error deleting file:", error);
258
+ });
259
+
239
260
  setDeleteImageDialogVisible(false);
240
- setShowAllFiles(false)
261
+ setShowAllFiles(false);
241
262
  setSelectedFileId(null);
242
263
  }
243
264
  };
244
265
 
266
+
245
267
  const {
246
268
  getRootProps,
247
269
  getInputProps,
248
270
  isDragActive,
249
271
  } = useDropzone({
250
272
  onDrop: handleDropImages,
251
- accept: {
252
- "image/jpeg": [],
253
- "image/png": [],
254
- },
255
- maxSize: 2 * 1024 * 1024, // 2MB
273
+ accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),
274
+ maxSize: fieldMetadata.mediaMaxSizeKb * 1024,
256
275
  });
257
276
 
258
277
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
259
278
 
260
-
261
- const imageFormatHandler = (preview: any) => {
262
- if (typeof preview === 'string') {
263
- return preview; // Existing URLs
264
- }
265
- if (preview instanceof File) {
266
- return URL.createObjectURL(preview); // Generate preview URL for File
267
- }
268
- if (typeof preview === "object") {
269
- return preview._full_url
270
- }
271
- return ""; // Fallback for invalid cases
272
- }
273
-
274
279
  const [isShowAllFiles, setShowAllFiles] = useState(false);
275
280
  return (
276
- <div className={className}>
281
+ <div className={className} style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>
277
282
  <div className="flex flex-column gap-2 mt-4">
278
283
  {showFieldLabel != false &&
279
284
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
280
285
 
281
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
286
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
282
287
  </label>
283
288
  }
284
289
  <div
@@ -286,7 +291,10 @@ export class SolidMediaMultipleField implements ISolidField {
286
291
  className="solid-dropzone-wrapper"
287
292
  >
288
293
  <input {...getInputProps()} />
289
- <DropzonePlaceholder />
294
+ <DropzonePlaceholder
295
+ mediaTypes={fieldMetadata.mediaTypes}
296
+ mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}
297
+ />
290
298
  </div>
291
299
  </div>
292
300
  {fileDetails.length > 0 &&
@@ -295,17 +303,39 @@ export class SolidMediaMultipleField implements ISolidField {
295
303
  <FileReaderExt fileDetails={fileDetails[0]} />
296
304
  <div className="w-full flex flex-column gap-1">
297
305
  <div className="flex align-items-center justify-content-between">
298
- <div className="font-bold">{fileDetails[0].name}</div>
299
- <div
300
- className="cancel-upload-button"
301
- onClick={() => confirmDeleteFile(`${fileDetails[0].name}-${fileDetails[0].size}`, fileDetails[0].id)}
302
- >
303
- <svg xmlns="http://www.w3.org/2000/svg" width="6" height="6" viewBox="0 0 6 6" fill="none">
304
- <path d="M0.6 6L0 5.4L2.4 3L0 0.6L0.6 0L3 2.4L5.4 0L6 0.6L3.6 3L6 5.4L5.4 6L3 3.6L0.6 6Z" fill="#4B4D52" />
305
- </svg>
306
+ <Link className="font-normal w-11" href={process.env.NEXT_PUBLIC_BACKEND_API_URL + `/${fileDetails[0]?.fileUrl}`} target="_blank">{fileDetails[0].name}</Link>
307
+ <div className="flex align-items-center gap-2">
308
+ <div>
309
+ <Button
310
+ type="button"
311
+ text
312
+ icon={"pi pi-download"}
313
+ size="small"
314
+ style={{
315
+ height: 16,
316
+ width: 16
317
+ }}
318
+ onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}
319
+ />
320
+ </div>
321
+ <div>
322
+ <Button
323
+ type="button"
324
+ text
325
+ icon={"pi pi-times"}
326
+ size="small"
327
+ severity="secondary"
328
+ // className="p-2"
329
+ style={{
330
+ height: 16,
331
+ width: 16
332
+ }}
333
+ onClick={() => confirmDeleteFile(`${fileDetails[0].name}-${fileDetails[0].size}`, fileDetails[0].id)}
334
+ />
335
+ </div>
306
336
  </div>
307
337
  </div>
308
- {uploadCompleted[`${fileDetails[0].name}-${fileDetails[0].size}`] ? (
338
+ {uploadCompleted[`${fileDetails[0].name}-${fileDetails[0].size}`] && (
309
339
  <div className="flex align-items-center gap-2 text-sm">
310
340
  {totalSize[`${fileDetails[0].name}-${fileDetails[0].size}`]} of {totalSize[`${fileDetails[0].name}-${fileDetails[0].size}`]}
311
341
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
@@ -313,26 +343,13 @@ export class SolidMediaMultipleField implements ISolidField {
313
343
  </svg>
314
344
  Completed
315
345
  </div>
316
- ) : (
317
- <div className="flex align-items-center gap-2 text-sm">
318
- {uploadedSize[`${fileDetails[0].name}-${fileDetails[0].size}`]} of {totalSize[`${fileDetails[0].name}-${fileDetails[0].size}`]}
319
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
320
- <path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
321
- </svg>
322
- Uploading {uploadProgress[`${fileDetails[0].name}-${fileDetails[0].size}`]}% Completed
323
- </div>
324
346
  )}
325
347
  </div>
326
348
  </div>
327
- <ProgressBar
328
- value={uploadProgress[`${fileDetails[0].name}-${fileDetails[0].size}`]}
329
- showValue={false}
330
- style={{ height: 4 }}
331
- className="mt-2"
332
- />
333
349
  </div>
334
350
  }
335
351
 
352
+
336
353
  {fileDetails.length > 1 &&
337
354
  <div className="flex align-items-center">
338
355
  <p className="m-0">
@@ -360,17 +377,39 @@ export class SolidMediaMultipleField implements ISolidField {
360
377
  <FileReaderExt fileDetails={file} />
361
378
  <div className="w-full flex flex-column gap-1">
362
379
  <div className="flex align-items-center justify-content-between">
363
- <div className="font-bold">{file.name}</div>
364
- <div
365
- className="cancel-upload-button"
366
- onClick={() => confirmDeleteFile(fileId, file?.id)}
367
- >
368
- <svg xmlns="http://www.w3.org/2000/svg" width="6" height="6" viewBox="0 0 6 6" fill="none">
369
- <path d="M0.6 6L0 5.4L2.4 3L0 0.6L0.6 0L3 2.4L5.4 0L6 0.6L3.6 3L6 5.4L5.4 6L3 3.6L0.6 6Z" fill="#4B4D52" />
370
- </svg>
380
+ <Link className="font-normal w-11" href={process.env.NEXT_PUBLIC_BACKEND_API_URL + `/${file?.fileUrl}`} target="_blank">{file.name}</Link>
381
+ <div className="flex align-items-center gap-2">
382
+ <div>
383
+ <Button
384
+ type="button"
385
+ text
386
+ icon={"pi pi-download"}
387
+ size="small"
388
+ style={{
389
+ height: 16,
390
+ width: 16
391
+ }}
392
+ onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}
393
+ />
394
+ </div>
395
+ <div>
396
+ <Button
397
+ type="button"
398
+ text
399
+ icon={"pi pi-times"}
400
+ size="small"
401
+ severity="secondary"
402
+ // className="p-2"
403
+ style={{
404
+ height: 16,
405
+ width: 16
406
+ }}
407
+ onClick={() => confirmDeleteFile(fileId, file?.id)}
408
+ />
409
+ </div>
371
410
  </div>
372
411
  </div>
373
- {uploadCompleted[fileId] ? (
412
+ {uploadCompleted[fileId] && (
374
413
  <div className="flex align-items-center gap-2 text-sm">
375
414
  {totalSize[fileId]} of {totalSize[fileId]}
376
415
  <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
@@ -381,26 +420,9 @@ export class SolidMediaMultipleField implements ISolidField {
381
420
  </svg>
382
421
  Completed
383
422
  </div>
384
- ) : (
385
- <div className="flex align-items-center gap-2 text-sm">
386
- {uploadedSize[fileId]} of {totalSize[fileId]}
387
- <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
388
- <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
389
- </svg>
390
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
391
- <path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
392
- </svg>
393
- Uploading {uploadProgress[fileId]}% Completed
394
- </div>
395
423
  )}
396
424
  </div>
397
425
  </div>
398
- <ProgressBar
399
- value={uploadProgress[fileId]}
400
- showValue={false}
401
- style={{ height: 4 }}
402
- className="mt-2"
403
- />
404
426
  </div>
405
427
  );
406
428
  })