@solidxai/core-ui 0.1.9-beta.1 → 0.1.9-beta.10
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.
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +16 -15
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +3 -1
- package/dist/components/auth/ForgotPasswordThankYou.js +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -2
- package/dist/components/auth/SolidForgotPassword.js +1 -1
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +2 -2
- package/dist/components/auth/SolidInitialLoginOtp.js +8 -8
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +8 -8
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.tsx +1 -1
- package/dist/components/auth/SolidLogin.js +7 -8
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +1 -1
- package/dist/components/auth/SolidRegister.js +9 -9
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +2 -2
- package/dist/components/common/SocialMediaLogin.js +1 -1
- package/dist/components/common/SocialMediaLogin.js.map +1 -1
- package/dist/components/common/SocialMediaLogin.tsx +4 -4
- package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.js +1 -0
- package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.tsx +2 -1
- package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormFooter.js +14 -7
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +14 -6
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +7 -3
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +5 -2
- package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.js +10 -1
- package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.tsx +13 -1
- package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.js +7 -1
- package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.tsx +10 -1
- package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +14 -2
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.tsx +20 -2
- package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.js +9 -1
- package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.tsx +12 -1
- package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.js +23 -3
- package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.tsx +32 -3
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +15 -2
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +20 -4
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +21 -3
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +30 -3
- package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.js +2 -1
- package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.tsx +13 -1
- package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.js +9 -1
- package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.tsx +12 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -2
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +8 -2
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +14 -3
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +20 -3
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +66 -2
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +67 -2
- package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js +39 -0
- package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidUserBlockedStatusListWidget.tsx +50 -0
- package/dist/components/core/tree/SolidTreeTable.d.ts +1 -1
- package/dist/components/core/tree/SolidTreeTable.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeTable.js +78 -78
- package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
- package/dist/components/core/tree/SolidTreeTable.tsx +1 -10
- package/dist/components/core/users/CreateUser.css +27 -2
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +52 -24
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +46 -33
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +3 -0
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +4 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +2 -0
- package/dist/resources/shadcn-base.css +17 -9
- package/dist/routes/SolidRouteMetadataBoundary.d.ts +5 -0
- package/dist/routes/SolidRouteMetadataBoundary.d.ts.map +1 -0
- package/dist/routes/SolidRouteMetadataBoundary.js +72 -0
- package/dist/routes/SolidRouteMetadataBoundary.js.map +1 -0
- package/dist/routes/SolidRouteMetadataBoundary.tsx +77 -0
- package/dist/routes/pages/studio/StudioLandingPage.d.ts.map +1 -1
- package/dist/routes/pages/studio/StudioLandingPage.js +35 -7
- package/dist/routes/pages/studio/StudioLandingPage.js.map +1 -1
- package/dist/routes/pages/studio/StudioLandingPage.tsx +42 -6
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +47 -26
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +47 -26
- package/dist/routes/types.d.ts +7 -0
- package/dist/routes/types.d.ts.map +1 -1
- package/dist/routes/types.js.map +1 -1
- package/dist/routes/types.ts +8 -0
- package/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
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
|
|
|
@@ -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,
|
|
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,
|
|
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.
|
|
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:
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
|
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
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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
|