@solidxai/core-ui 0.1.3 → 0.1.4-beta.0

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 (127) hide show
  1. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  2. package/dist/components/auth/SolidInitialLoginOtp.js +0 -5
  3. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  4. package/dist/components/auth/SolidInitialLoginOtp.tsx +0 -5
  5. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  6. package/dist/components/auth/SolidLogin.js +7 -5
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +10 -8
  9. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  10. package/dist/components/common/GeneralSettings.js +48 -47
  11. package/dist/components/common/GeneralSettings.js.map +1 -1
  12. package/dist/components/common/GeneralSettings.tsx +41 -10
  13. package/dist/components/core/common/FilterComponent.js.map +1 -1
  14. package/dist/components/core/common/FilterComponent.tsx +1 -1
  15. package/dist/components/core/common/GroupingComponent.d.ts +54 -0
  16. package/dist/components/core/common/GroupingComponent.d.ts.map +1 -0
  17. package/dist/components/core/common/GroupingComponent.js +196 -0
  18. package/dist/components/core/common/GroupingComponent.js.map +1 -0
  19. package/dist/components/core/common/GroupingComponent.tsx +452 -0
  20. package/dist/components/core/common/SolidGlobalSearchElement.d.ts +18 -1
  21. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  22. package/dist/components/core/common/SolidGlobalSearchElement.js +146 -47
  23. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  24. package/dist/components/core/common/SolidGlobalSearchElement.tsx +191 -18
  25. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts +19 -0
  26. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.d.ts.map +1 -0
  27. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js +90 -0
  28. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.js.map +1 -0
  29. package/dist/components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler.tsx +59 -0
  30. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
  31. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +7 -3
  32. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  33. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +45 -40
  34. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts +2 -0
  35. package/dist/components/core/filter/SolidOneToManyFilterElement.d.ts.map +1 -0
  36. package/dist/components/core/filter/SolidOneToManyFilterElement.js +86 -0
  37. package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -0
  38. package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +62 -0
  39. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts +1 -0
  40. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
  41. package/dist/components/core/filter/SolidVarInputsFilterElement.js +4 -1
  42. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  43. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +10 -0
  44. package/dist/components/core/filter/fields/SolidRelationField.d.ts.map +1 -1
  45. package/dist/components/core/filter/fields/SolidRelationField.js +4 -2
  46. package/dist/components/core/filter/fields/SolidRelationField.js.map +1 -1
  47. package/dist/components/core/filter/fields/SolidRelationField.tsx +4 -2
  48. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts +4 -0
  49. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -0
  50. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +25 -0
  51. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -0
  52. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +60 -0
  53. package/dist/components/core/form/SolidFormFooter.js +4 -4
  54. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  55. package/dist/components/core/form/SolidFormFooter.tsx +4 -4
  56. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  57. package/dist/components/core/form/fields/SolidBooleanField.js +11 -8
  58. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  59. package/dist/components/core/form/fields/SolidBooleanField.tsx +20 -8
  60. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  61. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +26 -21
  62. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  63. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +27 -17
  64. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts +1 -0
  65. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js +51 -0
  67. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.js.map +1 -1
  68. package/dist/components/core/form/fields/relations/widgets/helpers/useRelationEntityHandler.ts +51 -0
  69. package/dist/components/core/kanban/SolidKanbanView.js +5 -5
  70. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  71. package/dist/components/core/kanban/SolidKanbanView.tsx +5 -5
  72. package/dist/components/core/list/SolidListView.d.ts +12 -7
  73. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  74. package/dist/components/core/list/SolidListView.js +138 -150
  75. package/dist/components/core/list/SolidListView.js.map +1 -1
  76. package/dist/components/core/list/SolidListView.tsx +84 -91
  77. package/dist/components/core/list/listViewRegistry.js.map +1 -1
  78. package/dist/components/core/list/listViewRegistry.ts +1 -2
  79. package/dist/components/core/tree/SolidTreeView.d.ts +38 -0
  80. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -0
  81. package/dist/components/core/tree/SolidTreeView.js +1170 -0
  82. package/dist/components/core/tree/SolidTreeView.js.map +1 -0
  83. package/dist/components/core/tree/SolidTreeView.tsx +1603 -0
  84. package/dist/components/core/tree/treeViewRegistry.d.ts +7 -0
  85. package/dist/components/core/tree/treeViewRegistry.d.ts.map +1 -0
  86. package/dist/components/core/tree/treeViewRegistry.js +17 -0
  87. package/dist/components/core/tree/treeViewRegistry.js.map +1 -0
  88. package/dist/components/core/tree/treeViewRegistry.ts +23 -0
  89. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  90. package/dist/components/core/users/CreateUser.js +19 -6
  91. package/dist/components/core/users/CreateUser.js.map +1 -1
  92. package/dist/components/core/users/CreateUser.tsx +39 -0
  93. package/dist/helpers/helpers.d.ts +2 -0
  94. package/dist/helpers/helpers.d.ts.map +1 -1
  95. package/dist/helpers/helpers.js +3 -1
  96. package/dist/helpers/helpers.js.map +1 -1
  97. package/dist/helpers/helpers.ts +4 -1
  98. package/dist/helpers/registry.d.ts.map +1 -1
  99. package/dist/helpers/registry.js +2 -0
  100. package/dist/helpers/registry.js.map +1 -1
  101. package/dist/helpers/registry.ts +3 -1
  102. package/dist/index.d.ts +3 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +2 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/index.ts +6 -1
  107. package/dist/resources/globals.css +18 -4
  108. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  109. package/dist/routes/pages/admin/core/ListPage.js +1 -1
  110. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  111. package/dist/routes/pages/admin/core/ListPage.tsx +2 -1
  112. package/dist/routes/pages/admin/core/TreePage.d.ts +2 -0
  113. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -0
  114. package/dist/routes/pages/admin/core/TreePage.js +37 -0
  115. package/dist/routes/pages/admin/core/TreePage.js.map +1 -0
  116. package/dist/routes/pages/admin/core/TreePage.tsx +30 -0
  117. package/dist/routes/solidRoutes.d.ts.map +1 -1
  118. package/dist/routes/solidRoutes.js +2 -0
  119. package/dist/routes/solidRoutes.js.map +1 -1
  120. package/dist/routes/solidRoutes.tsx +3 -1
  121. package/dist/routes/types.d.ts +1 -1
  122. package/dist/routes/types.d.ts.map +1 -1
  123. package/dist/routes/types.js.map +1 -1
  124. package/dist/routes/types.ts +1 -0
  125. package/dist/types/index.d.ts +8 -2
  126. package/dist/types/solid-core.d.ts +40 -0
  127. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ import { SolidTreeViewHandle } from "../tree/SolidTreeView";
2
+ export declare const registerTree: (treeId: string, handle: SolidTreeViewHandle) => void;
3
+ export declare const unregisterTree: (treeId: string) => void;
4
+ export declare const getTree: (treeId: string) => SolidTreeViewHandle | undefined;
5
+ export declare const hasTree: (treeId: string) => boolean;
6
+ export declare const getRegisteredTreeIds: () => string[];
7
+ //# sourceMappingURL=treeViewRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeViewRegistry.d.ts","sourceRoot":"","sources":["../../../../src/components/core/tree/treeViewRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D,eAAO,MAAM,YAAY,WAAY,MAAM,UAAU,mBAAmB,KAAG,IAE1E,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,MAAM,KAAG,IAE/C,CAAC;AAEF,eAAO,MAAM,OAAO,WAAY,MAAM,KAAG,mBAAmB,GAAG,SAE9D,CAAC;AAEF,eAAO,MAAM,OAAO,WAAY,MAAM,KAAG,OAExC,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,MAAM,EAE7C,CAAC"}
@@ -0,0 +1,17 @@
1
+ var treeViewRegistry = new Map();
2
+ export var registerTree = function (treeId, handle) {
3
+ treeViewRegistry.set(treeId, handle);
4
+ };
5
+ export var unregisterTree = function (treeId) {
6
+ treeViewRegistry.delete(treeId);
7
+ };
8
+ export var getTree = function (treeId) {
9
+ return treeViewRegistry.get(treeId);
10
+ };
11
+ export var hasTree = function (treeId) {
12
+ return treeViewRegistry.has(treeId);
13
+ };
14
+ export var getRegisteredTreeIds = function () {
15
+ return Array.from(treeViewRegistry.keys());
16
+ };
17
+ //# sourceMappingURL=treeViewRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeViewRegistry.js","sourceRoot":"","sources":["../../../../src/components/core/tree/treeViewRegistry.ts"],"names":[],"mappings":"AAEA,IAAM,gBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;AAEhE,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,MAAc,EAAE,MAA2B;IACtE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,MAAc;IAC3C,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,MAAc;IACpC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,MAAc;IACpC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,oBAAoB,GAAG;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC","sourcesContent":["import { SolidTreeViewHandle } from \"../tree/SolidTreeView\";\n\nconst treeViewRegistry = new Map<string, SolidTreeViewHandle>();\n\nexport const registerTree = (treeId: string, handle: SolidTreeViewHandle): void => {\n treeViewRegistry.set(treeId, handle);\n};\n\nexport const unregisterTree = (treeId: string): void => {\n treeViewRegistry.delete(treeId);\n};\n\nexport const getTree = (treeId: string): SolidTreeViewHandle | undefined => {\n return treeViewRegistry.get(treeId);\n};\n\nexport const hasTree = (treeId: string): boolean => {\n return treeViewRegistry.has(treeId);\n};\n\nexport const getRegisteredTreeIds = (): string[] => {\n return Array.from(treeViewRegistry.keys());\n};\n"]}
@@ -0,0 +1,23 @@
1
+ import { SolidTreeViewHandle } from "../tree/SolidTreeView";
2
+
3
+ const treeViewRegistry = new Map<string, SolidTreeViewHandle>();
4
+
5
+ export const registerTree = (treeId: string, handle: SolidTreeViewHandle): void => {
6
+ treeViewRegistry.set(treeId, handle);
7
+ };
8
+
9
+ export const unregisterTree = (treeId: string): void => {
10
+ treeViewRegistry.delete(treeId);
11
+ };
12
+
13
+ export const getTree = (treeId: string): SolidTreeViewHandle | undefined => {
14
+ return treeViewRegistry.get(treeId);
15
+ };
16
+
17
+ export const hasTree = (treeId: string): boolean => {
18
+ return treeViewRegistry.has(treeId);
19
+ };
20
+
21
+ export const getRegisteredTreeIds = (): string[] => {
22
+ return Array.from(treeViewRegistry.keys());
23
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"CreateUser.d.ts","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":"AAiCA,QAAA,MAAM,UAAU,qBAAsB,GAAG,4CA+axC,CAAC;AAGF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"CreateUser.d.ts","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":"AAiCA,QAAA,MAAM,UAAU,qBAAsB,GAAG,4CAsdxC,CAAC;AAGF,eAAe,UAAU,CAAC"}
@@ -65,15 +65,15 @@ import { classNames } from "primereact/utils";
65
65
  import { useEffect, useRef, useState } from "react";
66
66
  import * as Yup from "yup";
67
67
  var CreateUser = function (_a) {
68
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
68
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
69
69
  var data = _a.data, params = _a.params;
70
70
  var toast = useRef(null);
71
71
  var pathname = usePathname();
72
72
  var router = useRouter();
73
- var _r = useState([]), selectedRoles = _r[0], setSelectedRoles = _r[1];
74
- var _s = useRegisterPrivateMutation(), registerPrivate = _s[0], _t = _s[1], isLoading = _t.isLoading, userCreateError = _t.error, isSuccess = _t.isSuccess, user = _t.data;
75
- var _u = useUpdateUserMutation(), updateUser = _u[0], _v = _u[1], isuserUpdating = _v.isLoading, isUpdateuserSuceess = _v.isSuccess, isuserUpdateError = _v.isError, userUpdateError = _v.error, updateduser = _v.data;
76
- var _w = useDeleteUserMutation(), deleteUser = _w[0], _x = _w[1], isUserDeleted = _x.isLoading, isDeleteUserSuceess = _x.isSuccess, isUserDeleteError = _x.isError, UserDeleteError = _x.error, DeletedUser = _x.data;
73
+ var _s = useState([]), selectedRoles = _s[0], setSelectedRoles = _s[1];
74
+ var _t = useRegisterPrivateMutation(), registerPrivate = _t[0], _u = _t[1], isLoading = _u.isLoading, userCreateError = _u.error, isSuccess = _u.isSuccess, user = _u.data;
75
+ var _v = useUpdateUserMutation(), updateUser = _v[0], _w = _v[1], isuserUpdating = _w.isLoading, isUpdateuserSuceess = _w.isSuccess, isuserUpdateError = _w.isError, userUpdateError = _w.error, updateduser = _w.data;
76
+ var _x = useDeleteUserMutation(), deleteUser = _x[0], _y = _x[1], isUserDeleted = _y.isLoading, isDeleteUserSuceess = _y.isSuccess, isUserDeleteError = _y.isError, UserDeleteError = _y.error, DeletedUser = _y.data;
77
77
  var rolesData = useGetrolesQuery("").data;
78
78
  // const [
79
79
  // createrolebulk,
@@ -104,6 +104,7 @@ var CreateUser = function (_a) {
104
104
  mobile: data ? data.mobile : "",
105
105
  password: "",
106
106
  confirmPassword: "",
107
+ failedLoginAttempts: data ? data.failedLoginAttempts : 0,
107
108
  };
108
109
  var validationSchema = Yup.object({
109
110
  fullName: Yup.string().required(),
@@ -135,6 +136,12 @@ var CreateUser = function (_a) {
135
136
  otherwise: function (schema) { return schema.notRequired().nullable(); },
136
137
  }),
137
138
  mobile: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED('Mobile')),
139
+ failedLoginAttempts: Yup.number()
140
+ .typeError("Failed Login Attempts must be a number")
141
+ .nullable()
142
+ .transform(function (value, originalValue) {
143
+ return originalValue === "" ? null : value;
144
+ }),
138
145
  });
139
146
  var isFormFieldValid = function (formik, fieldName) {
140
147
  return formik.touched[fieldName] && formik.errors[fieldName];
@@ -207,6 +214,7 @@ var CreateUser = function (_a) {
207
214
  email: values.email,
208
215
  mobile: values.mobile,
209
216
  roles: selectedRoles,
217
+ failedLoginAttempts: values.failedLoginAttempts,
210
218
  };
211
219
  if (values.password) {
212
220
  userData.password = values.password;
@@ -221,6 +229,7 @@ var CreateUser = function (_a) {
221
229
  mobile: values.mobile,
222
230
  password: values.password,
223
231
  roles: selectedRoles,
232
+ failedLoginAttempts: values.failedLoginAttempts,
224
233
  };
225
234
  registerPrivate(userData);
226
235
  }
@@ -244,7 +253,11 @@ var CreateUser = function (_a) {
244
253
  "p-invalid": formik.touched.email && formik.errors.email,
245
254
  }) }), isFormFieldValid(formik, "email") && (_jsx(Message, { severity: "error", text: (_g = (_f = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _f === void 0 ? void 0 : _f.email) === null || _g === void 0 ? void 0 : _g.toString() }))] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-1 mt-4", children: [_jsx("label", { htmlFor: "mobile", className: "form-field-label", children: "Mobile" }), _jsx(InputText, { type: "text", id: "mobile", name: "mobile", autoComplete: "off", onChange: formik.handleChange, value: formik.values.mobile, className: classNames("", {
246
255
  "p-invalid": formik.touched.mobile && formik.errors.mobile,
247
- }) }), isFormFieldValid(formik, "mobile ") && (_jsx(Message, { severity: "error", text: (_j = (_h = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _h === void 0 ? void 0 : _h.mobile) === null || _j === void 0 ? void 0 : _j.toString() }))] }), params.id === "new" && _jsxs(_Fragment, { children: [_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 py-4", children: [_jsx("label", { htmlFor: "Password", className: "form-field-label", children: "Password" }), _jsx(Password, { id: "password", name: "password", autoComplete: "off", "aria-autocomplete": "none", value: formik.values.password, onChange: formik.handleChange, onBlur: formik.handleBlur, toggleMask: true, invalid: isFormFieldValid(formik, "password"), inputClassName: "w-full", feedback: false }), isFormFieldValid(formik, "password") && (_jsx(Message, { severity: "error", text: (_l = (_k = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _k === void 0 ? void 0 : _k.password) === null || _l === void 0 ? void 0 : _l.toString() }))] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 pb-4 md:pb-0 md:my-4", children: [_jsx("label", { htmlFor: "Confirm Password", className: "form-field-label", children: "Confirm Password" }), _jsx(Password, { id: "confirmPassword", name: "confirmPassword", autoComplete: "off", "aria-autocomplete": "none", value: formik.values.confirmPassword, onChange: formik.handleChange, onBlur: formik.handleBlur, toggleMask: true, invalid: isFormFieldValid(formik, "confirmPassword"), inputClassName: "w-full", feedback: false }), isFormFieldValid(formik, "confirmPassword") && (_jsx(Message, { severity: "error", text: (_o = (_m = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _m === void 0 ? void 0 : _m.confirmPassword) === null || _o === void 0 ? void 0 : _o.toString() }))] })] })] }) }), _jsx(Panel, { toggleable: true, header: "Roles", className: "solid-column-panel mt-5", children: _jsx("div", { className: "formgrid grid mt-4", children: ((_p = rolesData === null || rolesData === void 0 ? void 0 : rolesData.data) === null || _p === void 0 ? void 0 : _p.records) && ((_q = rolesData === null || rolesData === void 0 ? void 0 : rolesData.data) === null || _q === void 0 ? void 0 : _q.records.map(function (role, i) { return (_jsxs("div", { className: "field col-6 flex gap-2 ".concat(i >= 2 ? 'mt-3' : ''), children: [_jsx(Checkbox, { inputId: role.name, checked: selectedRoles.includes(role.name), onChange: function () { return handleCheckboxChange(role.name); } }), _jsxs("label", { htmlFor: role.name, children: [" ", role.name] })] }, role.name)); })) }) })] }) }) })] }) })] }));
256
+ }) }), isFormFieldValid(formik, "mobile ") && (_jsx(Message, { severity: "error", text: (_j = (_h = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _h === void 0 ? void 0 : _h.mobile) === null || _j === void 0 ? void 0 : _j.toString() }))] }), params.id === "new" && _jsxs(_Fragment, { children: [_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 py-4", children: [_jsx("label", { htmlFor: "Password", className: "form-field-label", children: "Password" }), _jsx(Password, { id: "password", name: "password", autoComplete: "off", "aria-autocomplete": "none", value: formik.values.password, onChange: formik.handleChange, onBlur: formik.handleBlur, toggleMask: true, invalid: isFormFieldValid(formik, "password"), inputClassName: "w-full", feedback: false }), isFormFieldValid(formik, "password") && (_jsx(Message, { severity: "error", text: (_l = (_k = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _k === void 0 ? void 0 : _k.password) === null || _l === void 0 ? void 0 : _l.toString() }))] }), _jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-2 pb-4 md:pb-0 md:my-4", children: [_jsx("label", { htmlFor: "Confirm Password", className: "form-field-label", children: "Confirm Password" }), _jsx(Password, { id: "confirmPassword", name: "confirmPassword", autoComplete: "off", "aria-autocomplete": "none", value: formik.values.confirmPassword, onChange: formik.handleChange, onBlur: formik.handleBlur, toggleMask: true, invalid: isFormFieldValid(formik, "confirmPassword"), inputClassName: "w-full", feedback: false }), isFormFieldValid(formik, "confirmPassword") && (_jsx(Message, { severity: "error", text: (_o = (_m = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _m === void 0 ? void 0 : _m.confirmPassword) === null || _o === void 0 ? void 0 : _o.toString() }))] })] }), params.id !== "new" && (_jsxs("div", { className: "field col-12 md:col-6 flex flex-column gap-1 mt-4", children: [_jsx("label", { htmlFor: "failedLoginAttempts", className: "form-field-label", children: "Failed Login Attempts" }), _jsx(InputText, { type: "number", id: "failedLoginAttempts", name: "failedLoginAttempts", autoComplete: "off", onChange: formik.handleChange, value: formik.values.failedLoginAttempts, className: classNames("", {
257
+ "p-invalid": formik.touched.failedLoginAttempts &&
258
+ formik.errors.failedLoginAttempts,
259
+ }) }), formik.touched.failedLoginAttempts &&
260
+ formik.errors.failedLoginAttempts && (_jsx(Message, { severity: "error", text: (_p = formik.errors.failedLoginAttempts) === null || _p === void 0 ? void 0 : _p.toString() })), _jsx("small", { className: "text-color-secondary", children: "Your account has been locked due to repeated unsuccessful login attempts. Please contact your system admin." })] }))] }) }), _jsx(Panel, { toggleable: true, header: "Roles", className: "solid-column-panel mt-5", children: _jsx("div", { className: "formgrid grid mt-4", children: ((_q = rolesData === null || rolesData === void 0 ? void 0 : rolesData.data) === null || _q === void 0 ? void 0 : _q.records) && ((_r = rolesData === null || rolesData === void 0 ? void 0 : rolesData.data) === null || _r === void 0 ? void 0 : _r.records.map(function (role, i) { return (_jsxs("div", { className: "field col-6 flex gap-2 ".concat(i >= 2 ? 'mt-3' : ''), children: [_jsx(Checkbox, { inputId: role.name, checked: selectedRoles.includes(role.name), onChange: function () { return handleCheckboxChange(role.name); } }), _jsxs("label", { htmlFor: role.name, children: [" ", role.name] })] }, role.name)); })) }) })] }) }) })] }) })] }));
248
261
  };
249
262
  export default CreateUser;
250
263
  //# sourceMappingURL=CreateUser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateUser.js","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { BackButton } from \"../../../components/common/BackButton\";\nimport { CancelButton } from \"../../../components/common/CancelButton\";\nimport { SolidBreadcrumb } from \"../../../components/common/SolidBreadcrumb\";\nimport { SolidFormHeader } from \"../../../components/common/SolidFormHeader\";\nimport { SolidFormStepper } from \"../../../components/common/SolidFormStepper\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { useRegisterPrivateMutation, useUpdateUserMutation } from \"../../../redux/api/authApi\";\nimport { useGetrolesQuery } from \"../../../redux/api/roleApi\";\nimport { useDeleteUserMutation } from \"../../../redux/api/userApi\";\nimport { FetchBaseQueryError } from \"@reduxjs/toolkit/dist/query\";\nimport { useFormik } from \"formik\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { Button } from \"primereact/button\";\nimport { Checkbox } from \"primereact/checkbox\";\nimport { Divider } from \"primereact/divider\";\nimport { InputText } from \"primereact/inputtext\";\nimport { Message } from \"primereact/message\";\nimport { Panel } from \"primereact/panel\";\nimport { Password } from \"primereact/password\";\nimport { Toast } from \"primereact/toast\";\nimport { classNames } from \"primereact/utils\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as Yup from \"yup\";\n\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\nconst CreateUser = ({ data, params }: any) => {\n\n const toast = useRef<Toast>(null);\n const pathname = usePathname();\n const router = useRouter();\n const [selectedRoles, setSelectedRoles] = useState<string[]>([]);\n\n const [registerPrivate, { isLoading, error: userCreateError, isSuccess, data: user }] = useRegisterPrivateMutation();\n const [\n updateUser,\n {\n isLoading: isuserUpdating,\n isSuccess: isUpdateuserSuceess,\n isError: isuserUpdateError,\n error: userUpdateError,\n data: updateduser,\n },\n ] = useUpdateUserMutation();\n\n const [deleteUser, {\n isLoading: isUserDeleted,\n isSuccess: isDeleteUserSuceess,\n isError: isUserDeleteError,\n error: UserDeleteError,\n data: DeletedUser,\n },] = useDeleteUserMutation();\n\n const { data: rolesData } = useGetrolesQuery(\"\");\n // const [\n // createrolebulk,\n // { isLoading, isSuccess, isError, error, data: roles },\n // ] = useCreateuserrolebulkMutation();\n\n useEffect(() => {\n if (data && data.roles) {\n const userRoles = data.roles.map((role: any) => role.name);\n setSelectedRoles(userRoles);\n }\n }, [data]);\n\n const handleCheckboxChange = (roleName: string) => {\n let updatedRoles;\n if (selectedRoles.includes(roleName)) {\n updatedRoles = selectedRoles.filter((name) => name !== roleName);\n } else {\n updatedRoles = [...selectedRoles, roleName];\n }\n setSelectedRoles(updatedRoles);\n formik.setFieldTouched('roles', true); // fake \"touched\"\n formik.setFieldValue('roles', updatedRoles);\n };\n\n const initialValues = {\n fullName: data ? data.fullName : \"\",\n username: data ? data.username : \"\",\n email: data ? data.email : \"\",\n mobile: data ? data.mobile : \"\",\n password: \"\",\n confirmPassword: \"\",\n };\n\n const validationSchema = Yup.object({\n fullName: Yup.string().required(),\n username: Yup.string()\n .required('Username is required'), // Must be provided\n // .min(3, 'Username must be at least 3 characters long') // Minimum length\n // .max(20, 'Username cannot be longer than 20 characters') // Maximum length\n // .matches(\n // /^[a-zA-Z0-9_.-]*$/,\n // 'Username can only contain letters, numbers, underscores, periods, and hyphens'\n // ) // Allowed characters\n // .matches(\n // /^[a-zA-Z]/,\n // 'Username must start with a letter'\n // ),\n email: Yup\n .string()\n .email(ERROR_MESSAGES.FIELD_INVALID('email address'))\n .required(ERROR_MESSAGES.FIELD_REUQIRED('Email')),\n password: Yup.string().min(6, ERROR_MESSAGES.PASSWORD_CHARACTER(6)).nullable(),\n confirmPassword: Yup.string()\n .when('password', {\n is: (val: any) => !!val, // only validate if password is filled\n then: (schema) =>\n schema\n .oneOf([Yup.ref('password')], ERROR_MESSAGES.FIELD_MUST_MATCH('Password'))\n .nullable(),\n otherwise: (schema) => schema.notRequired().nullable(),\n }),\n mobile: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED('Mobile')),\n });\n\n\n const isFormFieldValid = (formik: any, fieldName: string) => {\n return formik.touched[fieldName] && formik.errors[fieldName];\n };\n\n\n const showError = async (submit?: boolean) => {\n const errors = await formik.validateForm();\n const errorMessages = Object.values(errors);\n\n if (errorMessages.length > 0 && toast.current) {\n toast.current.show({\n severity: \"error\",\n summary: ERROR_MESSAGES.SEND_REPORT,\n // sticky: true,\n life: 3000,\n //@ts-ignore\n content: (props) => (\n <div\n className=\"flex flex-column align-items-left\"\n style={{ flex: \"1\" }}\n >\n {errorMessages.map((m: any, index: number) => (\n <div className=\"flex align-items-center gap-2\" key={index}>\n <span className=\"font-bold text-900\">{m}</span>\n </div>\n ))}\n </div>\n ),\n });\n }\n };\n\n function isFetchBaseQueryErrorWithErrorResponse(error: any): error is FetchBaseQueryError & { data: ErrorResponseData } {\n return error && typeof error === 'object' && 'data' in error && 'message' in error.data;\n }\n\n useEffect(() => {\n const handleError = (errorToast: any) => {\n let errorMessage: any = [ERROR_MESSAGES.ERROR_OCCURED];\n\n if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {\n errorMessage = errorToast.data.message;\n } else {\n errorMessage = [ERROR_MESSAGES.SOMETHING_WRONG];\n }\n\n toast.current?.show({\n severity: 'error',\n summary: ERROR_MESSAGES.ERROR,\n detail: errorMessage,\n sticky: true,\n //@ts-ignore\n content: (props) => (\n <div className=\"flex flex-column align-items-left\" style={{ flex: \"1\" }}>\n {Array.isArray(errorMessage) ? (\n errorMessage.map((message, index) => (\n <div className=\"flex align-items-center gap-2\" key={index}>\n <span className=\"font-bold text-900\">{message.trim()}</span>\n </div>\n ))\n ) : (\n <div className=\"flex align-items-center gap-2\">\n <span className=\"font-bold text-900\">{errorMessage?.trim()}</span>\n </div>\n )}\n </div>\n ),\n });\n };\n\n // Check and handle errors from each API operation\n if (userCreateError) {\n handleError(userCreateError)\n }\n if (userUpdateError) {\n handleError(userUpdateError)\n }\n\n }, [\n userCreateError, userUpdateError\n ]);\n\n\n const formik = useFormik({\n initialValues,\n validationSchema,\n enableReinitialize: true,\n onSubmit: async (values) => {\n if (data) {\n const userData: any = {\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n roles: selectedRoles,\n };\n if (values.password) {\n userData.password = values.password;\n }\n updateUser({ id: data.id, data: userData });\n\n } else {\n const userData = {\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n password: values.password,\n roles: selectedRoles,\n };\n\n registerPrivate(userData)\n }\n },\n });\n\n useEffect(() => {\n if (isSuccess == true || isDeleteUserSuceess === true || isUpdateuserSuceess === true) {\n router.back();\n }\n }, [isSuccess, isDeleteUserSuceess, isUpdateuserSuceess])\n\n return (\n <div className=\"solid-form-wrapper\">\n <Toast ref={toast} />\n <div className=\"solid-form-section\" >\n <form onSubmit={formik.handleSubmit}>\n <div className=\"solid-form-header\">\n {params.id === \"new\" ? (\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title\">Create User</div>\n </div>\n <div className=\"gap-3 flex\">\n {formik.dirty &&\n <Button label=\"Save\" size=\"small\" type=\"submit\" />\n }\n <CancelButton />\n </div>\n </>\n ) : (\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title\">Update User</div>\n </div>\n <div>\n <div className=\"gap-3 flex\">\n {formik.dirty &&\n <Button label=\"Save\" size=\"small\" type=\"submit\" />\n }\n {data &&\n <Button outlined label=\"Delete\" size=\"small\" severity=\"danger\" type=\"button\" onClick={() => deleteUser(data.id)} />\n }\n <CancelButton />\n </div>\n </div>\n </>\n )}\n </div>\n <SolidFormHeader />\n {/* <div className=\"solid-form-stepper\">\n <SolidFormStepper />\n </div> */}\n <div className=\"px-4 py-3 md:p-4 solid-form-content\">\n <div className=\"grid\">\n <div className=\"col-12 lg:col-10 xl:col-8 mx-auto\">\n {/* <p className=\"form-wrapper-heading text-base\">Basic Info</p> */}\n <Panel header=\"Basic Info\" className=\"solid-column-panel\">\n <div className=\"grid formgrid mt-3\">\n <div className=\"field col-12 md:col-6 flex flex-column gap-2\">\n <label htmlFor=\"fullName\" className=\"form-field-label\">\n Full Name\n </label>\n <InputText\n type=\"text\"\n id=\"fullName\"\n name=\"fullName\"\n autoComplete={\"off\"}\n onChange={formik.handleChange}\n value={formik.values.fullName}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.fullName && formik.errors.fullName,\n })}\n />\n {isFormFieldValid(formik, \"fullName\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.fullName?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3 md:mt-3\">\n <label htmlFor=\"username\" className=\"form-field-label\">\n Username\n </label>\n <InputText\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete={\"off\"}\n disabled={data ? true : false}\n onChange={formik.handleChange}\n value={formik.values.username}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.username && formik.errors.username,\n })}\n />\n {isFormFieldValid(formik, \"username\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.username?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-1 mt-4\">\n <label htmlFor=\"email\" className=\"form-field-label\">\n Email\n </label>\n <InputText\n type=\"text\"\n id=\"email\"\n name=\"email\"\n autoComplete={\"off\"}\n disabled={data ? true : false}\n onChange={formik.handleChange}\n value={formik.values.email}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.email && formik.errors.email,\n })}\n />\n {isFormFieldValid(formik, \"email\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.email?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-1 mt-4\">\n <label htmlFor=\"mobile\" className=\"form-field-label\">\n Mobile\n </label>\n <InputText\n type=\"text\"\n id=\"mobile\"\n name=\"mobile\"\n autoComplete={\"off\"}\n onChange={formik.handleChange}\n value={formik.values.mobile}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.mobile && formik.errors.mobile,\n })}\n />\n {isFormFieldValid(formik, \"mobile \") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.mobile?.toString()}\n />\n )}\n </div>\n {params.id === \"new\" && <>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 py-4\">\n <label htmlFor=\"Password\" className=\"form-field-label\">\n Password\n </label>\n <Password\n id=\"password\"\n name=\"password\"\n autoComplete=\"off\"\n aria-autocomplete=\"none\"\n value={formik.values.password}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n toggleMask\n invalid={isFormFieldValid(formik, \"password\")}\n inputClassName=\"w-full\"\n feedback={false}\n />\n {isFormFieldValid(formik, \"password\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.password?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 pb-4 md:pb-0 md:my-4\">\n <label htmlFor=\"Confirm Password\" className=\"form-field-label\">\n Confirm Password\n </label>\n <Password\n id=\"confirmPassword\"\n name=\"confirmPassword\"\n autoComplete=\"off\"\n aria-autocomplete=\"none\"\n value={formik.values.confirmPassword}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n toggleMask\n invalid={isFormFieldValid(formik, \"confirmPassword\")}\n inputClassName=\"w-full\"\n feedback={false}\n />\n {isFormFieldValid(formik, \"confirmPassword\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.confirmPassword?.toString()}\n />\n )}\n </div>\n </>}\n </div>\n </Panel>\n\n {/* <Divider /> */}\n {/* <p className=\"form-wrapper-heading text-base\" style={{ fontSize: 16 }}>Roles</p> */}\n\n <Panel toggleable header=\"Roles\" className=\"solid-column-panel mt-5\">\n <div className=\"formgrid grid mt-4\">\n {rolesData?.data?.records && rolesData?.data?.records.map((role: any, i: number) => (\n <div key={role.name} className={`field col-6 flex gap-2 ${i >= 2 ? 'mt-3' : ''}`}>\n <Checkbox\n inputId={role.name}\n checked={selectedRoles.includes(role.name)}\n onChange={() => handleCheckboxChange(role.name)}\n />\n <label htmlFor={role.name}> {role.name}</label>\n </div>\n ))}\n </div>\n </Panel>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n );\n};\n\n\nexport default CreateUser;\n"]}
1
+ {"version":3,"file":"CreateUser.js","sourceRoot":"","sources":["../../../../src/components/core/users/CreateUser.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { BackButton } from \"../../../components/common/BackButton\";\nimport { CancelButton } from \"../../../components/common/CancelButton\";\nimport { SolidBreadcrumb } from \"../../../components/common/SolidBreadcrumb\";\nimport { SolidFormHeader } from \"../../../components/common/SolidFormHeader\";\nimport { SolidFormStepper } from \"../../../components/common/SolidFormStepper\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { useRegisterPrivateMutation, useUpdateUserMutation } from \"../../../redux/api/authApi\";\nimport { useGetrolesQuery } from \"../../../redux/api/roleApi\";\nimport { useDeleteUserMutation } from \"../../../redux/api/userApi\";\nimport { FetchBaseQueryError } from \"@reduxjs/toolkit/dist/query\";\nimport { useFormik } from \"formik\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { Button } from \"primereact/button\";\nimport { Checkbox } from \"primereact/checkbox\";\nimport { Divider } from \"primereact/divider\";\nimport { InputText } from \"primereact/inputtext\";\nimport { Message } from \"primereact/message\";\nimport { Panel } from \"primereact/panel\";\nimport { Password } from \"primereact/password\";\nimport { Toast } from \"primereact/toast\";\nimport { classNames } from \"primereact/utils\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as Yup from \"yup\";\n\n\ninterface ErrorResponseData {\n message: string;\n statusCode: number;\n error: string;\n}\n\nconst CreateUser = ({ data, params }: any) => {\n\n const toast = useRef<Toast>(null);\n const pathname = usePathname();\n const router = useRouter();\n const [selectedRoles, setSelectedRoles] = useState<string[]>([]);\n\n const [registerPrivate, { isLoading, error: userCreateError, isSuccess, data: user }] = useRegisterPrivateMutation();\n const [\n updateUser,\n {\n isLoading: isuserUpdating,\n isSuccess: isUpdateuserSuceess,\n isError: isuserUpdateError,\n error: userUpdateError,\n data: updateduser,\n },\n ] = useUpdateUserMutation();\n\n const [deleteUser, {\n isLoading: isUserDeleted,\n isSuccess: isDeleteUserSuceess,\n isError: isUserDeleteError,\n error: UserDeleteError,\n data: DeletedUser,\n },] = useDeleteUserMutation();\n\n const { data: rolesData } = useGetrolesQuery(\"\");\n // const [\n // createrolebulk,\n // { isLoading, isSuccess, isError, error, data: roles },\n // ] = useCreateuserrolebulkMutation();\n\n useEffect(() => {\n if (data && data.roles) {\n const userRoles = data.roles.map((role: any) => role.name);\n setSelectedRoles(userRoles);\n }\n }, [data]);\n\n const handleCheckboxChange = (roleName: string) => {\n let updatedRoles;\n if (selectedRoles.includes(roleName)) {\n updatedRoles = selectedRoles.filter((name) => name !== roleName);\n } else {\n updatedRoles = [...selectedRoles, roleName];\n }\n setSelectedRoles(updatedRoles);\n formik.setFieldTouched('roles', true); // fake \"touched\"\n formik.setFieldValue('roles', updatedRoles);\n };\n\n const initialValues = {\n fullName: data ? data.fullName : \"\",\n username: data ? data.username : \"\",\n email: data ? data.email : \"\",\n mobile: data ? data.mobile : \"\",\n password: \"\",\n confirmPassword: \"\",\n failedLoginAttempts: data ? data.failedLoginAttempts : 0,\n };\n\n const validationSchema = Yup.object({\n fullName: Yup.string().required(),\n username: Yup.string()\n .required('Username is required'), // Must be provided\n // .min(3, 'Username must be at least 3 characters long') // Minimum length\n // .max(20, 'Username cannot be longer than 20 characters') // Maximum length\n // .matches(\n // /^[a-zA-Z0-9_.-]*$/,\n // 'Username can only contain letters, numbers, underscores, periods, and hyphens'\n // ) // Allowed characters\n // .matches(\n // /^[a-zA-Z]/,\n // 'Username must start with a letter'\n // ),\n email: Yup\n .string()\n .email(ERROR_MESSAGES.FIELD_INVALID('email address'))\n .required(ERROR_MESSAGES.FIELD_REUQIRED('Email')),\n password: Yup.string().min(6, ERROR_MESSAGES.PASSWORD_CHARACTER(6)).nullable(),\n confirmPassword: Yup.string()\n .when('password', {\n is: (val: any) => !!val, // only validate if password is filled\n then: (schema) =>\n schema\n .oneOf([Yup.ref('password')], ERROR_MESSAGES.FIELD_MUST_MATCH('Password'))\n .nullable(),\n otherwise: (schema) => schema.notRequired().nullable(),\n }),\n mobile: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED('Mobile')),\n failedLoginAttempts: Yup.number()\n .typeError(\"Failed Login Attempts must be a number\")\n .nullable()\n .transform((value, originalValue) =>\n originalValue === \"\" ? null : value\n ),\n });\n\n\n const isFormFieldValid = (formik: any, fieldName: string) => {\n return formik.touched[fieldName] && formik.errors[fieldName];\n };\n\n\n const showError = async (submit?: boolean) => {\n const errors = await formik.validateForm();\n const errorMessages = Object.values(errors);\n\n if (errorMessages.length > 0 && toast.current) {\n toast.current.show({\n severity: \"error\",\n summary: ERROR_MESSAGES.SEND_REPORT,\n // sticky: true,\n life: 3000,\n //@ts-ignore\n content: (props) => (\n <div\n className=\"flex flex-column align-items-left\"\n style={{ flex: \"1\" }}\n >\n {errorMessages.map((m: any, index: number) => (\n <div className=\"flex align-items-center gap-2\" key={index}>\n <span className=\"font-bold text-900\">{m}</span>\n </div>\n ))}\n </div>\n ),\n });\n }\n };\n\n function isFetchBaseQueryErrorWithErrorResponse(error: any): error is FetchBaseQueryError & { data: ErrorResponseData } {\n return error && typeof error === 'object' && 'data' in error && 'message' in error.data;\n }\n\n useEffect(() => {\n const handleError = (errorToast: any) => {\n let errorMessage: any = [ERROR_MESSAGES.ERROR_OCCURED];\n\n if (isFetchBaseQueryErrorWithErrorResponse(errorToast)) {\n errorMessage = errorToast.data.message;\n } else {\n errorMessage = [ERROR_MESSAGES.SOMETHING_WRONG];\n }\n\n toast.current?.show({\n severity: 'error',\n summary: ERROR_MESSAGES.ERROR,\n detail: errorMessage,\n sticky: true,\n //@ts-ignore\n content: (props) => (\n <div className=\"flex flex-column align-items-left\" style={{ flex: \"1\" }}>\n {Array.isArray(errorMessage) ? (\n errorMessage.map((message, index) => (\n <div className=\"flex align-items-center gap-2\" key={index}>\n <span className=\"font-bold text-900\">{message.trim()}</span>\n </div>\n ))\n ) : (\n <div className=\"flex align-items-center gap-2\">\n <span className=\"font-bold text-900\">{errorMessage?.trim()}</span>\n </div>\n )}\n </div>\n ),\n });\n };\n\n // Check and handle errors from each API operation\n if (userCreateError) {\n handleError(userCreateError)\n }\n if (userUpdateError) {\n handleError(userUpdateError)\n }\n\n }, [\n userCreateError, userUpdateError\n ]);\n\n\n const formik = useFormik({\n initialValues,\n validationSchema,\n enableReinitialize: true,\n onSubmit: async (values) => {\n if (data) {\n const userData: any = {\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n roles: selectedRoles,\n failedLoginAttempts: values.failedLoginAttempts,\n };\n if (values.password) {\n userData.password = values.password;\n }\n updateUser({ id: data.id, data: userData });\n\n } else {\n const userData = {\n fullName: values.fullName,\n username: values.username,\n email: values.email,\n mobile: values.mobile,\n password: values.password,\n roles: selectedRoles,\n failedLoginAttempts: values.failedLoginAttempts,\n };\n\n registerPrivate(userData)\n }\n },\n });\n\n useEffect(() => {\n if (isSuccess == true || isDeleteUserSuceess === true || isUpdateuserSuceess === true) {\n router.back();\n }\n }, [isSuccess, isDeleteUserSuceess, isUpdateuserSuceess])\n\n return (\n <div className=\"solid-form-wrapper\">\n <Toast ref={toast} />\n <div className=\"solid-form-section\" >\n <form onSubmit={formik.handleSubmit}>\n <div className=\"solid-form-header\">\n {params.id === \"new\" ? (\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title\">Create User</div>\n </div>\n <div className=\"gap-3 flex\">\n {formik.dirty &&\n <Button label=\"Save\" size=\"small\" type=\"submit\" />\n }\n <CancelButton />\n </div>\n </>\n ) : (\n <>\n <div className=\"flex align-items-center gap-3\">\n <BackButton />\n <div className=\"form-wrapper-title\">Update User</div>\n </div>\n <div>\n <div className=\"gap-3 flex\">\n {formik.dirty &&\n <Button label=\"Save\" size=\"small\" type=\"submit\" />\n }\n {data &&\n <Button outlined label=\"Delete\" size=\"small\" severity=\"danger\" type=\"button\" onClick={() => deleteUser(data.id)} />\n }\n <CancelButton />\n </div>\n </div>\n </>\n )}\n </div>\n <SolidFormHeader />\n {/* <div className=\"solid-form-stepper\">\n <SolidFormStepper />\n </div> */}\n <div className=\"px-4 py-3 md:p-4 solid-form-content\">\n <div className=\"grid\">\n <div className=\"col-12 lg:col-10 xl:col-8 mx-auto\">\n {/* <p className=\"form-wrapper-heading text-base\">Basic Info</p> */}\n <Panel header=\"Basic Info\" className=\"solid-column-panel\">\n <div className=\"grid formgrid mt-3\">\n <div className=\"field col-12 md:col-6 flex flex-column gap-2\">\n <label htmlFor=\"fullName\" className=\"form-field-label\">\n Full Name\n </label>\n <InputText\n type=\"text\"\n id=\"fullName\"\n name=\"fullName\"\n autoComplete={\"off\"}\n onChange={formik.handleChange}\n value={formik.values.fullName}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.fullName && formik.errors.fullName,\n })}\n />\n {isFormFieldValid(formik, \"fullName\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.fullName?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 mt-3 md:mt-3\">\n <label htmlFor=\"username\" className=\"form-field-label\">\n Username\n </label>\n <InputText\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete={\"off\"}\n disabled={data ? true : false}\n onChange={formik.handleChange}\n value={formik.values.username}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.username && formik.errors.username,\n })}\n />\n {isFormFieldValid(formik, \"username\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.username?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-1 mt-4\">\n <label htmlFor=\"email\" className=\"form-field-label\">\n Email\n </label>\n <InputText\n type=\"text\"\n id=\"email\"\n name=\"email\"\n autoComplete={\"off\"}\n disabled={data ? true : false}\n onChange={formik.handleChange}\n value={formik.values.email}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.email && formik.errors.email,\n })}\n />\n {isFormFieldValid(formik, \"email\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.email?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-1 mt-4\">\n <label htmlFor=\"mobile\" className=\"form-field-label\">\n Mobile\n </label>\n <InputText\n type=\"text\"\n id=\"mobile\"\n name=\"mobile\"\n autoComplete={\"off\"}\n onChange={formik.handleChange}\n value={formik.values.mobile}\n className={classNames(\"\", {\n \"p-invalid\": formik.touched.mobile && formik.errors.mobile,\n })}\n />\n {isFormFieldValid(formik, \"mobile \") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.mobile?.toString()}\n />\n )}\n </div>\n {params.id === \"new\" && <>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 py-4\">\n <label htmlFor=\"Password\" className=\"form-field-label\">\n Password\n </label>\n <Password\n id=\"password\"\n name=\"password\"\n autoComplete=\"off\"\n aria-autocomplete=\"none\"\n value={formik.values.password}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n toggleMask\n invalid={isFormFieldValid(formik, \"password\")}\n inputClassName=\"w-full\"\n feedback={false}\n />\n {isFormFieldValid(formik, \"password\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.password?.toString()}\n />\n )}\n </div>\n <div className=\"field col-12 md:col-6 flex flex-column gap-2 pb-4 md:pb-0 md:my-4\">\n <label htmlFor=\"Confirm Password\" className=\"form-field-label\">\n Confirm Password\n </label>\n <Password\n id=\"confirmPassword\"\n name=\"confirmPassword\"\n autoComplete=\"off\"\n aria-autocomplete=\"none\"\n value={formik.values.confirmPassword}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur}\n toggleMask\n invalid={isFormFieldValid(formik, \"confirmPassword\")}\n inputClassName=\"w-full\"\n feedback={false}\n />\n {isFormFieldValid(formik, \"confirmPassword\") && (\n <Message\n severity=\"error\"\n text={formik?.errors?.confirmPassword?.toString()}\n />\n )}\n </div>\n </>}\n {params.id !== \"new\" && (\n <div className=\"field col-12 md:col-6 flex flex-column gap-1 mt-4\">\n <label htmlFor=\"failedLoginAttempts\" className=\"form-field-label\">\n Failed Login Attempts\n </label>\n <InputText\n type=\"number\"\n id=\"failedLoginAttempts\"\n name=\"failedLoginAttempts\"\n autoComplete=\"off\"\n onChange={formik.handleChange}\n value={formik.values.failedLoginAttempts}\n className={classNames(\"\", {\n \"p-invalid\":\n formik.touched.failedLoginAttempts &&\n formik.errors.failedLoginAttempts,\n })}\n />\n {formik.touched.failedLoginAttempts &&\n formik.errors.failedLoginAttempts && (\n <Message\n severity=\"error\"\n text={formik.errors.failedLoginAttempts?.toString()}\n />\n )}\n <small className=\"text-color-secondary\">\n Your account has been locked due to repeated unsuccessful login attempts. Please contact your system admin.\n </small>\n </div>\n )}\n </div>\n </Panel>\n\n {/* <Divider /> */}\n {/* <p className=\"form-wrapper-heading text-base\" style={{ fontSize: 16 }}>Roles</p> */}\n\n <Panel toggleable header=\"Roles\" className=\"solid-column-panel mt-5\">\n <div className=\"formgrid grid mt-4\">\n {rolesData?.data?.records && rolesData?.data?.records.map((role: any, i: number) => (\n <div key={role.name} className={`field col-6 flex gap-2 ${i >= 2 ? 'mt-3' : ''}`}>\n <Checkbox\n inputId={role.name}\n checked={selectedRoles.includes(role.name)}\n onChange={() => handleCheckboxChange(role.name)}\n />\n <label htmlFor={role.name}> {role.name}</label>\n </div>\n ))}\n </div>\n </Panel>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n );\n};\n\n\nexport default CreateUser;\n"]}
@@ -90,6 +90,7 @@ const CreateUser = ({ data, params }: any) => {
90
90
  mobile: data ? data.mobile : "",
91
91
  password: "",
92
92
  confirmPassword: "",
93
+ failedLoginAttempts: data ? data.failedLoginAttempts : 0,
93
94
  };
94
95
 
95
96
  const validationSchema = Yup.object({
@@ -121,6 +122,12 @@ const CreateUser = ({ data, params }: any) => {
121
122
  otherwise: (schema) => schema.notRequired().nullable(),
122
123
  }),
123
124
  mobile: Yup.number().required(ERROR_MESSAGES.FIELD_REUQIRED('Mobile')),
125
+ failedLoginAttempts: Yup.number()
126
+ .typeError("Failed Login Attempts must be a number")
127
+ .nullable()
128
+ .transform((value, originalValue) =>
129
+ originalValue === "" ? null : value
130
+ ),
124
131
  });
125
132
 
126
133
 
@@ -219,6 +226,7 @@ const CreateUser = ({ data, params }: any) => {
219
226
  email: values.email,
220
227
  mobile: values.mobile,
221
228
  roles: selectedRoles,
229
+ failedLoginAttempts: values.failedLoginAttempts,
222
230
  };
223
231
  if (values.password) {
224
232
  userData.password = values.password;
@@ -233,6 +241,7 @@ const CreateUser = ({ data, params }: any) => {
233
241
  mobile: values.mobile,
234
242
  password: values.password,
235
243
  roles: selectedRoles,
244
+ failedLoginAttempts: values.failedLoginAttempts,
236
245
  };
237
246
 
238
247
  registerPrivate(userData)
@@ -435,6 +444,36 @@ const CreateUser = ({ data, params }: any) => {
435
444
  )}
436
445
  </div>
437
446
  </>}
447
+ {params.id !== "new" && (
448
+ <div className="field col-12 md:col-6 flex flex-column gap-1 mt-4">
449
+ <label htmlFor="failedLoginAttempts" className="form-field-label">
450
+ Failed Login Attempts
451
+ </label>
452
+ <InputText
453
+ type="number"
454
+ id="failedLoginAttempts"
455
+ name="failedLoginAttempts"
456
+ autoComplete="off"
457
+ onChange={formik.handleChange}
458
+ value={formik.values.failedLoginAttempts}
459
+ className={classNames("", {
460
+ "p-invalid":
461
+ formik.touched.failedLoginAttempts &&
462
+ formik.errors.failedLoginAttempts,
463
+ })}
464
+ />
465
+ {formik.touched.failedLoginAttempts &&
466
+ formik.errors.failedLoginAttempts && (
467
+ <Message
468
+ severity="error"
469
+ text={formik.errors.failedLoginAttempts?.toString()}
470
+ />
471
+ )}
472
+ <small className="text-color-secondary">
473
+ Your account has been locked due to repeated unsuccessful login attempts. Please contact your system admin.
474
+ </small>
475
+ </div>
476
+ )}
438
477
  </div>
439
478
  </Panel>
440
479
 
@@ -6,6 +6,8 @@ export declare const getSingularAndPlural: (displayName: any) => {
6
6
  toPluralKebabCase: string;
7
7
  toPluralCamelCase: string;
8
8
  toCamelCase: any;
9
+ toPlural: string;
10
+ toSingular: string;
9
11
  };
10
12
  export declare function formikValuestoQueryString(values: any): string;
11
13
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers/helpers.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,gBAAiB,IAAI,gBAAgB,IAAI,WAKxE,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,MAAM,WAQ/C,CAAC;AAGF,eAAO,MAAM,oBAAoB,gBAAiB,GAAG;;;;;;CAgBpD,CAAC;AAYF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,GAAG,UAQpD"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers/helpers.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,gBAAiB,IAAI,gBAAgB,IAAI,WAKxE,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,MAAM,WAQ/C,CAAC;AAGF,eAAO,MAAM,oBAAoB,gBAAiB,GAAG;;;;;;;;CAmBpD,CAAC;AAYF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,GAAG,UAQpD"}
@@ -21,7 +21,9 @@ export var getSingularAndPlural = function (displayName) {
21
21
  // Get the plural form using pluralize
22
22
  var toPluralKebabCase = pluralize(toKebabCase);
23
23
  var toPluralCamelCase = pluralize(toCamelCase);
24
- return { toKebabCase: toKebabCase, toSnakeCase: toSnakeCase, toPluralKebabCase: toPluralKebabCase, toPluralCamelCase: toPluralCamelCase, toCamelCase: toCamelCase };
24
+ var toPlural = pluralize(displayName);
25
+ var toSingular = pluralize(displayName, 1);
26
+ return { toKebabCase: toKebabCase, toSnakeCase: toSnakeCase, toPluralKebabCase: toPluralKebabCase, toPluralCamelCase: toPluralCamelCase, toCamelCase: toCamelCase, toPlural: toPlural, toSingular: toSingular };
25
27
  };
26
28
  function cleanForQuery(values) {
27
29
  // remove files, blobs, data: URIs, null/undefined
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,WAAiB,EAAE,YAAkB;IACvE,IAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACtC,IAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAErC,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,MAAc;IAC9C,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAE3B,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAE1D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC;AAGF,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,WAAgB;IACnD,8DAA8D;IAC9D,IAAM,WAAW,GAAQ,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAM,WAAW,GAAQ,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAM,WAAW,GAAQ,SAAS,CAAC,WAAW,CAAC,CAAC;IAGhD,sCAAsC;IACtC,IAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAGjD,OAAO,EAAE,WAAW,aAAA,EAAE,WAAW,aAAA,EAAE,iBAAiB,mBAAA,EAAE,iBAAiB,mBAAA,EAAC,WAAW,aAAA,EAAE,CAAC;AACxF,CAAC,CAAC;AAEF,SAAS,aAAa,CAAC,MAAW;IAChC,kDAAkD;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAC,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACpD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;YAAE,OAAO,SAAS,CAAC;QAC7D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAW;IACnD,IAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC5B,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;AACL,CAAC","sourcesContent":["\nimport { camelCase, kebabCase, snakeCase } from \"lodash\";\nimport moment from \"moment\";\nimport pluralize from \"pluralize\";\nimport qs from \"qs\";\n\nexport const calculateDaysOfStay = (checkInDate: Date, checkOutDate: Date) => {\n const startDate = moment(checkInDate);\n const endDate = moment(checkOutDate);\n\n return endDate.diff(startDate, \"days\") + 1;\n};\n\nexport const addCommasToAmount = (amount: string) => {\n amount = amount.toString();\n\n const parts = amount.split(\".\");\n\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\n return parts.join(\".\");\n};\n\n\nexport const getSingularAndPlural = (displayName: any) => {\n // Convert display name to kebab-case (lowercase with hyphens)\n const toKebabCase: any = kebabCase(displayName);\n\n const toSnakeCase: any = snakeCase(displayName);\n\n const toCamelCase: any = camelCase(displayName);\n\n\n // Get the plural form using pluralize\n const toPluralKebabCase = pluralize(toKebabCase);\n\n const toPluralCamelCase = pluralize(toCamelCase);\n\n\n return { toKebabCase, toSnakeCase, toPluralKebabCase, toPluralCamelCase,toCamelCase };\n};\n\nfunction cleanForQuery(values: any) {\n // remove files, blobs, data: URIs, null/undefined\n return JSON.parse(JSON.stringify(values, (k, v) => {\n if (v === null || v === undefined) return undefined;\n if (v instanceof File || v instanceof Blob) return undefined;\n if (typeof v === \"string\" && v.startsWith(\"data:\")) return undefined;\n return v;\n }));\n}\n\nexport function formikValuestoQueryString(values: any) {\n const filtered = cleanForQuery(values);\n return qs.stringify(filtered, {\n encode: true,\n arrayFormat: \"brackets\",\n allowDots: true,\n skipNulls: true,\n });\n}"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,WAAiB,EAAE,YAAkB;IACvE,IAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACtC,IAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAErC,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,MAAc;IAC9C,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAE3B,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAE1D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC;AAGF,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,WAAgB;IACnD,8DAA8D;IAC9D,IAAM,WAAW,GAAQ,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAM,WAAW,GAAQ,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAM,WAAW,GAAQ,SAAS,CAAC,WAAW,CAAC,CAAC;IAGhD,sCAAsC;IACtC,IAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAExC,IAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE7C,OAAO,EAAE,WAAW,aAAA,EAAE,WAAW,aAAA,EAAE,iBAAiB,mBAAA,EAAE,iBAAiB,mBAAA,EAAE,WAAW,aAAA,EAAE,QAAQ,UAAA,EAAE,UAAU,YAAA,EAAE,CAAC;AAC/G,CAAC,CAAC;AAEF,SAAS,aAAa,CAAC,MAAW;IAChC,kDAAkD;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAC,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACpD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;YAAE,OAAO,SAAS,CAAC;QAC7D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAW;IACnD,IAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC5B,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;AACL,CAAC","sourcesContent":["\nimport { camelCase, kebabCase, snakeCase } from \"lodash\";\nimport moment from \"moment\";\nimport pluralize from \"pluralize\";\nimport qs from \"qs\";\n\nexport const calculateDaysOfStay = (checkInDate: Date, checkOutDate: Date) => {\n const startDate = moment(checkInDate);\n const endDate = moment(checkOutDate);\n\n return endDate.diff(startDate, \"days\") + 1;\n};\n\nexport const addCommasToAmount = (amount: string) => {\n amount = amount.toString();\n\n const parts = amount.split(\".\");\n\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\n return parts.join(\".\");\n};\n\n\nexport const getSingularAndPlural = (displayName: any) => {\n // Convert display name to kebab-case (lowercase with hyphens)\n const toKebabCase: any = kebabCase(displayName);\n\n const toSnakeCase: any = snakeCase(displayName);\n\n const toCamelCase: any = camelCase(displayName);\n\n\n // Get the plural form using pluralize\n const toPluralKebabCase = pluralize(toKebabCase);\n\n const toPluralCamelCase = pluralize(toCamelCase);\n\n const toPlural = pluralize(displayName);\n\n const toSingular = pluralize(displayName, 1);\n\n return { toKebabCase, toSnakeCase, toPluralKebabCase, toPluralCamelCase, toCamelCase, toPlural, toSingular };\n};\n\nfunction cleanForQuery(values: any) {\n // remove files, blobs, data: URIs, null/undefined\n return JSON.parse(JSON.stringify(values, (k, v) => {\n if (v === null || v === undefined) return undefined;\n if (v instanceof File || v instanceof Blob) return undefined;\n if (typeof v === \"string\" && v.startsWith(\"data:\")) return undefined;\n return v;\n }));\n}\n\nexport function formikValuestoQueryString(values: any) {\n const filtered = cleanForQuery(values);\n return qs.stringify(filtered, {\n encode: true,\n arrayFormat: \"brackets\",\n allowDots: true,\n skipNulls: true,\n });\n}"]}
@@ -36,8 +36,11 @@ export const getSingularAndPlural = (displayName: any) => {
36
36
 
37
37
  const toPluralCamelCase = pluralize(toCamelCase);
38
38
 
39
+ const toPlural = pluralize(displayName);
39
40
 
40
- return { toKebabCase, toSnakeCase, toPluralKebabCase, toPluralCamelCase,toCamelCase };
41
+ const toSingular = pluralize(displayName, 1);
42
+
43
+ return { toKebabCase, toSnakeCase, toPluralKebabCase, toPluralCamelCase, toCamelCase, toPlural, toSingular };
41
44
  };
42
45
 
43
46
  function cleanForQuery(values: any) {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/helpers/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AA4C1B,KAAK,sBAAsB,GAAG,IAAI,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,wBAAwB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,aAAa,GAAG,aAAa,CAAC;AAmB3L,eAAO,MAAM,0BAA0B,SAAU,MAAM,aAAa,MAAM,aAAa,CAAC,GAAG,CAAC,YAAW,MAAM,EAAE,SAAa,sBAAsB,cAAoB,MAAM,SAM3K,CAAC;AAEF,eAAO,MAAM,yBAAyB,SAAU,MAAM,gBAAgB,GAAG,EAAE,KAAK,GAAG,SAElF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,MAAM,KAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,IAM/E,CAAC;AAEF,eAAO,MAAM,sBAAsB,SAAU,sBAAsB,cAAa,MAAM,KAAQ,MAAM,EAAE,GAAG,EASxG,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,MAAM,eAvCT,GAAG,EAAE,KAAK,GAyCjD,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/helpers/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AA6C1B,KAAK,sBAAsB,GAAG,IAAI,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,wBAAwB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,aAAa,GAAG,aAAa,CAAC;AAmB3L,eAAO,MAAM,0BAA0B,SAAU,MAAM,aAAa,MAAM,aAAa,CAAC,GAAG,CAAC,YAAW,MAAM,EAAE,SAAa,sBAAsB,cAAoB,MAAM,SAM3K,CAAC;AAEF,eAAO,MAAM,yBAAyB,SAAU,MAAM,gBAAgB,GAAG,EAAE,KAAK,GAAG,SAElF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,MAAM,KAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,IAM/E,CAAC;AAEF,eAAO,MAAM,sBAAsB,SAAU,sBAAsB,cAAa,MAAM,KAAQ,MAAM,EAAE,GAAG,EASxG,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,MAAM,eAvCT,GAAG,EAAE,KAAK,GAyCjD,CAAC"}
@@ -44,6 +44,7 @@ import { SolidAiInteractionMetadataFieldFormWidget } from "../components/core/fo
44
44
  import { SolidAiInteractionMessageFieldFormWidget } from "../components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget";
45
45
  import { SolidS3FileViewerWidget } from "../components/core/form/fields/widgets/SolidS3FileViewerWidget";
46
46
  import DeleteModuleRowAction from "../components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction";
47
+ import hanldeModelSequenceFormViewChange from "../components/core/extension/solid-core/modelSequence/modelSequenceFormViewChangeHandler";
47
48
  var extensionRegistry = {
48
49
  components: {},
49
50
  functions: {},
@@ -240,4 +241,5 @@ registerExtensionFunction("emailFormTypeLoad", hanldeEmailFormTypeLoad);
240
241
  // TODO: @Jyotsana you need to create an extension function which will be used "onFieldChange"
241
242
  // on change of module, apply a where clause on the model & field fields..
242
243
  // on change of model, apply a where clause on the field field...
244
+ registerExtensionFunction("modelSequenceFormViewChangeHandler", hanldeModelSequenceFormViewChange);
243
245
  //# sourceMappingURL=registry.js.map