@solidxai/core-ui 0.1.9-beta.1 → 0.1.9-beta.11

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 (201) hide show
  1. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  2. package/dist/components/auth/AuthLayout.js +16 -15
  3. package/dist/components/auth/AuthLayout.js.map +1 -1
  4. package/dist/components/auth/AuthLayout.tsx +3 -1
  5. package/dist/components/auth/ForgotPasswordThankYou.js +1 -1
  6. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  7. package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -2
  8. package/dist/components/auth/SolidForgotPassword.js +1 -1
  9. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  10. package/dist/components/auth/SolidForgotPassword.tsx +2 -2
  11. package/dist/components/auth/SolidInitialLoginOtp.js +8 -8
  12. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  13. package/dist/components/auth/SolidInitialLoginOtp.tsx +1 -1
  14. package/dist/components/auth/SolidInitiateRegisterOtp.js +8 -8
  15. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  16. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +1 -1
  17. package/dist/components/auth/SolidLogin.js +7 -8
  18. package/dist/components/auth/SolidLogin.js.map +1 -1
  19. package/dist/components/auth/SolidLogin.tsx +1 -1
  20. package/dist/components/auth/SolidRegister.js +9 -9
  21. package/dist/components/auth/SolidRegister.js.map +1 -1
  22. package/dist/components/auth/SolidRegister.tsx +2 -2
  23. package/dist/components/common/AuthBanner.js.map +1 -1
  24. package/dist/components/common/SocialMediaLogin.js +1 -1
  25. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  26. package/dist/components/common/SocialMediaLogin.tsx +4 -4
  27. package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
  28. package/dist/components/core/form/SolidFormActionHeader.js +1 -0
  29. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  30. package/dist/components/core/form/SolidFormActionHeader.tsx +2 -1
  31. package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
  32. package/dist/components/core/form/SolidFormFooter.js +14 -7
  33. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  34. package/dist/components/core/form/SolidFormFooter.tsx +14 -6
  35. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  36. package/dist/components/core/form/SolidFormView.js +7 -3
  37. package/dist/components/core/form/SolidFormView.js.map +1 -1
  38. package/dist/components/core/form/SolidFormView.tsx +5 -2
  39. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  40. package/dist/components/core/form/fields/SolidBooleanField.js +10 -1
  41. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  42. package/dist/components/core/form/fields/SolidBooleanField.tsx +13 -1
  43. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
  44. package/dist/components/core/form/fields/SolidDecimalField.js +7 -1
  45. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  46. package/dist/components/core/form/fields/SolidDecimalField.tsx +10 -1
  47. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  48. package/dist/components/core/form/fields/SolidIntegerField.js +14 -2
  49. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  50. package/dist/components/core/form/fields/SolidIntegerField.tsx +20 -2
  51. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
  52. package/dist/components/core/form/fields/SolidJsonField.js +9 -1
  53. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  54. package/dist/components/core/form/fields/SolidJsonField.tsx +12 -1
  55. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  56. package/dist/components/core/form/fields/SolidLongTextField.js +23 -3
  57. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  58. package/dist/components/core/form/fields/SolidLongTextField.tsx +32 -3
  59. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  60. package/dist/components/core/form/fields/SolidMediaMultipleField.js +15 -2
  61. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  62. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +20 -4
  63. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  64. package/dist/components/core/form/fields/SolidMediaSingleField.js +21 -3
  65. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  66. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +30 -3
  67. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  68. package/dist/components/core/form/fields/SolidPasswordField.js +2 -1
  69. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  70. package/dist/components/core/form/fields/SolidPasswordField.tsx +13 -1
  71. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  72. package/dist/components/core/form/fields/SolidRichTextField.js +9 -1
  73. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  74. package/dist/components/core/form/fields/SolidRichTextField.tsx +12 -1
  75. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  76. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -2
  77. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  78. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +8 -2
  79. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
  80. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +14 -3
  81. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  82. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +20 -3
  83. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
  84. package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
  85. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +1 -2
  86. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
  87. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
  88. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
  89. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +21 -10
  90. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
  91. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
  92. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
  93. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +18 -10
  94. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
  95. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +3 -6
  96. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
  97. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +30 -24
  98. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
  99. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
  100. package/dist/components/core/list/SolidDataTablePagination.d.ts +15 -0
  101. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +1 -0
  102. package/dist/components/core/list/SolidDataTablePagination.js +22 -0
  103. package/dist/components/core/list/SolidDataTablePagination.js.map +1 -0
  104. package/dist/components/core/list/SolidDataTablePagination.tsx +71 -0
  105. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  106. package/dist/components/core/list/SolidListView.js +66 -2
  107. package/dist/components/core/list/SolidListView.js.map +1 -1
  108. package/dist/components/core/list/SolidListView.tsx +67 -2
  109. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
  110. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
  111. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +6 -7
  112. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
  113. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +9 -10
  114. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts +3 -0
  115. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts.map +1 -0
  116. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js +39 -0
  117. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js.map +1 -0
  118. package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.tsx +50 -0
  119. package/dist/components/core/tree/SolidTreeTable.d.ts +1 -1
  120. package/dist/components/core/tree/SolidTreeTable.d.ts.map +1 -1
  121. package/dist/components/core/tree/SolidTreeTable.js +78 -78
  122. package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
  123. package/dist/components/core/tree/SolidTreeTable.tsx +1 -10
  124. package/dist/components/core/users/CreateUser.css +27 -2
  125. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  126. package/dist/components/core/users/CreateUser.js +52 -24
  127. package/dist/components/core/users/CreateUser.js.map +1 -1
  128. package/dist/components/core/users/CreateUser.tsx +46 -33
  129. package/dist/components/solid-ui/SolidButton.d.ts +14 -0
  130. package/dist/components/solid-ui/SolidButton.d.ts.map +1 -0
  131. package/dist/components/solid-ui/SolidButton.js +36 -0
  132. package/dist/components/solid-ui/SolidButton.js.map +1 -0
  133. package/dist/components/solid-ui/SolidButton.tsx +54 -0
  134. package/dist/components/solid-ui/SolidTabs.d.ts +18 -0
  135. package/dist/components/solid-ui/SolidTabs.d.ts.map +1 -0
  136. package/dist/components/solid-ui/SolidTabs.js +22 -0
  137. package/dist/components/solid-ui/SolidTabs.js.map +1 -0
  138. package/dist/components/solid-ui/SolidTabs.tsx +73 -0
  139. package/dist/components/solid-ui/index.d.ts +3 -0
  140. package/dist/components/solid-ui/index.d.ts.map +1 -0
  141. package/dist/components/solid-ui/index.js +3 -0
  142. package/dist/components/solid-ui/index.js.map +1 -0
  143. package/dist/components/solid-ui/index.ts +2 -0
  144. package/dist/helpers/registry.d.ts.map +1 -1
  145. package/dist/helpers/registry.js +3 -0
  146. package/dist/helpers/registry.js.map +1 -1
  147. package/dist/helpers/registry.ts +4 -0
  148. package/dist/index.d.ts +2 -0
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +1 -0
  151. package/dist/index.js.map +1 -1
  152. package/dist/index.ts +2 -0
  153. package/dist/resources/shadcn-base.css +17 -9
  154. package/dist/routes/SolidRouteMetadataBoundary.d.ts +5 -0
  155. package/dist/routes/SolidRouteMetadataBoundary.d.ts.map +1 -0
  156. package/dist/routes/SolidRouteMetadataBoundary.js +72 -0
  157. package/dist/routes/SolidRouteMetadataBoundary.js.map +1 -0
  158. package/dist/routes/SolidRouteMetadataBoundary.tsx +77 -0
  159. package/dist/routes/pages/studio/StudioLandingPage.d.ts.map +1 -1
  160. package/dist/routes/pages/studio/StudioLandingPage.js +35 -7
  161. package/dist/routes/pages/studio/StudioLandingPage.js.map +1 -1
  162. package/dist/routes/pages/studio/StudioLandingPage.tsx +42 -6
  163. package/dist/routes/solidRoutes.d.ts.map +1 -1
  164. package/dist/routes/solidRoutes.js +47 -26
  165. package/dist/routes/solidRoutes.js.map +1 -1
  166. package/dist/routes/solidRoutes.tsx +47 -26
  167. package/dist/routes/types.d.ts +7 -0
  168. package/dist/routes/types.d.ts.map +1 -1
  169. package/dist/routes/types.js.map +1 -1
  170. package/dist/routes/types.ts +8 -0
  171. package/package.json +1 -1
  172. package/dist/components/auth/SolidOTPVerify.d.ts +0 -3
  173. package/dist/components/auth/SolidOTPVerify.d.ts.map +0 -1
  174. package/dist/components/auth/SolidOTPVerify.js +0 -67
  175. package/dist/components/auth/SolidOTPVerify.js.map +0 -1
  176. package/dist/components/auth/SolidOTPVerify.tsx +0 -133
  177. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +0 -2
  178. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +0 -1
  179. package/dist/components/core/common/LoadDynamicJsxComponent.js +0 -50
  180. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +0 -1
  181. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +0 -70
  182. package/dist/nextAuth/authProviders.d.ts +0 -4
  183. package/dist/nextAuth/authProviders.d.ts.map +0 -1
  184. package/dist/nextAuth/authProviders.js +0 -198
  185. package/dist/nextAuth/authProviders.js.map +0 -1
  186. package/dist/nextAuth/authProviders.tsx +0 -232
  187. package/dist/nextAuth/handleLogout.d.ts +0 -2
  188. package/dist/nextAuth/handleLogout.d.ts.map +0 -1
  189. package/dist/nextAuth/handleLogout.js +0 -36
  190. package/dist/nextAuth/handleLogout.js.map +0 -1
  191. package/dist/nextAuth/handleLogout.tsx +0 -39
  192. package/dist/nextAuth/refreshAccessToken.d.ts +0 -2
  193. package/dist/nextAuth/refreshAccessToken.d.ts.map +0 -1
  194. package/dist/nextAuth/refreshAccessToken.js +0 -24
  195. package/dist/nextAuth/refreshAccessToken.js.map +0 -1
  196. package/dist/nextAuth/refreshAccessToken.tsx +0 -28
  197. package/dist/redux/features/settingsSlice.d.ts +0 -20
  198. package/dist/redux/features/settingsSlice.d.ts.map +0 -1
  199. package/dist/redux/features/settingsSlice.js +0 -39
  200. package/dist/redux/features/settingsSlice.js.map +0 -1
  201. package/dist/redux/features/settingsSlice.ts +0 -60
@@ -244,6 +244,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
244
244
  const [filterPredicates, setFilterPredicates] = useState<any>(null);
245
245
  const [showSaveFilterPopup, setShowSaveFilterPopup] = useState<boolean>(false);
246
246
  const [showGlobalSearchElement, setShowGlobalSearchElement] = useState(false);
247
+ const suppressNextFilterPaginationResetRef = useRef(false);
247
248
 
248
249
  const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();
249
250
 
@@ -564,6 +565,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
564
565
  const queryObject = getFilterObjectFromLocalStorage();
565
566
 
566
567
  if (queryObject) {
568
+ suppressNextFilterPaginationResetRef.current = true;
567
569
  const queryData = {
568
570
  offset: queryObject.offset || 0,
569
571
  limit: queryObject.limit || 25,
@@ -822,8 +824,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
822
824
 
823
825
  const queryString = qs.stringify(queryData, { encodeValuesOnly: true });
824
826
 
825
- if (latestFilterPredicatesRef.current && latestFilterPredicatesRef.current.persistFilter) {
827
+ if (latestFilterPredicatesRef.current) {
826
828
  const fileterTobeStored = structuredClone(queryData);
829
+ fileterTobeStored.finalFullFilter = fileterTobeStored.filters;
827
830
  delete fileterTobeStored.filters;
828
831
  fileterTobeStored.custom_filter_predicate = latestFilterPredicatesRef.current.custom_filter_predicate || null;
829
832
  fileterTobeStored.search_predicate = latestFilterPredicatesRef.current.search_predicate || null;
@@ -853,6 +856,22 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
853
856
  }
854
857
  const updatedFilter = queryfilter;
855
858
 
859
+ const previousPredicates = latestFilterPredicatesRef.current;
860
+ const nextPredicatesComparable = {
861
+ custom_filter_predicate: filterPredicates?.custom_filter_predicate || null,
862
+ search_predicate: filterPredicates?.search_predicate || null,
863
+ saved_filter_predicate: filterPredicates?.saved_filter_predicate || null,
864
+ predefined_search_predicate: filterPredicates?.predefined_search_predicate || null,
865
+ };
866
+ const previousPredicatesComparable = {
867
+ custom_filter_predicate: previousPredicates?.custom_filter_predicate || null,
868
+ search_predicate: previousPredicates?.search_predicate || null,
869
+ saved_filter_predicate: previousPredicates?.saved_filter_predicate || null,
870
+ predefined_search_predicate: previousPredicates?.predefined_search_predicate || null,
871
+ };
872
+ const hasPredicateChanged =
873
+ JSON.stringify(previousPredicatesComparable) !== JSON.stringify(nextPredicatesComparable);
874
+
856
875
  // Update refs IMMEDIATELY (synchronously)
857
876
  latestFiltersRef.current = updatedFilter;
858
877
  const updatedFilterPredicates = structuredClone(filterPredicates);
@@ -862,7 +881,53 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
862
881
  // Then update state
863
882
  setFilters(updatedFilter);
864
883
  setFilterPredicates(updatedFilterPredicates);
865
- setFirst(0);
884
+ const hasMeaningfulFilterValueLocal = (value: any): boolean => {
885
+ if (value === null || value === undefined) return false;
886
+ if (typeof value === "string") return value.trim().length > 0;
887
+ if (typeof value === "number" || typeof value === "boolean") return true;
888
+ if (Array.isArray(value)) return value.some((item) => hasMeaningfulFilterValueLocal(item));
889
+ if (typeof value === "object") return hasAppliedFiltersLocal(value);
890
+ return false;
891
+ };
892
+
893
+ const hasAppliedFiltersLocal = (filterObject: any): boolean => {
894
+ if (!filterObject || typeof filterObject !== "object") return false;
895
+
896
+ if (Array.isArray(filterObject)) {
897
+ return filterObject.some((item) => hasAppliedFiltersLocal(item) || hasMeaningfulFilterValueLocal(item));
898
+ }
899
+
900
+ return Object.entries(filterObject).some(([key, val]) => {
901
+ if (key === "matchMode" || key === "operator") return false;
902
+ if (key === "value") return hasMeaningfulFilterValueLocal(val);
903
+ if ((key === "$and" || key === "$or") && Array.isArray(val)) {
904
+ return val.some((item) => hasAppliedFiltersLocal(item) || hasMeaningfulFilterValueLocal(item));
905
+ }
906
+ if (typeof val === "object") return hasAppliedFiltersLocal(val);
907
+ return hasMeaningfulFilterValueLocal(val);
908
+ });
909
+ };
910
+
911
+ const hasCurrentMeaningfulPredicates =
912
+ hasAppliedFiltersLocal(updatedFilterPredicates?.custom_filter_predicate) ||
913
+ hasAppliedFiltersLocal(updatedFilterPredicates?.search_predicate) ||
914
+ hasAppliedFiltersLocal(updatedFilterPredicates?.saved_filter_predicate) ||
915
+ hasAppliedFiltersLocal(updatedFilterPredicates?.predefined_search_predicate);
916
+
917
+ const hasPreviousMeaningfulPredicates =
918
+ hasAppliedFiltersLocal(previousPredicates?.custom_filter_predicate) ||
919
+ hasAppliedFiltersLocal(previousPredicates?.search_predicate) ||
920
+ hasAppliedFiltersLocal(previousPredicates?.saved_filter_predicate) ||
921
+ hasAppliedFiltersLocal(previousPredicates?.predefined_search_predicate);
922
+
923
+ const shouldResetPagination =
924
+ hasPredicateChanged && (hasCurrentMeaningfulPredicates || hasPreviousMeaningfulPredicates);
925
+
926
+ if (suppressNextFilterPaginationResetRef.current) {
927
+ suppressNextFilterPaginationResetRef.current = false;
928
+ } else if (shouldResetPagination) {
929
+ setFirst(0);
930
+ }
866
931
  // Force synchronous state updates
867
932
  };
868
933
 
@@ -1,2 +1,2 @@
1
- export declare const SolidListViewRowButtonContextMenu: ({ button, params, getSelectedSolidViewData, solidListViewMetaData, handleCustomButtonClick }: any) => import("react/jsx-runtime").JSX.Element | null;
1
+ export declare const SolidListViewRowButtonContextMenu: ({ button, params, rowData, solidListViewMetaData, handleCustomButtonClick, onActionComplete }: any) => import("react/jsx-runtime").JSX.Element | null;
2
2
  //# sourceMappingURL=SolidListViewRowButtonContextMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidListViewRowButtonContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowButtonContextMenu.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,iCAAiC,iGAAkG,GAAG,mDAmClJ,CAAC"}
1
+ {"version":3,"file":"SolidListViewRowButtonContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowButtonContextMenu.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,iCAAiC,kGAAmG,GAAG,mDAmCnJ,CAAC"}
@@ -9,23 +9,21 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import { useSession } from "../../../hooks/useSession";
14
14
  import { hasAnyRole } from "../../../helpers/rolesHelper";
15
- import { Button } from "primereact/button";
16
15
  export var SolidListViewRowButtonContextMenu = function (_a) {
17
16
  var _b, _c, _d, _e, _f, _g, _h;
18
- var button = _a.button, params = _a.params, getSelectedSolidViewData = _a.getSelectedSolidViewData, solidListViewMetaData = _a.solidListViewMetaData, handleCustomButtonClick = _a.handleCustomButtonClick;
19
- var selectedSolidViewData = getSelectedSolidViewData === null || getSelectedSolidViewData === void 0 ? void 0 : getSelectedSolidViewData();
17
+ var button = _a.button, params = _a.params, rowData = _a.rowData, solidListViewMetaData = _a.solidListViewMetaData, handleCustomButtonClick = _a.handleCustomButtonClick, onActionComplete = _a.onActionComplete;
20
18
  var _j = useSession(), session = _j.data, status = _j.status;
21
19
  var user = session === null || session === void 0 ? void 0 : session.user;
22
20
  var hasRole = !((_b = button === null || button === void 0 ? void 0 : button.attrs) === null || _b === void 0 ? void 0 : _b.roles) || ((_c = button === null || button === void 0 ? void 0 : button.attrs) === null || _c === void 0 ? void 0 : _c.roles.length) === 0 ? true : hasAnyRole(user === null || user === void 0 ? void 0 : user.roles, (_d = button === null || button === void 0 ? void 0 : button.attrs) === null || _d === void 0 ? void 0 : _d.roles);
23
21
  if (!hasRole)
24
22
  return null;
25
- return (_jsx(Button, { type: "button", icon: ((_e = button === null || button === void 0 ? void 0 : button.attrs) === null || _e === void 0 ? void 0 : _e.icon) ? (_f = button === null || button === void 0 ? void 0 : button.attrs) === null || _f === void 0 ? void 0 : _f.icon : "pi pi-pencil", className: "w-full text-left gap-2 ".concat(((_g = button === null || button === void 0 ? void 0 : button.attrs) === null || _g === void 0 ? void 0 : _g.className) ? (_h = button === null || button === void 0 ? void 0 : button.attrs) === null || _h === void 0 ? void 0 : _h.className : ''), label: button.attrs.label, size: "small", onClick: function () {
23
+ return (_jsxs("button", { type: "button", className: "solid-row-action-button ".concat(((_e = button === null || button === void 0 ? void 0 : button.attrs) === null || _e === void 0 ? void 0 : _e.className) ? (_f = button === null || button === void 0 ? void 0 : button.attrs) === null || _f === void 0 ? void 0 : _f.className : ''), onClick: function () {
26
24
  var event = {
27
25
  params: params,
28
- rowData: selectedSolidViewData,
26
+ rowData: rowData,
29
27
  solidListViewMetaData: solidListViewMetaData.data,
30
28
  };
31
29
  var modifiedButtonAttrs = __assign({}, button.attrs); // Create a copy
@@ -34,6 +32,7 @@ export var SolidListViewRowButtonContextMenu = function (_a) {
34
32
  modifiedButtonAttrs.popupWidth = '30vw';
35
33
  }
36
34
  handleCustomButtonClick(modifiedButtonAttrs, event);
37
- } }));
35
+ onActionComplete === null || onActionComplete === void 0 ? void 0 : onActionComplete();
36
+ }, children: [_jsx("i", { className: "".concat(((_g = button === null || button === void 0 ? void 0 : button.attrs) === null || _g === void 0 ? void 0 : _g.icon) ? (_h = button === null || button === void 0 ? void 0 : button.attrs) === null || _h === void 0 ? void 0 : _h.icon : "pi pi-pencil", " solid-row-action-button-icon") }), _jsx("span", { className: "solid-row-action-button-label", children: button.attrs.label })] }));
38
37
  };
39
38
  //# sourceMappingURL=SolidListViewRowButtonContextMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidListViewRowButtonContextMenu.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowButtonContextMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,EAAiG;;QAA/F,MAAM,YAAA,EAAE,MAAM,YAAA,EAAE,wBAAwB,8BAAA,EAAE,qBAAqB,2BAAA,EAAE,uBAAuB,6BAAA;IACxI,IAAM,qBAAqB,GAAG,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,EAAI,CAAC;IAErD,IAAA,KAA4B,UAAU,EAAE,EAAhC,OAAO,UAAA,EAAE,MAAM,YAAiB,CAAC;IAC/C,IAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAE3B,IAAM,OAAO,GAAG,CAAC,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,KAAK,CAAA,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,KAAK,CAAC,MAAM,MAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,KAAK,CAAC,CAAC;IAElI,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACH,KAAC,MAAM,IACH,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,EAAC,CAAC,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,cAAc,EAChE,SAAS,EAAE,iCAA0B,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,SAAS,EAAC,CAAC,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAE,EAC/F,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EACzB,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE;YACL,IAAM,KAAK,GAAG;gBACV,MAAM,QAAA;gBACN,OAAO,EAAE,qBAAqB;gBAC9B,qBAAqB,EAAE,qBAAqB,CAAC,IAAI;aACpD,CAAC;YAEF,IAAM,mBAAmB,gBAAQ,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,gBAAgB;YAEjE,oDAAoD;YACpD,IAAI,mBAAmB,CAAC,MAAM,KAAK,4BAA4B,IAAI,mBAAmB,CAAC,MAAM,KAAK,6BAA6B,EAAE;gBAC7H,mBAAmB,CAAC,UAAU,GAAG,MAAM,CAAC;aAC3C;YAED,uBAAuB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,GACH,CACL,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { useSession } from \"../../../hooks/useSession\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { Button } from \"primereact/button\";\n\nexport const SolidListViewRowButtonContextMenu = ({ button, params, getSelectedSolidViewData, solidListViewMetaData, handleCustomButtonClick }: any) => {\n const selectedSolidViewData = getSelectedSolidViewData?.();\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const hasRole = !button?.attrs?.roles || button?.attrs?.roles.length === 0 ? true : hasAnyRole(user?.roles, button?.attrs?.roles);\n\n if (!hasRole) return null;\n\n return (\n <Button\n type=\"button\"\n icon={button?.attrs?.icon ? button?.attrs?.icon : \"pi pi-pencil\"}\n className={`w-full text-left gap-2 ${button?.attrs?.className ? button?.attrs?.className : ''}`}\n label={button.attrs.label}\n size=\"small\"\n onClick={() => {\n const event = {\n params,\n rowData: selectedSolidViewData,\n solidListViewMetaData: solidListViewMetaData.data,\n };\n\n const modifiedButtonAttrs = { ...button.attrs }; // Create a copy\n\n // Conditionally add popupWidth for specific actions\n if (modifiedButtonAttrs.action === 'GenerateModelCodeRowAction' || modifiedButtonAttrs.action === 'GenerateModuleCodeRowAction') {\n modifiedButtonAttrs.popupWidth = '30vw';\n }\n\n handleCustomButtonClick(modifiedButtonAttrs, event);\n }}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SolidListViewRowButtonContextMenu.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowButtonContextMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,EAAkG;;QAAhG,MAAM,YAAA,EAAE,MAAM,YAAA,EAAE,OAAO,aAAA,EAAE,qBAAqB,2BAAA,EAAE,uBAAuB,6BAAA,EAAE,gBAAgB,sBAAA;IAEnI,IAAA,KAA4B,UAAU,EAAE,EAAhC,OAAO,UAAA,EAAE,MAAM,YAAiB,CAAC;IAC/C,IAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAE3B,IAAM,OAAO,GAAG,CAAC,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,KAAK,CAAA,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,KAAK,CAAC,MAAM,MAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,KAAK,CAAC,CAAC;IAElI,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACH,kBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,kCAA2B,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,SAAS,EAAC,CAAC,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAE,EAChG,OAAO,EAAE;YACL,IAAM,KAAK,GAAG;gBACV,MAAM,QAAA;gBACN,OAAO,EAAE,OAAO;gBAChB,qBAAqB,EAAE,qBAAqB,CAAC,IAAI;aACpD,CAAC;YAEF,IAAM,mBAAmB,gBAAQ,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,gBAAgB;YAEjE,oDAAoD;YACpD,IAAI,mBAAmB,CAAC,MAAM,KAAK,4BAA4B,IAAI,mBAAmB,CAAC,MAAM,KAAK,6BAA6B,EAAE;gBAC7H,mBAAmB,CAAC,UAAU,GAAG,MAAM,CAAC;aAC3C;YAED,uBAAuB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YACpD,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,EAAI,CAAC;QACzB,CAAC,aAED,YAAG,SAAS,EAAE,UAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,EAAC,CAAC,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,cAAc,kCAA+B,GAAI,EAC9G,eAAM,SAAS,EAAC,+BAA+B,YAAE,MAAM,CAAC,KAAK,CAAC,KAAK,GAAQ,IACtE,CACZ,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { useSession } from \"../../../hooks/useSession\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\n\nexport const SolidListViewRowButtonContextMenu = ({ button, params, rowData, solidListViewMetaData, handleCustomButtonClick, onActionComplete }: any) => {\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const hasRole = !button?.attrs?.roles || button?.attrs?.roles.length === 0 ? true : hasAnyRole(user?.roles, button?.attrs?.roles);\n\n if (!hasRole) return null;\n\n return (\n <button\n type=\"button\"\n className={`solid-row-action-button ${button?.attrs?.className ? button?.attrs?.className : ''}`}\n onClick={() => {\n const event = {\n params,\n rowData: rowData,\n solidListViewMetaData: solidListViewMetaData.data,\n };\n\n const modifiedButtonAttrs = { ...button.attrs }; // Create a copy\n\n // Conditionally add popupWidth for specific actions\n if (modifiedButtonAttrs.action === 'GenerateModelCodeRowAction' || modifiedButtonAttrs.action === 'GenerateModuleCodeRowAction') {\n modifiedButtonAttrs.popupWidth = '30vw';\n }\n\n handleCustomButtonClick(modifiedButtonAttrs, event);\n onActionComplete?.();\n }}\n >\n <i className={`${button?.attrs?.icon ? button?.attrs?.icon : \"pi pi-pencil\"} solid-row-action-button-icon`} />\n <span className=\"solid-row-action-button-label\">{button.attrs.label}</span>\n </button>\n );\n};\n"]}
@@ -1,9 +1,7 @@
1
1
  import { useSession } from "../../../hooks/useSession";
2
2
  import { hasAnyRole } from "../../../helpers/rolesHelper";
3
- import { Button } from "primereact/button";
4
3
 
5
- export const SolidListViewRowButtonContextMenu = ({ button, params, getSelectedSolidViewData, solidListViewMetaData, handleCustomButtonClick }: any) => {
6
- const selectedSolidViewData = getSelectedSolidViewData?.();
4
+ export const SolidListViewRowButtonContextMenu = ({ button, params, rowData, solidListViewMetaData, handleCustomButtonClick, onActionComplete }: any) => {
7
5
 
8
6
  const { data: session, status } = useSession();
9
7
  const user = session?.user;
@@ -13,16 +11,13 @@ export const SolidListViewRowButtonContextMenu = ({ button, params, getSelectedS
13
11
  if (!hasRole) return null;
14
12
 
15
13
  return (
16
- <Button
14
+ <button
17
15
  type="button"
18
- icon={button?.attrs?.icon ? button?.attrs?.icon : "pi pi-pencil"}
19
- className={`w-full text-left gap-2 ${button?.attrs?.className ? button?.attrs?.className : ''}`}
20
- label={button.attrs.label}
21
- size="small"
16
+ className={`solid-row-action-button ${button?.attrs?.className ? button?.attrs?.className : ''}`}
22
17
  onClick={() => {
23
18
  const event = {
24
19
  params,
25
- rowData: selectedSolidViewData,
20
+ rowData: rowData,
26
21
  solidListViewMetaData: solidListViewMetaData.data,
27
22
  };
28
23
 
@@ -34,7 +29,11 @@ export const SolidListViewRowButtonContextMenu = ({ button, params, getSelectedS
34
29
  }
35
30
 
36
31
  handleCustomButtonClick(modifiedButtonAttrs, event);
32
+ onActionComplete?.();
37
33
  }}
38
- />
34
+ >
35
+ <i className={`${button?.attrs?.icon ? button?.attrs?.icon : "pi pi-pencil"} solid-row-action-button-icon`} />
36
+ <span className="solid-row-action-button-label">{button.attrs.label}</span>
37
+ </button>
39
38
  );
40
39
  };
@@ -0,0 +1,3 @@
1
+ import { SolidListFieldWidgetProps } from "../../../../types/solid-core";
2
+ export declare const SolidUserBlockedStatusListWidget: ({ rowData }: SolidListFieldWidgetProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SolidUserBlockedStatusListWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidUserBlockedStatusListWidget.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/widgets/SolidUserBlockedStatusListWidget.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAiBzE,eAAO,MAAM,gCAAgC,gBAAiB,yBAAyB,4CA6BtF,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { getSettingsMap } from "../../../../helpers/settingsPayload";
3
+ import { useGetSolidSettingsQuery } from "../../../../redux/api/solidSettingsApi";
4
+ function toNumber(value) {
5
+ if (typeof value === "number" && Number.isFinite(value)) {
6
+ return value;
7
+ }
8
+ if (typeof value === "string" && value.trim() !== "") {
9
+ var parsed = Number(value);
10
+ if (Number.isFinite(parsed)) {
11
+ return parsed;
12
+ }
13
+ }
14
+ return null;
15
+ }
16
+ export var SolidUserBlockedStatusListWidget = function (_a) {
17
+ var _b;
18
+ var rowData = _a.rowData;
19
+ var solidSettingsData = useGetSolidSettingsQuery(undefined).data;
20
+ var settingsMap = getSettingsMap(solidSettingsData);
21
+ var maxFailedLoginAttempts = toNumber(settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.maxFailedLoginAttempts);
22
+ var failedLoginAttempts = (_b = toNumber(rowData === null || rowData === void 0 ? void 0 : rowData.failedLoginAttempts)) !== null && _b !== void 0 ? _b : 0;
23
+ var isBlocked = maxFailedLoginAttempts !== null && maxFailedLoginAttempts > 0 && failedLoginAttempts >= maxFailedLoginAttempts;
24
+ return (isBlocked ?
25
+ _jsx("span", { style: {
26
+ display: "inline-flex",
27
+ alignItems: "center",
28
+ padding: "0.2rem 0.5rem",
29
+ borderRadius: "999px",
30
+ fontSize: "0.75rem",
31
+ fontWeight: 600,
32
+ backgroundColor: "#fee2e2",
33
+ color: "#991b1b",
34
+ // backgroundColor: isBlocked ? "#fee2e2" : "#dcfce7",
35
+ // color: isBlocked ? "#991b1b" : "#166534",
36
+ }, children: "Blocked" }) :
37
+ _jsx(_Fragment, {}));
38
+ };
39
+ //# sourceMappingURL=SolidUserBlockedStatusListWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidUserBlockedStatusListWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/list/widgets/SolidUserBlockedStatusListWidget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAGlF,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACvD,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpD,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC;SACf;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,IAAM,gCAAgC,GAAG,UAAC,EAAsC;;QAApC,OAAO,aAAA;IAChD,IAAM,iBAAiB,GAAK,wBAAwB,CAAC,SAAS,CAAC,KAAxC,CAAyC;IACxE,IAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAEtD,IAAM,sBAAsB,GAAG,QAAQ,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,sBAAsB,CAAC,CAAC;IAC7E,IAAM,mBAAmB,GAAG,MAAA,QAAQ,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,CAAC,mCAAI,CAAC,CAAC;IACxE,IAAM,SAAS,GACb,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,GAAG,CAAC,IAAI,mBAAmB,IAAI,sBAAsB,CAAC;IAEjH,OAAO,CACL,SAAS,CAAC,CAAC;QACT,eACE,KAAK,EAAE;gBACL,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,QAAQ;gBACpB,OAAO,EAAE,eAAe;gBACxB,YAAY,EAAE,OAAO;gBACrB,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,GAAG;gBACf,eAAe,EAAE,SAAS;gBAC1B,KAAK,EAAE,SAAS;gBAChB,sDAAsD;gBACtD,4CAA4C;aAC7C,wBAGI,CAAC,CAAC;QACT,mBAAK,CACR,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { getSettingsMap } from \"../../../../helpers/settingsPayload\";\nimport { useGetSolidSettingsQuery } from \"../../../../redux/api/solidSettingsApi\";\nimport { SolidListFieldWidgetProps } from \"../../../../types/solid-core\";\n\nfunction toNumber(value: unknown): number | null {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === \"string\" && value.trim() !== \"\") {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n\n return null;\n}\n\nexport const SolidUserBlockedStatusListWidget = ({ rowData }: SolidListFieldWidgetProps) => {\n const { data: solidSettingsData } = useGetSolidSettingsQuery(undefined);\n const settingsMap = getSettingsMap(solidSettingsData);\n\n const maxFailedLoginAttempts = toNumber(settingsMap?.maxFailedLoginAttempts);\n const failedLoginAttempts = toNumber(rowData?.failedLoginAttempts) ?? 0;\n const isBlocked =\n maxFailedLoginAttempts !== null && maxFailedLoginAttempts > 0 && failedLoginAttempts >= maxFailedLoginAttempts;\n\n return (\n isBlocked ?\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: \"0.2rem 0.5rem\",\n borderRadius: \"999px\",\n fontSize: \"0.75rem\",\n fontWeight: 600,\n backgroundColor: \"#fee2e2\",\n color: \"#991b1b\",\n // backgroundColor: isBlocked ? \"#fee2e2\" : \"#dcfce7\",\n // color: isBlocked ? \"#991b1b\" : \"#166534\",\n }}\n >\n Blocked\n </span> :\n <></>\n );\n};\n\n"]}
@@ -0,0 +1,50 @@
1
+ import { getSettingsMap } from "../../../../helpers/settingsPayload";
2
+ import { useGetSolidSettingsQuery } from "../../../../redux/api/solidSettingsApi";
3
+ import { SolidListFieldWidgetProps } from "../../../../types/solid-core";
4
+
5
+ function toNumber(value: unknown): number | null {
6
+ if (typeof value === "number" && Number.isFinite(value)) {
7
+ return value;
8
+ }
9
+
10
+ if (typeof value === "string" && value.trim() !== "") {
11
+ const parsed = Number(value);
12
+ if (Number.isFinite(parsed)) {
13
+ return parsed;
14
+ }
15
+ }
16
+
17
+ return null;
18
+ }
19
+
20
+ export const SolidUserBlockedStatusListWidget = ({ rowData }: SolidListFieldWidgetProps) => {
21
+ const { data: solidSettingsData } = useGetSolidSettingsQuery(undefined);
22
+ const settingsMap = getSettingsMap(solidSettingsData);
23
+
24
+ const maxFailedLoginAttempts = toNumber(settingsMap?.maxFailedLoginAttempts);
25
+ const failedLoginAttempts = toNumber(rowData?.failedLoginAttempts) ?? 0;
26
+ const isBlocked =
27
+ maxFailedLoginAttempts !== null && maxFailedLoginAttempts > 0 && failedLoginAttempts >= maxFailedLoginAttempts;
28
+
29
+ return (
30
+ isBlocked ?
31
+ <span
32
+ style={{
33
+ display: "inline-flex",
34
+ alignItems: "center",
35
+ padding: "0.2rem 0.5rem",
36
+ borderRadius: "999px",
37
+ fontSize: "0.75rem",
38
+ fontWeight: 600,
39
+ backgroundColor: "#fee2e2",
40
+ color: "#991b1b",
41
+ // backgroundColor: isBlocked ? "#fee2e2" : "#dcfce7",
42
+ // color: isBlocked ? "#991b1b" : "#166534",
43
+ }}
44
+ >
45
+ Blocked
46
+ </span> :
47
+ <></>
48
+ );
49
+ };
50
+
@@ -68,6 +68,6 @@ type SolidTreeTableProps = {
68
68
  };
69
69
  export declare function SolidTreeColumn(_props: SolidTreeColumnProps): null;
70
70
  export declare const Column: typeof SolidTreeColumn;
71
- export declare function SolidTreeTable({ value, children, loading, expandedKeys, onToggle, onExpand, tableClassName, tableStyle, emptyMessage, selectionMode, selectionKeys, onSelectionChange, sortField, sortOrder, removableSort, onSort, onRowClick, }: SolidTreeTableProps): import("react/jsx-runtime").JSX.Element;
71
+ export declare function SolidTreeTable({ value, children, expandedKeys, onToggle, onExpand, tableClassName, tableStyle, emptyMessage, selectionMode, selectionKeys, onSelectionChange, sortField, sortOrder, removableSort, onSort, onRowClick, }: SolidTreeTableProps): import("react/jsx-runtime").JSX.Element;
72
72
  export {};
73
73
  //# sourceMappingURL=SolidTreeTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidTreeTable.d.ts","sourceRoot":"","sources":["../../../../src/components/core/tree/SolidTreeTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SolidTreeTable.d.ts","sourceRoot":"","sources":["../../../../src/components/core/tree/SolidTreeTable.tsx"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import React, { useMemo } from "react";
14
- import { ArrowDownWideNarrow, ArrowUpDown, ArrowUpWideNarrow, ChevronRight, Loader2, Minus } from "lucide-react";
14
+ import { ArrowDownWideNarrow, ArrowUpDown, ArrowUpWideNarrow, ChevronRight, Minus } from "lucide-react";
15
15
  function cx() {
16
16
  var parts = [];
17
17
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -119,7 +119,7 @@ function parseWidthValue(value) {
119
119
  return Number.isFinite(parsed) ? parsed : null;
120
120
  }
121
121
  export function SolidTreeTable(_a) {
122
- var _b = _a.value, value = _b === void 0 ? [] : _b, children = _a.children, _c = _a.loading, loading = _c === void 0 ? false : _c, _d = _a.expandedKeys, expandedKeys = _d === void 0 ? {} : _d, onToggle = _a.onToggle, onExpand = _a.onExpand, tableClassName = _a.tableClassName, tableStyle = _a.tableStyle, emptyMessage = _a.emptyMessage, selectionMode = _a.selectionMode, _e = _a.selectionKeys, selectionKeys = _e === void 0 ? {} : _e, onSelectionChange = _a.onSelectionChange, sortField = _a.sortField, _f = _a.sortOrder, sortOrder = _f === void 0 ? 0 : _f, _g = _a.removableSort, removableSort = _g === void 0 ? true : _g, onSort = _a.onSort, onRowClick = _a.onRowClick;
122
+ var _b = _a.value, value = _b === void 0 ? [] : _b, children = _a.children, _c = _a.expandedKeys, expandedKeys = _c === void 0 ? {} : _c, onToggle = _a.onToggle, onExpand = _a.onExpand, tableClassName = _a.tableClassName, tableStyle = _a.tableStyle, emptyMessage = _a.emptyMessage, selectionMode = _a.selectionMode, _d = _a.selectionKeys, selectionKeys = _d === void 0 ? {} : _d, onSelectionChange = _a.onSelectionChange, sortField = _a.sortField, _e = _a.sortOrder, sortOrder = _e === void 0 ? 0 : _e, _f = _a.removableSort, removableSort = _f === void 0 ? true : _f, onSort = _a.onSort, onRowClick = _a.onRowClick;
123
123
  var columns = useMemo(function () { return normalizeColumns(children); }, [children]);
124
124
  var visibleRows = useMemo(function () { return flattenVisibleNodes(value, expandedKeys); }, [value, expandedKeys]);
125
125
  var selectionWidth = selectionMode === "checkbox" ? 48 : 0;
@@ -188,88 +188,88 @@ export function SolidTreeTable(_a) {
188
188
  }
189
189
  return {};
190
190
  };
191
- return (_jsx("div", { className: "solid-tree-table-root", children: _jsx("div", { className: "solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background", children: _jsxs("div", { className: "relative min-h-full", children: [_jsxs("table", { className: cx("w-full text-sm border-collapse", tableClassName), style: tableStyle, children: [_jsx("thead", { className: "solid-data-table-head sticky top-0 z-2", children: _jsxs("tr", { children: [selectionMode === "checkbox" ? (_jsx("th", { className: "solid-data-table-th solid-data-table-selection-col solid-tree-sticky-cell solid-tree-sticky-cell-left", style: getStickyStyles("selection", null, "header"), children: _jsx("input", { type: "checkbox", checked: Boolean(allVisibleSelected), onChange: function (event) {
192
- var next = __assign({}, selectionKeys);
193
- visibleRows.forEach(function (_a) {
194
- var node = _a.node;
195
- updateSubtreeSelection(node, event.currentTarget.checked, next);
191
+ return (_jsx("div", { className: "solid-tree-table-root", children: _jsx("div", { className: "solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background", children: _jsx("div", { className: "relative min-h-full", children: _jsxs("table", { className: cx("w-full text-sm border-collapse", tableClassName), style: tableStyle, children: [_jsx("thead", { className: "solid-data-table-head sticky top-0 z-2", children: _jsxs("tr", { children: [selectionMode === "checkbox" ? (_jsx("th", { className: "solid-data-table-th solid-data-table-selection-col solid-tree-sticky-cell solid-tree-sticky-cell-left", style: getStickyStyles("selection", null, "header"), children: _jsx("input", { type: "checkbox", checked: Boolean(allVisibleSelected), onChange: function (event) {
192
+ var next = __assign({}, selectionKeys);
193
+ visibleRows.forEach(function (_a) {
194
+ var node = _a.node;
195
+ updateSubtreeSelection(node, event.currentTarget.checked, next);
196
+ });
197
+ var reconciled = reconcileSelection(value, next);
198
+ onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange({
199
+ value: reconciled,
200
+ originalEvent: event,
201
+ });
202
+ }, "aria-label": "Select visible rows" }) })) : null, columns.map(function (column, index) {
203
+ var _a, _b;
204
+ var props = column.props;
205
+ var isSortable = Boolean(props.sortable && props.field);
206
+ var isActiveSort = isSortable && sortField === props.field;
207
+ var iconNode = resolveSortIcon(Boolean(isActiveSort), sortOrder);
208
+ return (_jsx("th", { className: cx("solid-data-table-th text-left text-foreground whitespace-nowrap", props.frozen && ((_a = props.alignFrozen) !== null && _a !== void 0 ? _a : "left") === "left" && "solid-tree-sticky-cell solid-tree-sticky-cell-left", props.frozen && props.alignFrozen === "right" && "solid-tree-sticky-cell solid-tree-sticky-cell-right", props.headerClassName), style: __assign(__assign(__assign(__assign({}, props.style), props.headerStyle), { textAlign: normalizeTextAlign((_b = props.alignHeader) !== null && _b !== void 0 ? _b : props.align) }), getStickyStyles("column", index, "header")), children: _jsxs("button", { type: "button", className: cx("solid-table-header-button", isSortable ? "is-sortable" : undefined), onClick: function () {
209
+ if (!isSortable)
210
+ return;
211
+ var nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);
212
+ onSort === null || onSort === void 0 ? void 0 : onSort({
213
+ sortField: nextOrder === 0 ? undefined : props.field,
214
+ sortOrder: nextOrder,
196
215
  });
216
+ }, children: [renderHeaderNode(props.header), isSortable ? iconNode : null] }) }, "tree-header-".concat(index)));
217
+ })] }) }), _jsx("tbody", { children: visibleRows.length === 0 ? (_jsx("tr", { children: _jsx("td", { className: "px-3 py-10 text-center text-muted-foreground", colSpan: Math.max(columns.length + selectionColSpan, 1), children: emptyMessage || "No records found" }) })) : (visibleRows.map(function (_a, rowIndex) {
218
+ var _b, _c;
219
+ var node = _a.node, depth = _a.depth;
220
+ var key = String((_b = node.key) !== null && _b !== void 0 ? _b : rowIndex);
221
+ var isSelected = Boolean((_c = selectionKeys[key]) === null || _c === void 0 ? void 0 : _c.checked);
222
+ return (_jsxs("tr", { className: cx("solid-data-table-row solid-tree-table-row", isSelected && "is-selected"), onClick: function (event) {
223
+ var target = event.target;
224
+ if (target.closest("button,a,input,label,[data-no-row-click='true']"))
225
+ return;
226
+ onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick({ node: node, originalEvent: event });
227
+ }, children: [selectionMode === "checkbox" ? (_jsx("td", { className: "solid-data-table-td solid-data-table-selection-col solid-tree-sticky-cell solid-tree-sticky-cell-left", style: getStickyStyles("selection", null, "body"), children: _jsx("input", { type: "checkbox", checked: isSelected, ref: function (element) {
228
+ var _a;
229
+ if (element) {
230
+ element.indeterminate = Boolean((_a = selectionKeys[key]) === null || _a === void 0 ? void 0 : _a.partialChecked);
231
+ }
232
+ }, onChange: function (event) {
233
+ var next = __assign({}, selectionKeys);
234
+ updateSubtreeSelection(node, event.currentTarget.checked, next);
197
235
  var reconciled = reconcileSelection(value, next);
198
236
  onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange({
199
237
  value: reconciled,
200
238
  originalEvent: event,
201
239
  });
202
- }, "aria-label": "Select visible rows" }) })) : null, columns.map(function (column, index) {
203
- var _a, _b;
240
+ }, onClick: function (event) { return event.stopPropagation(); }, "aria-label": "Select row" }) })) : null, columns.map(function (column, columnIndex) {
241
+ var _a, _b, _c;
204
242
  var props = column.props;
205
- var isSortable = Boolean(props.sortable && props.field);
206
- var isActiveSort = isSortable && sortField === props.field;
207
- var iconNode = resolveSortIcon(Boolean(isActiveSort), sortOrder);
208
- return (_jsx("th", { className: cx("solid-data-table-th text-left text-foreground whitespace-nowrap", props.frozen && ((_a = props.alignFrozen) !== null && _a !== void 0 ? _a : "left") === "left" && "solid-tree-sticky-cell solid-tree-sticky-cell-left", props.frozen && props.alignFrozen === "right" && "solid-tree-sticky-cell solid-tree-sticky-cell-right", props.headerClassName), style: __assign(__assign(__assign(__assign({}, props.style), props.headerStyle), { textAlign: normalizeTextAlign((_b = props.alignHeader) !== null && _b !== void 0 ? _b : props.align) }), getStickyStyles("column", index, "header")), children: _jsxs("button", { type: "button", className: cx("solid-table-header-button", isSortable ? "is-sortable" : undefined), onClick: function () {
209
- if (!isSortable)
210
- return;
211
- var nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);
212
- onSort === null || onSort === void 0 ? void 0 : onSort({
213
- sortField: nextOrder === 0 ? undefined : props.field,
214
- sortOrder: nextOrder,
215
- });
216
- }, children: [renderHeaderNode(props.header), isSortable ? iconNode : null] }) }, "tree-header-".concat(index)));
217
- })] }) }), _jsx("tbody", { children: visibleRows.length === 0 ? (_jsx("tr", { children: _jsx("td", { className: "px-3 py-10 text-center text-muted-foreground", colSpan: Math.max(columns.length + selectionColSpan, 1), children: emptyMessage || "No records found" }) })) : (visibleRows.map(function (_a, rowIndex) {
218
- var _b, _c;
219
- var node = _a.node, depth = _a.depth;
220
- var key = String((_b = node.key) !== null && _b !== void 0 ? _b : rowIndex);
221
- var isSelected = Boolean((_c = selectionKeys[key]) === null || _c === void 0 ? void 0 : _c.checked);
222
- return (_jsxs("tr", { className: cx("solid-data-table-row solid-tree-table-row", isSelected && "is-selected"), onClick: function (event) {
223
- var target = event.target;
224
- if (target.closest("button,a,input,label,[data-no-row-click='true']"))
225
- return;
226
- onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick({ node: node, originalEvent: event });
227
- }, children: [selectionMode === "checkbox" ? (_jsx("td", { className: "solid-data-table-td solid-data-table-selection-col solid-tree-sticky-cell solid-tree-sticky-cell-left", style: getStickyStyles("selection", null, "body"), children: _jsx("input", { type: "checkbox", checked: isSelected, ref: function (element) {
228
- var _a;
229
- if (element) {
230
- element.indeterminate = Boolean((_a = selectionKeys[key]) === null || _a === void 0 ? void 0 : _a.partialChecked);
231
- }
232
- }, onChange: function (event) {
233
- var next = __assign({}, selectionKeys);
234
- updateSubtreeSelection(node, event.currentTarget.checked, next);
235
- var reconciled = reconcileSelection(value, next);
236
- onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange({
237
- value: reconciled,
238
- originalEvent: event,
239
- });
240
- }, onClick: function (event) { return event.stopPropagation(); }, "aria-label": "Select row" }) })) : null, columns.map(function (column, columnIndex) {
241
- var _a, _b, _c;
242
- var props = column.props;
243
- var canExpand = typeof props.expander === "function"
244
- ? props.expander(node)
245
- : Boolean(props.expander);
246
- var isExpanded = Boolean(expandedKeys[key]);
247
- var hasChildren = Boolean((_a = node.children) === null || _a === void 0 ? void 0 : _a.length);
248
- var showExpander = canExpand;
249
- var expanderDisabled = node.leaf === true;
250
- var content = props.body
251
- ? props.body(node, { depth: depth, rowIndex: rowIndex })
252
- : props.field
253
- ? (_b = node === null || node === void 0 ? void 0 : node.data) === null || _b === void 0 ? void 0 : _b[props.field]
254
- : null;
255
- var isExpanderColumn = showExpander && columnIndex === 0;
256
- return (_jsx("td", { className: cx("solid-data-table-td align-top text-foreground", props.frozen && ((_c = props.alignFrozen) !== null && _c !== void 0 ? _c : "left") === "left" && "solid-tree-sticky-cell solid-tree-sticky-cell-left", props.frozen && props.alignFrozen === "right" && "solid-tree-sticky-cell solid-tree-sticky-cell-right", props.className, props.bodyClassName), style: __assign(__assign(__assign({}, props.style), { textAlign: normalizeTextAlign(props.align) }), getStickyStyles("column", columnIndex, "body")), children: isExpanderColumn ? (_jsxs("div", { className: "solid-tree-cell", children: [_jsx("div", { className: "solid-tree-cell-indent", style: { width: "".concat(depth * 1.25, "rem") }, "aria-hidden": "true" }), _jsx("button", { type: "button", className: "solid-tree-expander", disabled: expanderDisabled, onClick: function (event) {
257
- event.stopPropagation();
258
- if (expanderDisabled)
259
- return;
260
- var nextExpanded = __assign({}, expandedKeys);
261
- if (nextExpanded[key]) {
262
- delete nextExpanded[key];
263
- }
264
- else {
265
- nextExpanded[key] = true;
266
- }
267
- onToggle === null || onToggle === void 0 ? void 0 : onToggle({ value: nextExpanded });
268
- if (!isExpanded) {
269
- onExpand === null || onExpand === void 0 ? void 0 : onExpand({ node: node });
270
- }
271
- }, "aria-label": isExpanded ? "Collapse row" : "Expand row", children: expanderDisabled ? (_jsx(Minus, { size: 14, "aria-hidden": "true" })) : (_jsx(ChevronRight, { size: 14, "aria-hidden": "true", className: cx("solid-tree-expander-icon", isExpanded && "is-expanded") })) }), _jsx("div", { className: "solid-tree-cell-content", children: content })] })) : (content) }, "tree-cell-".concat(key, "-").concat(columnIndex)));
272
- })] }, key));
273
- })) })] }), loading ? (_jsx("div", { className: "solid-tree-table-loading-overlay", "aria-live": "polite", "aria-busy": "true", children: _jsxs("div", { className: "solid-tree-table-loading-pill", children: [_jsx(Loader2, { size: 14, className: "animate-spin" }), _jsx("span", { children: "Loading tree\u2026" })] }) })) : null] }) }) }));
243
+ var canExpand = typeof props.expander === "function"
244
+ ? props.expander(node)
245
+ : Boolean(props.expander);
246
+ var isExpanded = Boolean(expandedKeys[key]);
247
+ var hasChildren = Boolean((_a = node.children) === null || _a === void 0 ? void 0 : _a.length);
248
+ var showExpander = canExpand;
249
+ var expanderDisabled = node.leaf === true;
250
+ var content = props.body
251
+ ? props.body(node, { depth: depth, rowIndex: rowIndex })
252
+ : props.field
253
+ ? (_b = node === null || node === void 0 ? void 0 : node.data) === null || _b === void 0 ? void 0 : _b[props.field]
254
+ : null;
255
+ var isExpanderColumn = showExpander && columnIndex === 0;
256
+ return (_jsx("td", { className: cx("solid-data-table-td align-top text-foreground", props.frozen && ((_c = props.alignFrozen) !== null && _c !== void 0 ? _c : "left") === "left" && "solid-tree-sticky-cell solid-tree-sticky-cell-left", props.frozen && props.alignFrozen === "right" && "solid-tree-sticky-cell solid-tree-sticky-cell-right", props.className, props.bodyClassName), style: __assign(__assign(__assign({}, props.style), { textAlign: normalizeTextAlign(props.align) }), getStickyStyles("column", columnIndex, "body")), children: isExpanderColumn ? (_jsxs("div", { className: "solid-tree-cell", children: [_jsx("div", { className: "solid-tree-cell-indent", style: { width: "".concat(depth * 1.25, "rem") }, "aria-hidden": "true" }), _jsx("button", { type: "button", className: "solid-tree-expander", disabled: expanderDisabled, onClick: function (event) {
257
+ event.stopPropagation();
258
+ if (expanderDisabled)
259
+ return;
260
+ var nextExpanded = __assign({}, expandedKeys);
261
+ if (nextExpanded[key]) {
262
+ delete nextExpanded[key];
263
+ }
264
+ else {
265
+ nextExpanded[key] = true;
266
+ }
267
+ onToggle === null || onToggle === void 0 ? void 0 : onToggle({ value: nextExpanded });
268
+ if (!isExpanded) {
269
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand({ node: node });
270
+ }
271
+ }, "aria-label": isExpanded ? "Collapse row" : "Expand row", children: expanderDisabled ? (_jsx(Minus, { size: 14, "aria-hidden": "true" })) : (_jsx(ChevronRight, { size: 14, "aria-hidden": "true", className: cx("solid-tree-expander-icon", isExpanded && "is-expanded") })) }), _jsx("div", { className: "solid-tree-cell-content", children: content })] })) : (content) }, "tree-cell-".concat(key, "-").concat(columnIndex)));
272
+ })] }, key));
273
+ })) })] }) }) }) }));
274
274
  }
275
275
  //# sourceMappingURL=SolidTreeTable.js.map