@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
@@ -11,6 +11,10 @@ import { Schema } from "yup";
11
11
  import { FormikObject, ISolidField, SolidFieldProps } from "./ISolidField";
12
12
  import { FileReaderExt } from "@/components/common/FileReaderExt";
13
13
  import { ProgressBar } from "primereact/progressbar";
14
+ import Link from "next/link";
15
+ import getAcceptedFileTypes from "@/helpers/getAcceptedFileTypes";
16
+ import { downloadMediaFile } from "@/helpers/downloadMediaFile";
17
+
14
18
  export class SolidMediaSingleField implements ISolidField {
15
19
 
16
20
  private fieldContext: SolidFieldProps;
@@ -79,15 +83,15 @@ export class SolidMediaSingleField implements ISolidField {
79
83
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
80
84
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
81
85
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
86
+ const readOnlyPermission = this.fieldContext.readOnly;
82
87
 
83
88
  const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);
84
89
  const [imageToBeDeletedData, setImageToBeDeletedData] = useState<any>();
85
- const [imagesPreview, setImagesPreview] = useState<string | ArrayBuffer | null>(null);
86
- const [uploadProgress, setUploadProgress] = useState<number>(0);
87
90
  const [uploadCompleted, setUploadCompleted] = useState<boolean>(false);
88
- const [fileDetails, setFileDetails] = useState<{ name: string; type: string } | null>(null);
89
- const [uploadedSize, setUploadedSize] = useState<string>("0 MB");
91
+ const [fileDetails, setFileDetails] = useState<{ name: string; type: string, fileUrl: string } | null>(null);
90
92
  const [totalSize, setTotalSize] = useState<string>("0 KB");
93
+ const [isReplaceImageDialogVisible, setReplaceImageDialogVisible] = useState(false);
94
+ const [newFileToUpload, setNewFileToUpload] = useState<any>(null);
91
95
 
92
96
  const formatFileSize = (size: number) => {
93
97
  return size >= 1024 * 1024
@@ -95,145 +99,110 @@ export class SolidMediaSingleField implements ISolidField {
95
99
  : `${(size / 1024).toFixed(1)} KB`;
96
100
  };
97
101
 
98
- const fieldDisabled = fieldLayoutInfo.attrs?.disabled;
99
- const fieldReadonly = fieldLayoutInfo.attrs?.readonly;
100
-
101
- const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;
102
- const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;
103
-
104
102
  const [
105
103
  deleteMedia,
106
104
  { isLoading: isMediaDeleted, isSuccess: isDeleteMediaSuceess, isError: isMediaDeleteError, error: mediaDeleteError, data: DeletedMedia },
107
105
  ] = useDeleteMediaMutation();
108
106
 
109
- const handleDelete = () => {
110
- imageToBeDeletedData.e.stopPropagation();
111
- if (imageToBeDeletedData.imagesPreview.id) {
112
- deleteMedia(imageToBeDeletedData.imagesPreview.id);
113
- }
114
- formik.setFieldValue(fieldLayoutInfo.attrs.name, null);
115
- setDeleteImageDialogVisible(false);
116
- };
117
107
  const handleCancelUpload = (e: React.MouseEvent) => {
118
108
  e.stopPropagation();
119
109
  if (imageToBeDeletedData) {
120
110
  deleteMedia(imageToBeDeletedData);
121
111
  }
122
112
  e.stopPropagation();
123
- setUploadProgress(0);
124
113
  setUploadCompleted(false);
125
114
  setFileDetails(null);
126
115
  formik.setFieldValue(fieldLayoutInfo.attrs.name, null);
127
116
  setDeleteImageDialogVisible(false);
128
117
  };
129
118
 
130
- const handleDropImage = (acceptedFiles: File[]) => {
131
- // const file = acceptedFiles[0];
132
- // if (file) {
133
- // formik.setFieldValue(fieldLayoutInfo.attrs.name, file);
134
- // } else {
135
- // console.error("No file was accepted");
136
- // }
119
+ const handleDropImage = (acceptedFiles: any[]) => {
137
120
  const file = acceptedFiles[0];
138
121
  if (!file) return;
122
+ if (fileDetails) {
123
+ // If a file is already uploaded, show the confirmation dialog
124
+ setNewFileToUpload(file);
125
+ setReplaceImageDialogVisible(true);
126
+ } else {
127
+ // If no file is present, proceed with upload
128
+ uploadFile(file);
129
+ }
130
+ };
139
131
 
132
+ const uploadFile = (file: any) => {
140
133
  setUploadCompleted(false);
141
- setUploadProgress(0);
142
134
  setTotalSize(formatFileSize(file.size));
143
- setUploadedSize("0 KB");
144
- setFileDetails({ name: file.name, type: file.type });
135
+ setFileDetails({ name: file.name, type: file.type, fileUrl: file.fileUrl });
145
136
 
146
137
  const reader = new FileReader();
147
-
148
- reader.onloadstart = () => {
149
- setUploadProgress(0);
150
- setUploadedSize("0 KB");
151
- };
152
- reader.onprogress = (event) => {
153
- if (event.loaded && event.total) {
154
- const percent = Math.round((event.loaded / event.total) * 100);
155
- setUploadProgress(percent);
156
- setUploadedSize(formatFileSize(event.loaded));
157
- }
158
- };
159
-
160
138
  reader.onloadend = () => {
161
- setUploadProgress(100);
162
139
  setUploadCompleted(true);
163
- setUploadedSize(totalSize); // Set uploaded size to total size after completion
164
140
  };
165
-
166
141
  reader.readAsDataURL(file);
167
142
  formik.setFieldValue(fieldLayoutInfo.attrs.name, file);
168
143
  };
144
+ const handleReplaceFile = () => {
145
+ // Delete the existing file first
146
+ if (imageToBeDeletedData) {
147
+ deleteMedia(imageToBeDeletedData);
148
+ }
169
149
 
170
- // useEffect(() => {
171
- // const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];
150
+ setUploadCompleted(false);
151
+ setFileDetails(null);
152
+ formik.setFieldValue(fieldLayoutInfo.attrs.name, null);
172
153
 
173
- // if (fieldValue instanceof File) {
174
- // setImagesPreview(URL.createObjectURL(fieldValue)); // Generate preview URL for file
175
- // }
176
- // if (typeof fieldValue === 'object') {
177
- // setImagesPreview(fieldValue); // Generate preview URL for file
178
- // }
179
- // if (!fieldValue) {
180
- // setImagesPreview(null);
181
- // }
182
- // }, [formik.values, fieldLayoutInfo.attrs.name]);
154
+ // Proceed with uploading new file
155
+ if (newFileToUpload) {
156
+ uploadFile(newFileToUpload);
157
+ setNewFileToUpload(null);
158
+ }
159
+
160
+ setReplaceImageDialogVisible(false);
161
+ };
183
162
  useEffect(() => {
184
163
  const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];
185
164
 
186
165
  if (fieldValue && typeof fieldValue === "object") {
187
- const fileUrl = fieldValue._full_url;
188
- if (typeof fileUrl === "string" && fileUrl.length > 0) {
189
- const fileName = fileUrl.split("/").pop(); // Extract filename from URL
190
- setFileDetails({ name: fileName || "Unknown File", type: "Uploaded File" });
191
-
192
- // Set upload progress
193
- setUploadProgress(100);
194
- setUploadCompleted(true);
195
- setImageToBeDeletedData(fieldValue.id)
196
- // Ensure Formik has the existing file URL
197
- formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);
166
+ let fileUrl = "";
167
+ let fileName = "Unknown File";
168
+
169
+ if (fieldValue instanceof File) {
170
+ // Handle new file upload
171
+ fileUrl = fieldValue.name;
172
+ fileName = fileUrl;
173
+ } else if (fieldValue._full_url) {
174
+ // Handle updated file from backend
175
+ fileUrl = fieldValue._full_url;
176
+ fileName = fieldValue.relativeUri?.split("/").pop() || "Unknown File";
198
177
  }
178
+
179
+ setFileDetails({ name: fileName, type: "Uploaded File", fileUrl });
180
+
181
+ // Set upload progress
182
+ setUploadCompleted(true);
183
+ setImageToBeDeletedData(fieldValue.id);
184
+ formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);
199
185
  }
200
186
  }, [formik.values, fieldLayoutInfo.attrs.name]);
201
187
 
202
-
203
188
  const {
204
189
  getRootProps: getRootProps,
205
190
  getInputProps: getInputProps,
206
191
  isDragActive: isDragActive,
207
192
  } = useDropzone({
208
193
  onDrop: handleDropImage,
209
- accept: {
210
- "image/jpeg": [],
211
- "image/png": [],
212
- },
213
- maxSize: 2 * 1024 * 1024, // 2MB
194
+ accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),
195
+ maxSize: fieldMetadata.mediaMaxSizeKb * 1024,
214
196
  });
215
197
 
216
198
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
217
199
 
218
- const imageFormatHandler = (preview: any) => {
219
- if (typeof preview === 'string') {
220
- return preview; // Existing URLs
221
- }
222
- if (preview instanceof File) {
223
- return URL.createObjectURL(preview); // Generate preview URL for File
224
- }
225
- if (typeof preview === 'object') {
226
- return preview._full_url
227
- }
228
- return ""; // Fallback for invalid cases
229
- }
230
-
231
200
  return (
232
- <div className={className}>
201
+ <div className={className} style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>
233
202
  <div className="flex flex-column gap-2 mt-4">
234
203
  {showFieldLabel != false &&
235
204
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
236
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
205
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
237
206
  </label>
238
207
  }
239
208
  <div
@@ -241,7 +210,10 @@ export class SolidMediaSingleField implements ISolidField {
241
210
  className="solid-dropzone-wrapper"
242
211
  >
243
212
  <input {...getInputProps()} />
244
- <DropzonePlaceholder />
213
+ <DropzonePlaceholder
214
+ mediaTypes={fieldMetadata.mediaTypes}
215
+ mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}
216
+ />
245
217
  </div>
246
218
  {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
247
219
  <Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
@@ -251,46 +223,47 @@ export class SolidMediaSingleField implements ISolidField {
251
223
  <div className="flex align-items-center gap-2">
252
224
  <FileReaderExt fileDetails={fileDetails} />
253
225
  <div className="w-full flex flex-column gap-1">
254
- <div className="flex align-items-center justify-content-between">
255
- <div className="font-bold">{fileDetails.name}</div>
256
- <div className="cancel-upload-button" onClick={() => setDeleteImageDialogVisible(true)}>
257
- <svg xmlns="http://www.w3.org/2000/svg" width="6" height="6" viewBox="0 0 6 6" fill="none">
258
- <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" />
259
- </svg>
226
+ <div className="flex align-items-start justify-content-between">
227
+ <Link className="font-normal w-9" href={process.env.NEXT_PUBLIC_BACKEND_API_URL + `/${fileDetails?.fileUrl}`} target="_blank">{fileDetails.name}</Link>
228
+ <div className="flex align-items-center gap-2">
229
+ <div>
230
+ <Button
231
+ text
232
+ icon={"pi pi-download"}
233
+ size="small"
234
+ severity="secondary"
235
+ // className="p-2"
236
+ style={{
237
+ height: 16,
238
+ width: 16
239
+ }}
240
+ onClick={() => downloadMediaFile(fileDetails?.fileUrl, fileDetails?.name)}
241
+ />
242
+ </div>
243
+ <div>
244
+ <Button
245
+ text
246
+ icon={"pi pi-times"}
247
+ size="small"
248
+ severity="secondary"
249
+ // className="p-2"
250
+ style={{
251
+ height: 16,
252
+ width: 16
253
+ }}
254
+ onClick={() => setDeleteImageDialogVisible(true)}
255
+ />
256
+ </div>
260
257
  </div>
261
258
  </div>
262
259
  {
263
- uploadCompleted ?
264
- <div className="flex align-items-center gap-2 text-sm">
265
- {totalSize} of {totalSize}
266
- <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
267
- <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
268
- </svg>
269
- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
270
- <mask id="mask0_2480_8635" style={{ maskType: 'alpha' }} maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20">
271
- <rect width="20" height="20" fill="#D9D9D9" />
272
- </mask>
273
- <g mask="url(#mask0_2480_8635)">
274
- <path d="M9.16 12.76L13.39 8.53L12.55 7.69L9.16 11.08L7.45 9.37L6.61 10.21L9.16 12.76ZM10 16C9.17 16 8.39 15.8424 7.66 15.5272C6.93 15.2124 6.295 14.785 5.755 14.245C5.215 13.705 4.7876 13.07 4.4728 12.34C4.1576 11.61 4 10.83 4 10C4 9.17 4.1576 8.39 4.4728 7.66C4.7876 6.93 5.215 6.295 5.755 5.755C6.295 5.215 6.93 4.7874 7.66 4.4722C8.39 4.1574 9.17 4 10 4C10.83 4 11.61 4.1574 12.34 4.4722C13.07 4.7874 13.705 5.215 14.245 5.755C14.785 6.295 15.2124 6.93 15.5272 7.66C15.8424 8.39 16 9.17 16 10C16 10.83 15.8424 11.61 15.5272 12.34C15.2124 13.07 14.785 13.705 14.245 14.245C13.705 14.785 13.07 15.2124 12.34 15.5272C11.61 15.8424 10.83 16 10 16Z" fill="#722ED1" />
275
- </g>
276
- </svg>
277
- Completed
278
- </div>
279
- :
280
- <div className="flex align-items-center gap-2 text-sm">
281
- {uploadedSize} of {totalSize}
282
- <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
283
- <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
284
- </svg>
285
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
286
- <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" />
287
- </svg>
288
- Uploading ${uploadProgress}% Completed
289
- </div>
260
+ uploadCompleted &&
261
+ <div className="flex align-items-center gap-2 text-sm">
262
+ {totalSize}
263
+ </div>
290
264
  }
291
265
  </div>
292
266
  </div>
293
- <ProgressBar value={uploadProgress} showValue={false} style={{ height: 4 }} className="mt-2" />
294
267
  </div>
295
268
  )}
296
269
  </div>
@@ -306,7 +279,21 @@ export class SolidMediaSingleField implements ISolidField {
306
279
  )}
307
280
  onHide={() => setDeleteImageDialogVisible(false)}
308
281
  >
309
- <p>Are you sure you want to delete image?</p>
282
+ <p>Are you sure you want to delete media?</p>
283
+ </Dialog>
284
+ <Dialog
285
+ visible={isReplaceImageDialogVisible}
286
+ header="Replace Image"
287
+ modal
288
+ footer={() => (
289
+ <div className="flex justify-content-center">
290
+ <Button label="Yes, Replace" icon="pi pi-check" className='small-button' severity="danger" onClick={handleReplaceFile} />
291
+ <Button label="Cancel" icon="pi pi-times" className='small-button' onClick={() => setReplaceImageDialogVisible(false)} />
292
+ </div>
293
+ )}
294
+ onHide={() => setReplaceImageDialogVisible(false)}
295
+ >
296
+ <p>An media is already uploaded. Do you want to delete it and upload a new one?</p>
310
297
  </Dialog>
311
298
  </div>
312
299
  );
@@ -62,6 +62,7 @@ export class SolidRichTextField implements ISolidField {
62
62
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
63
63
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
64
64
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
65
+ const readOnlyPermission = this.fieldContext.readOnly;
65
66
 
66
67
  const [text, setText] = useState();
67
68
 
@@ -78,11 +79,11 @@ export class SolidRichTextField implements ISolidField {
78
79
  <div className="flex flex-column gap-2 mt-4">
79
80
  {showFieldLabel != false &&
80
81
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
81
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
82
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
82
83
  </label>
83
84
  }
84
85
  <Editor
85
- readOnly={formReadonly || fieldReadonly}
86
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
86
87
  disabled={formDisabled || fieldDisabled}
87
88
  key={fieldLayoutInfo.attrs.name} // React will re-render the component whenever this value changes
88
89
  id={fieldLayoutInfo.attrs.name}
@@ -56,6 +56,7 @@ export class SolidSelectionDynamicField implements ISolidField {
56
56
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
57
57
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
58
58
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
59
+ const readOnlyPermission = this.fieldContext.readOnly;
59
60
 
60
61
  const fieldDisabled = fieldLayoutInfo.attrs?.disabled;
61
62
  const fieldReadonly = fieldLayoutInfo.attrs?.readonly;
@@ -97,11 +98,11 @@ export class SolidSelectionDynamicField implements ISolidField {
97
98
  <div className="flex flex-column gap-2 mt-4">
98
99
  {showFieldLabel != false &&
99
100
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
100
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
101
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
101
102
  </label>
102
103
  }
103
104
  <AutoComplete
104
- readOnly={formReadonly || fieldReadonly}
105
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
105
106
  disabled={formDisabled || fieldDisabled}
106
107
  {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}
107
108
  id={fieldLayoutInfo.attrs.name}
@@ -77,6 +77,7 @@ export class SolidSelectionStaticField implements ISolidField {
77
77
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
78
78
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
79
79
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
80
+ const readOnlyPermission = this.fieldContext.readOnly;
80
81
 
81
82
  const fieldDisabled = fieldLayoutInfo.attrs?.disabled;
82
83
  const fieldReadonly = fieldLayoutInfo.attrs?.readonly;
@@ -102,11 +103,11 @@ export class SolidSelectionStaticField implements ISolidField {
102
103
  <div className="flex flex-column gap-2 mt-4">
103
104
  {showFieldLabel != false &&
104
105
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
105
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
106
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
106
107
  </label>
107
108
  }
108
109
  <AutoComplete
109
- readOnly={formReadonly || fieldReadonly}
110
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
110
111
  disabled={formDisabled || fieldDisabled}
111
112
  {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}
112
113
  id={fieldLayoutInfo.attrs.name}
@@ -69,6 +69,7 @@ export class SolidShortTextField implements ISolidField {
69
69
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
70
70
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
71
71
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
72
+ const readOnlyPermission = this.fieldContext.readOnly;
72
73
 
73
74
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
74
75
 
@@ -83,13 +84,13 @@ export class SolidShortTextField implements ISolidField {
83
84
  <div className="flex flex-column gap-2 mt-4">
84
85
  {showFieldLabel != false &&
85
86
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
86
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
87
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
87
88
 
88
89
  {/* &nbsp; {fieldDescription && <span className="form_field_help_text">`(${fieldDescription})` </span>} */}
89
90
  </label>
90
91
  }
91
92
  <InputText
92
- readOnly={formReadonly || fieldReadonly}
93
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
93
94
  disabled={formDisabled || fieldDisabled}
94
95
  id={fieldLayoutInfo.attrs.name}
95
96
  aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
@@ -52,6 +52,7 @@ export class SolidTimeField 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
 
@@ -64,11 +65,11 @@ export class SolidTimeField implements ISolidField {
64
65
  {showFieldLabel != false &&
65
66
  <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
66
67
 
67
- &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>}
68
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
68
69
  </label>
69
70
  }
70
71
  <Calendar
71
- disabled={formDisabled || fieldDisabled}
72
+ disabled={formDisabled || fieldDisabled || readOnlyPermission}
72
73
  ref={calendarRef} // Attach ref to Calendar
73
74
  id={fieldLayoutInfo.attrs.name}
74
75
  aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
@@ -13,6 +13,7 @@ import * as Yup from 'yup';
13
13
  import { Schema } from "yup";
14
14
  import SolidFormView from "../../SolidFormView";
15
15
  import { FormikObject, ISolidField, SolidFieldProps } from "../ISolidField";
16
+ import { useRouter } from "next/router";
16
17
 
17
18
 
18
19
 
@@ -137,9 +138,13 @@ export class SolidRelationManyToManyField implements ISolidField {
137
138
  const className = fieldLayoutInfo.attrs?.className || 'field col-12';
138
139
  const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
139
140
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
141
+ const router = useRouter();
142
+
143
+ const readOnlyPermission = this.fieldContext.readOnly;
144
+
140
145
 
141
146
  // auto complete specific code.
142
- const entityApi = createSolidEntityApi(fieldMetadata.relationModelSingularName);
147
+ const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);
143
148
  const { useLazyGetSolidEntitiesQuery } = entityApi;
144
149
  const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();
145
150
 
@@ -273,6 +278,7 @@ export class SolidRelationManyToManyField implements ISolidField {
273
278
  return (
274
279
  <div key={a.label} className={`field col-6 flex gap-2 ${i >= 2 ? 'mt-3' : ''}`}>
275
280
  <Checkbox
281
+ readOnly={readOnlyPermission}
276
282
  inputId={a.label}
277
283
  checked={formik.values[fieldLayoutInfo.attrs.name].some((item: any) => item.label === a.label)}
278
284
  onChange={() => handleCheckboxChange(a)}
@@ -295,9 +301,10 @@ export class SolidRelationManyToManyField implements ISolidField {
295
301
  const className = fieldLayoutInfo.attrs?.className || 'field col-12';
296
302
  const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
297
303
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
304
+ const readOnlyPermission = this.fieldContext.readOnly;
298
305
 
299
306
  // auto complete specific code.
300
- const entityApi = createSolidEntityApi(fieldMetadata.relationModelSingularName);
307
+ const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);
301
308
  const { useLazyGetSolidEntitiesQuery } = entityApi;
302
309
  const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();
303
310
 
@@ -369,20 +376,20 @@ export class SolidRelationManyToManyField implements ISolidField {
369
376
  }
370
377
  <div className="flex align-items-center gap-3">
371
378
  <AutoComplete
372
- readOnly={readOnly}
373
- disabled={disabled}
379
+ readOnly={readOnly || readOnlyPermission}
380
+ disabled={disabled || readOnlyPermission}
374
381
  multiple
375
382
  {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}
376
383
  id={fieldLayoutInfo.attrs.name}
377
384
  field="label"
378
385
  value={formik.values[fieldLayoutInfo.attrs.name] || ''}
379
- dropdown
386
+ dropdown={!readOnlyPermission}
380
387
  suggestions={autoCompleteItems}
381
388
  completeMethod={autoCompleteSearch}
382
389
  onChange={formik.handleChange}
383
390
  className="solid-standard-autocomplete w-full"
384
391
  />
385
- {fieldLayoutInfo.attrs.inlineCreate === "true" &&
392
+ {fieldLayoutInfo.attrs.inlineCreate === "true" && readOnlyPermission === false &&
386
393
  this.renderSolidFormEmbededView(formik, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity)
387
394
  }
388
395
  </div>
@@ -410,7 +417,7 @@ export class SolidRelationManyToManyField implements ISolidField {
410
417
  handlePopupClose: (() => {
411
418
  setvisibleCreateRelationEntity(false);
412
419
  }),
413
- modelName: camelCase(this.fieldContext.fieldMetadata.relationModelSingularName)
420
+ modelName: camelCase(this.fieldContext.fieldMetadata.relationCoModelSingularName)
414
421
  }
415
422
 
416
423
  return (
@@ -64,10 +64,11 @@ export class SolidRelationManyToOneField implements ISolidField {
64
64
  const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
65
65
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
66
66
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
67
+ const readOnlyPermission = this.fieldContext.readOnly;
67
68
  const [visibleCreateRelationEntity, setvisibleCreateRelationEntity] = useState(false);
68
69
 
69
70
  // auto complete specific code.
70
- const entityApi = createSolidEntityApi(fieldMetadata.relationModelSingularName);
71
+ const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);
71
72
  const { useLazyGetSolidEntitiesQuery } = entityApi;
72
73
  const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();
73
74
 
@@ -117,8 +118,6 @@ export class SolidRelationManyToOneField implements ISolidField {
117
118
 
118
119
 
119
120
 
120
- const disabled = fieldLayoutInfo.attrs?.disabled;
121
- const readOnly = fieldLayoutInfo.attrs?.readOnly;
122
121
 
123
122
 
124
123
  const customCreateHandler = (values: any) => {
@@ -145,19 +144,20 @@ export class SolidRelationManyToOneField implements ISolidField {
145
144
  </label>
146
145
  }
147
146
  <AutoComplete
148
- readOnly={formReadonly || fieldReadonly}
149
- disabled={formDisabled || fieldDisabled}
147
+ readOnly={formReadonly || fieldReadonly || readOnlyPermission}
148
+ disabled={formDisabled || fieldDisabled || readOnlyPermission}
150
149
  {...formik.getFieldProps(fieldLayoutInfo.attrs.name)}
151
150
  id={fieldLayoutInfo.attrs.name}
152
151
  field="label"
153
152
  value={formik.values[fieldLayoutInfo.attrs.name] || ''}
154
- dropdown
153
+ dropdown={!readOnlyPermission}
155
154
  suggestions={autoCompleteItems}
156
155
  completeMethod={autoCompleteSearch}
157
156
  onChange={formik.handleChange}
157
+ onFocus={(e) => e.target.select()}
158
158
  className="w-full solid-standard-autocomplete"
159
159
  />
160
- {fieldLayoutInfo.attrs.inlineCreate === "true" &&
160
+ {fieldLayoutInfo.attrs.inlineCreate === "true" && readOnlyPermission === false &&
161
161
  this.renderSolidFormEmbededView(formik, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity)
162
162
  }
163
163
  </div>