@solidstarters/solid-core-ui 1.1.22 → 1.1.24

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 (92) hide show
  1. package/dist/components/common/SolidBreadcrumb.d.ts +2 -10
  2. package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
  3. package/dist/components/common/SolidBreadcrumb.js +28 -8
  4. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  5. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  6. package/dist/components/core/common/SolidGlobalSearchElement.js +1 -0
  7. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  8. package/dist/components/core/common/SolidViewLayoutManager.d.ts +13 -0
  9. package/dist/components/core/common/SolidViewLayoutManager.d.ts.map +1 -0
  10. package/dist/components/core/common/SolidViewLayoutManager.js +90 -0
  11. package/dist/components/core/common/SolidViewLayoutManager.js.map +1 -0
  12. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.d.ts.map +1 -1
  13. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +6 -4
  14. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
  15. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.d.ts.map +1 -1
  16. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +5 -3
  17. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
  18. package/dist/components/core/form/SolidFormLayouts.d.ts.map +1 -1
  19. package/dist/components/core/form/SolidFormLayouts.js +6 -2
  20. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  21. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  22. package/dist/components/core/form/SolidFormView.js +134 -48
  23. package/dist/components/core/form/SolidFormView.js.map +1 -1
  24. package/dist/components/core/form/fields/ISolidField.d.ts +2 -1
  25. package/dist/components/core/form/fields/ISolidField.d.ts.map +1 -1
  26. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
  27. package/dist/components/core/form/fields/SolidSelectionStaticField.js +4 -2
  28. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  29. package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
  30. package/dist/components/core/form/fields/SolidShortTextField.js +19 -13
  31. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  32. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -2
  33. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  34. package/dist/components/core/form/widgets/CustomHtml.d.ts +3 -0
  35. package/dist/components/core/form/widgets/CustomHtml.d.ts.map +1 -0
  36. package/dist/components/core/form/widgets/CustomHtml.js +15 -0
  37. package/dist/components/core/form/widgets/CustomHtml.js.map +1 -0
  38. package/dist/components/core/list/SolidListView.js +1 -1
  39. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  40. package/dist/components/core/model/CreateModel.js +3 -7
  41. package/dist/components/core/model/CreateModel.js.map +1 -1
  42. package/dist/components/core/model/FieldMetaData.d.ts +1 -1
  43. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  44. package/dist/components/core/model/FieldMetaData.js +7 -3
  45. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  46. package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -1
  47. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  48. package/dist/components/core/model/FieldMetaDataForm.js +23 -15
  49. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  50. package/dist/components/core/model/ModelMetaData.js +5 -5
  51. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  52. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  53. package/dist/components/core/module/CreateModule.js +1 -5
  54. package/dist/components/core/module/CreateModule.js.map +1 -1
  55. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  56. package/dist/components/core/users/CreateUser.js +1 -5
  57. package/dist/components/core/users/CreateUser.js.map +1 -1
  58. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  59. package/dist/components/layout/AppSidebar.js +2 -14
  60. package/dist/components/layout/AppSidebar.js.map +1 -1
  61. package/dist/helpers/registry.d.ts.map +1 -1
  62. package/dist/helpers/registry.js +9 -3
  63. package/dist/helpers/registry.js.map +1 -1
  64. package/dist/index.d.ts +2 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -0
  67. package/dist/index.js.map +1 -1
  68. package/package.json +3 -1
  69. package/src/components/common/SolidBreadcrumb.tsx +38 -14
  70. package/src/components/core/common/SolidGlobalSearchElement.tsx +2 -0
  71. package/src/components/core/common/SolidViewLayoutManager.ts +85 -0
  72. package/src/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +11 -1
  73. package/src/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +16 -7
  74. package/src/components/core/form/SolidFormLayouts.tsx +6 -3
  75. package/src/components/core/form/SolidFormView.tsx +184 -65
  76. package/src/components/core/form/fields/ISolidField.tsx +2 -1
  77. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +3 -1
  78. package/src/components/core/form/fields/SolidShortTextField.tsx +49 -23
  79. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +6 -6
  80. package/src/components/core/form/widgets/CustomHtml.tsx +19 -0
  81. package/src/components/core/list/SolidListView.tsx +1 -1
  82. package/src/components/core/model/CreateModel.tsx +4 -8
  83. package/src/components/core/model/FieldMetaData.tsx +7 -3
  84. package/src/components/core/model/FieldMetaDataForm.tsx +343 -339
  85. package/src/components/core/model/ModelMetaData.tsx +5 -5
  86. package/src/components/core/module/CreateModule.tsx +1 -6
  87. package/src/components/core/users/CreateUser.tsx +1 -6
  88. package/src/components/layout/AppSidebar.tsx +2 -20
  89. package/src/helpers/registry.ts +16 -4
  90. package/src/index.ts +16 -1
  91. package/src/types/index.d.ts +24 -2
  92. package/src/types/solid-core.d.ts +12 -3
@@ -86,7 +86,7 @@ const SelectionStaticValues = ({ enumValue, onUpdate, onDelete, onAdd }: any) =>
86
86
 
87
87
  return (
88
88
  <div className="flex align-items-center gap-2 mt-2">
89
-
89
+
90
90
  {/* Input field for Value */}
91
91
  <InputText
92
92
  value={value || ""}
@@ -94,7 +94,7 @@ const SelectionStaticValues = ({ enumValue, onUpdate, onDelete, onAdd }: any) =>
94
94
  placeholder="Value"
95
95
  className="w-full"
96
96
  />
97
-
97
+
98
98
  {/* Input field for Display */}
99
99
  <InputText
100
100
  value={display || ""}
@@ -103,13 +103,12 @@ const SelectionStaticValues = ({ enumValue, onUpdate, onDelete, onAdd }: any) =>
103
103
  className="w-full"
104
104
  />
105
105
 
106
-
106
+
107
107
 
108
108
  {/* Plus Button to add a new row */}
109
109
  <Button
110
110
  icon="pi pi-plus"
111
111
  size="small"
112
- className="small-button"
113
112
  onClick={onAdd}
114
113
  type="button"
115
114
  />
@@ -118,7 +117,6 @@ const SelectionStaticValues = ({ enumValue, onUpdate, onDelete, onAdd }: any) =>
118
117
  <Button
119
118
  icon="pi pi-trash"
120
119
  size="small"
121
- className="small-button"
122
120
  onClick={onDelete}
123
121
  outlined
124
122
  severity="danger"
@@ -146,7 +144,6 @@ const fieldBasedPayloadFormating = (values: any, currentFields: string[], fieldM
146
144
  // }
147
145
  return acc;
148
146
  }, {});
149
-
150
147
  transformedPayload.displayName = transformedPayload.displayName.trim()
151
148
 
152
149
  transformedPayload.identifier = fieldMetaData ? fieldMetaData.identifier : Date.now();
@@ -167,10 +164,11 @@ const fieldBasedPayloadFormating = (values: any, currentFields: string[], fieldM
167
164
  transformedPayload.computedFieldValueProviderCtxt = prettified
168
165
  }
169
166
  if (currentFields.includes("relationCreateInverse")) {
170
- transformedPayload.relationCreateInverse = values.relationCreateInverse == "false" ? "" : true
167
+ transformedPayload.relationCreateInverse = values.relationCreateInverse == false ? false : true
168
+ }
169
+ if (transformedPayload.relationType == "many-to-one") {
170
+ transformedPayload.relationCascade = values.relationCascade;
171
171
  }
172
-
173
-
174
172
 
175
173
  return transformedPayload
176
174
 
@@ -506,7 +504,7 @@ const createValidationSchema = (currentFields: any, selectedType: any, allFields
506
504
  return Yup.object(schema);
507
505
  };
508
506
 
509
- const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, allFields, deleteModelFunction, setVisiblePopup, params, setIsRequiredPopUp, showToaster }: any) => {
507
+ const FieldMetaDataForm = ({ setIsDirty, modelMetaData, fieldMetaData, setFieldMetaData, allFields, deleteModelFunction, setVisiblePopup, params, setIsRequiredPopUp, showToaster }: any) => {
510
508
 
511
509
  const booleanOptions = ["false", "true"];
512
510
  const [isBackPopupVisible, setIsBackPopupVisible] = useState(false);
@@ -893,7 +891,7 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
893
891
  mediaEmbedded: fieldMetaData ? (fieldMetaData?.mediaEmbedded && fieldMetaData?.mediaEmbedded.toString()) : "true",
894
892
  relationType: fieldMetaData ? fieldMetaData?.relationType : null,
895
893
  relationCoModelSingularName: fieldMetaData ? fieldMetaData?.relationCoModelSingularName : null,
896
- relationCoModelFieldName: fieldMetaData ? fieldMetaData?.relationCoModelFieldName : modelMetaData.pluralName || '',
894
+ relationCoModelFieldName: fieldMetaData ? fieldMetaData?.relationCoModelFieldName : null,
897
895
  relationCreateInverse: fieldMetaData ? fieldMetaData?.relationCreateInverse : false,
898
896
  relationCascade: fieldMetaData ? fieldMetaData?.relationCascade : 'cascade',
899
897
  relationModelModuleName: fieldMetaData ? fieldMetaData?.relationModelModuleName : modelMetaData?.module.name,
@@ -1046,9 +1044,9 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1046
1044
  const queryString = qs.stringify(queryData, {
1047
1045
  encodeValuesOnly: true,
1048
1046
  });
1049
-
1047
+
1050
1048
  const result = await triggerGetModels(queryString).unwrap();
1051
-
1049
+
1052
1050
  if (result && result.records) {
1053
1051
  if (!result?.records[0]?.userKeyField) {
1054
1052
  setUserKeyFields(true);
@@ -1085,6 +1083,12 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1085
1083
  }
1086
1084
  };
1087
1085
 
1086
+ useEffect(() => {
1087
+ if (formik.dirty) {
1088
+ setIsDirty(true);
1089
+ }
1090
+ }, [formik.dirty]);
1091
+
1088
1092
  return (
1089
1093
  <div>
1090
1094
  <Toast ref={toast} />
@@ -1183,7 +1187,7 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1183
1187
  >
1184
1188
  <div className="formgrid grid">
1185
1189
  {currentFields.includes("displayName") && (
1186
- <div className="field col-6 flex-flex-column gap-2">
1190
+ <div className="field col-6 flex-flex-column gap-2 mt-2">
1187
1191
  <label htmlFor="displayName" className="form-field-label">
1188
1192
  Display Name
1189
1193
  </label>
@@ -1402,7 +1406,7 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1402
1406
  </div>
1403
1407
  )}
1404
1408
  {currentFields.includes("defaultValue") && (
1405
- <div className="field col-6 flex-flex-column gap-2">
1409
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
1406
1410
  <label
1407
1411
  htmlFor="defaultValue"
1408
1412
  className="form-field-label"
@@ -1466,7 +1470,7 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1466
1470
  value={formik.values.defaultValue ? formik.values.defaultValue : "false"}
1467
1471
  onChange={(e) => formik.setFieldValue("defaultValue", e.value)} // Custom handling for boolean input
1468
1472
  options={booleanOptions}
1469
- className={classNames(" flex boolean-switch", {
1473
+ className={classNames("", {
1470
1474
  "p-invalid": isFormFieldValid(formik, "defaultValue"),
1471
1475
  })}
1472
1476
  />
@@ -1651,7 +1655,7 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1651
1655
  formik.setFieldValue("mediaEmbedded", e.value);
1652
1656
  }}
1653
1657
  options={booleanOptions}
1654
- className={classNames(" flex boolean-switch", {
1658
+ className={classNames("", {
1655
1659
  "p-invalid": isFormFieldValid(
1656
1660
  formik,
1657
1661
  "mediaEmbedded"
@@ -1865,39 +1869,39 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1865
1869
  )}
1866
1870
 
1867
1871
  {isUserKeyFields && (
1868
- <div className="field col-6 flex-flex-column gap-2">
1869
- <label
1870
- htmlFor="userKey"
1871
- className="form-field-label"
1872
- >
1873
- Set User Key
1874
- </label>
1872
+ <div className="field col-6 flex-flex-column gap-2">
1873
+ <label
1874
+ htmlFor="userKey"
1875
+ className="form-field-label"
1876
+ >
1877
+ Set User Key
1878
+ </label>
1875
1879
 
1876
1880
 
1877
- <SingleSelectAutoCompleteField
1878
- key="userKey"
1879
- formik={formik}
1880
- isFormFieldValid={isFormFieldValid}
1881
- fieldName="userKey"
1882
- fieldNameId="userKey"
1883
- labelKey="displayName"
1884
- valueKey="name"
1885
- searchData={searchUserKeyField}
1886
- existingData={formik.values.userKey}
1887
- />
1888
- {isFormFieldValid(
1889
- formik,
1890
- "userKey"
1891
- ) && (
1892
- <Message
1893
- severity="error"
1894
- text={formik?.errors?.userKey?.toString()}
1895
- />
1896
- )}
1897
- </div>
1898
- )}
1881
+ <SingleSelectAutoCompleteField
1882
+ key="userKey"
1883
+ formik={formik}
1884
+ isFormFieldValid={isFormFieldValid}
1885
+ fieldName="userKey"
1886
+ fieldNameId="userKey"
1887
+ labelKey="displayName"
1888
+ valueKey="name"
1889
+ searchData={searchUserKeyField}
1890
+ existingData={formik.values.userKey}
1891
+ />
1892
+ {isFormFieldValid(
1893
+ formik,
1894
+ "userKey"
1895
+ ) && (
1896
+ <Message
1897
+ severity="error"
1898
+ text={formik?.errors?.userKey?.toString()}
1899
+ />
1900
+ )}
1901
+ </div>
1902
+ )}
1899
1903
 
1900
- {currentFields.includes("relationCreateInverse") && (formik.values.relationType === "many-to-many" || formik.values.relationType === "many-to-one")&& (
1904
+ {currentFields.includes("relationCreateInverse") && (formik.values.relationType === "many-to-many" || formik.values.relationType === "many-to-one") && (
1901
1905
  <div className="field col-6 flex flex-column gap-2 mt-3">
1902
1906
  <label htmlFor="relationCreateInverse" className="form-field-label">
1903
1907
  Relation Create Inverse
@@ -1906,7 +1910,7 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1906
1910
  <Checkbox
1907
1911
  inputId="relationCreateInverse"
1908
1912
  name="relationCreateInverse"
1909
- checked={Boolean(formik.values.relationCreateInverse)}
1913
+ checked={formik.values.relationCreateInverse}
1910
1914
  onChange={(e) => formik.setFieldValue("relationCreateInverse", e.checked)}
1911
1915
  />
1912
1916
  <label htmlFor="relationCreateInverse" className="ml-2">Create Inverse</label>
@@ -1923,7 +1927,7 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1923
1927
  htmlFor="relationCoModelFieldName"
1924
1928
  className="form-field-label"
1925
1929
  >
1926
- Field Name on Inverse Side
1930
+ Relation Co-Model Field Name
1927
1931
  </label>
1928
1932
  <InputText
1929
1933
  type="text"
@@ -1948,93 +1952,93 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
1948
1952
  </div>
1949
1953
  )}
1950
1954
 
1951
- {currentFields.includes("relationJoinTableName") && formik.values.relationType === "many-to-many" && (
1955
+ {/* {currentFields.includes("joinColumnName") && formik.values.relationType === "many-to-many" && (
1952
1956
  <div className="field col-6 flex-flex-column gap-2 mt-3">
1953
1957
  <label
1954
- htmlFor="relationJoinTableName"
1958
+ htmlFor="joinColumnName"
1955
1959
  className="form-field-label"
1956
1960
  >
1957
- Relation Join Table Name
1961
+ Join Column Name
1958
1962
  </label>
1959
1963
  <InputText
1960
1964
  type="text"
1961
- id="relationJoinTableName"
1962
- name="relationJoinTableName"
1965
+ id="joinColumnName"
1966
+ name="joinColumnName"
1963
1967
  onChange={formik.handleChange}
1964
- value={formik.values.relationJoinTableName}
1968
+ value={formik.values.joinColumnName}
1965
1969
  className={classNames("", {
1966
1970
  "p-invalid": isFormFieldValid(
1967
1971
  formik,
1968
- "relationJoinTableName"
1972
+ "joinColumnName"
1969
1973
  ),
1970
1974
  })}
1971
1975
  />
1972
- {isFormFieldValid(formik, "relationJoinTableName") && (
1976
+ {isFormFieldValid(formik, "joinColumnName") && (
1973
1977
  <Message
1974
1978
  severity="error"
1975
- text={formik?.errors?.relationJoinTableName?.toString()}
1979
+ text={formik?.errors?.joinColumnName?.toString()}
1976
1980
  />
1977
1981
  )}
1978
1982
 
1979
1983
  </div>
1980
- )}
1984
+ )} */}
1981
1985
 
1982
- {/* {currentFields.includes("joinColumnName") && formik.values.relationType === "many-to-many" && (
1986
+ {currentFields.includes("relationCoModelColumnName") && formik.values.relationCreateInverse && (formik.values.relationType === "many-to-many" || formik.values.relationType === "many-to-one") && (
1983
1987
  <div className="field col-6 flex-flex-column gap-2 mt-3">
1984
1988
  <label
1985
- htmlFor="joinColumnName"
1989
+ htmlFor="relationCoModelColumnName"
1986
1990
  className="form-field-label"
1987
1991
  >
1988
- Join Column Name
1992
+ Relation Co-Model Column Name
1989
1993
  </label>
1990
1994
  <InputText
1991
1995
  type="text"
1992
- id="joinColumnName"
1993
- name="joinColumnName"
1996
+ id="relationCoModelColumnName"
1997
+ name="relationCoModelColumnName"
1994
1998
  onChange={formik.handleChange}
1995
- value={formik.values.joinColumnName}
1999
+ value={formik.values.relationCoModelColumnName}
1996
2000
  className={classNames("", {
1997
2001
  "p-invalid": isFormFieldValid(
1998
2002
  formik,
1999
- "joinColumnName"
2003
+ "relationCoModelColumnName"
2000
2004
  ),
2001
2005
  })}
2002
2006
  />
2003
- {isFormFieldValid(formik, "joinColumnName") && (
2007
+ {isFormFieldValid(formik, "relationCoModelColumnName") && (
2004
2008
  <Message
2005
2009
  severity="error"
2006
- text={formik?.errors?.joinColumnName?.toString()}
2010
+ text={formik?.errors?.relationCoModelColumnName?.toString()}
2007
2011
  />
2008
2012
  )}
2009
2013
 
2010
2014
  </div>
2011
- )} */}
2015
+ )}
2012
2016
 
2013
- {currentFields.includes("relationCoModelColumnName") && (formik.values.relationType === "many-to-many" || formik.values.relationType === "many-to-one") && (
2017
+ {currentFields.includes("relationJoinTableName") && formik.values.relationType === "many-to-many" && (
2014
2018
  <div className="field col-6 flex-flex-column gap-2 mt-3">
2015
2019
  <label
2016
- htmlFor="relationCoModelColumnName"
2020
+ htmlFor="relationJoinTableName"
2017
2021
  className="form-field-label"
2018
2022
  >
2019
- Relation Co-Model Column Name
2023
+ Relation Join Table Name
2020
2024
  </label>
2021
2025
  <InputText
2022
2026
  type="text"
2023
- id="relationCoModelColumnName"
2024
- name="relationCoModelColumnName"
2027
+ id="relationJoinTableName"
2028
+ name="relationJoinTableName"
2025
2029
  onChange={formik.handleChange}
2026
- value={formik.values.relationCoModelColumnName}
2030
+ value={formik.values.relationJoinTableName}
2027
2031
  className={classNames("", {
2028
2032
  "p-invalid": isFormFieldValid(
2029
2033
  formik,
2030
- "relationCoModelColumnName"
2034
+ "relationJoinTableName"
2031
2035
  ),
2032
2036
  })}
2033
2037
  />
2034
- {isFormFieldValid(formik, "relationCoModelColumnName") && (
2038
+ {isFormFieldValid(formik, "relationJoinTableName") && (
2035
2039
  <Message
2036
2040
  severity="error"
2037
- text={formik?.errors?.relationCoModelColumnName?.toString()}
2041
+ text={formik?.errors?.relationJoinTableName?.toString()}
2038
2042
  />
2039
2043
  )}
2040
2044
 
@@ -2419,101 +2423,101 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
2419
2423
  )}
2420
2424
  {(currentFields.includes("regexPattern") || currentFields.includes("min") || currentFields.includes("max") || currentFields.includes("ormType")) && ormTypeOptions && selectedType.value !== 'relation' &&
2421
2425
  <>
2422
- <p className="form-wrapper-heading text-base">Validations</p>
2426
+ <p className="form-wrapper-heading text-base mt-3">Validations</p>
2423
2427
  <div className="formgrid grid">
2424
2428
  {(currentFields.includes("regexPattern") && selectedType.value === "password") &&
2425
2429
  <>
2426
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2427
- <label
2428
- htmlFor="regexPattern"
2429
- className="form-field-label"
2430
- >
2431
- Password Policy
2432
- </label>
2433
- <Dropdown value={selectedPasswordPolicy} onChange={(e: DropdownChangeEvent) => {
2434
- setSelectedPasswordPolicy(e.value)
2435
- if (e.value !== "custom") {
2436
- formik.setFieldValue('regexPattern', e.value)
2437
- }
2438
- }} options={passwordPolicyOptions} optionLabel="label"
2439
- placeholder="Select a Password Policy"
2440
- // className="w-full md:w-14rem"
2441
- className=""
2442
- checkmark={true} highlightOnSelect={false} />
2430
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2431
+ <label
2432
+ htmlFor="regexPattern"
2433
+ className="form-field-label"
2434
+ >
2435
+ Password Policy
2436
+ </label>
2437
+ <Dropdown value={selectedPasswordPolicy} onChange={(e: DropdownChangeEvent) => {
2438
+ setSelectedPasswordPolicy(e.value)
2439
+ if (e.value !== "custom") {
2440
+ formik.setFieldValue('regexPattern', e.value)
2441
+ }
2442
+ }} options={passwordPolicyOptions} optionLabel="label"
2443
+ placeholder="Select a Password Policy"
2444
+ // className="w-full md:w-14rem"
2445
+ className=""
2446
+ checkmark={true} highlightOnSelect={false} />
2443
2447
 
2444
- </div>
2448
+ </div>
2445
2449
  </>
2446
2450
  }
2447
2451
  {currentFields.includes("regexPattern") && (
2448
2452
  <>
2449
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2453
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2454
+ <label
2455
+ htmlFor="regexPattern"
2456
+ className="form-field-label"
2457
+ >
2458
+ Regex Pattern
2459
+ </label>
2460
+ <InputText
2461
+ type="text"
2462
+ id="regexPattern"
2463
+ name="regexPattern"
2464
+ onChange={formik.handleChange}
2465
+ value={formik.values.regexPattern}
2466
+ className={classNames("", {
2467
+ "p-invalid": isFormFieldValid(
2468
+ formik,
2469
+ "regexPattern"
2470
+ ),
2471
+ })}
2472
+ />
2473
+ {isFormFieldValid(formik, "regexPattern") && (
2474
+ <Message
2475
+ severity="error"
2476
+ text={formik?.errors?.regexPattern?.toString()}
2477
+ />
2478
+ )}
2479
+ </div>
2480
+ {currentFields.includes("regexPattern") && (
2481
+ <div className="field col-6 flex-flex-column gap-2">
2450
2482
  <label
2451
- htmlFor="regexPattern"
2483
+ htmlFor="regexPatternNotMatchingErrorMsg"
2452
2484
  className="form-field-label"
2453
2485
  >
2454
- Regex Pattern
2486
+ Regex Pattern Not Matching Error Msg
2455
2487
  </label>
2456
2488
  <InputText
2457
2489
  type="text"
2458
- id="regexPattern"
2459
- name="regexPattern"
2490
+ id="regexPatternNotMatchingErrorMsg"
2491
+ name="regexPatternNotMatchingErrorMsg"
2460
2492
  onChange={formik.handleChange}
2461
- value={formik.values.regexPattern}
2493
+ value={formik.values.regexPatternNotMatchingErrorMsg}
2462
2494
  className={classNames("", {
2463
2495
  "p-invalid": isFormFieldValid(
2464
2496
  formik,
2465
- "regexPattern"
2497
+ "regexPatternNotMatchingErrorMsg"
2466
2498
  ),
2467
2499
  })}
2468
2500
  />
2469
- {isFormFieldValid(formik, "regexPattern") && (
2501
+ {isFormFieldValid(formik, "regexPatternNotMatchingErrorMsg") && (
2470
2502
  <Message
2471
2503
  severity="error"
2472
- text={formik?.errors?.regexPattern?.toString()}
2504
+ text={formik?.errors?.regexPatternNotMatchingErrorMsg?.toString()}
2473
2505
  />
2474
2506
  )}
2475
2507
  </div>
2476
- {currentFields.includes("regexPattern") && (
2477
- <div className="field col-6 flex-flex-column gap-2">
2478
- <label
2479
- htmlFor="regexPatternNotMatchingErrorMsg"
2480
- className="form-field-label"
2481
- >
2482
- Regex Pattern Not Matching Error Msg
2483
- </label>
2484
- <InputText
2485
- type="text"
2486
- id="regexPatternNotMatchingErrorMsg"
2487
- name="regexPatternNotMatchingErrorMsg"
2488
- onChange={formik.handleChange}
2489
- value={formik.values.regexPatternNotMatchingErrorMsg}
2490
- className={classNames("", {
2491
- "p-invalid": isFormFieldValid(
2492
- formik,
2493
- "regexPatternNotMatchingErrorMsg"
2494
- ),
2495
- })}
2496
- />
2497
- {isFormFieldValid(formik, "regexPatternNotMatchingErrorMsg") && (
2498
- <Message
2499
- severity="error"
2500
- text={formik?.errors?.regexPatternNotMatchingErrorMsg?.toString()}
2501
- />
2502
- )}
2503
- </div>
2504
2508
  )}
2505
2509
  </>
2506
2510
 
2507
2511
  )}
2508
2512
  {(currentFields.includes("min") || currentFields.includes("max")) &&
2509
- <>
2510
- {currentFields.includes("min") && (
2511
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2512
- <label htmlFor="min" className="form-field-label">
2513
- Min {(selectedType.value !== "int" && selectedType.value !== "decimal") && `(Characters Allowed)`}
2514
-
2515
- </label>
2516
- {/* <InputText
2513
+ <>
2514
+ {currentFields.includes("min") && (
2515
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2516
+ <label htmlFor="min" className="form-field-label">
2517
+ Min {(selectedType.value !== "int" && selectedType.value !== "decimal") && `(Characters Allowed)`}
2518
+
2519
+ </label>
2520
+ {/* <InputText
2517
2521
  type="text"
2518
2522
  id="min"
2519
2523
  name="min"
@@ -2523,45 +2527,45 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
2523
2527
  "p-invalid": isFormFieldValid(formik, "min"),
2524
2528
  })}
2525
2529
  /> */}
2526
- {/* <RenderMinValueInput></RenderMinValueInput> */}
2527
- {(selectedType.value === "int" ||
2528
- selectedType.value === "decimal" ||
2529
- selectedType.value === "shortText" ||
2530
- selectedType.value === "decimal" ||
2531
- selectedType.value === "longText" ||
2532
- selectedType.value === "richText" ||
2533
- selectedType.value === "password" ||
2534
- selectedType.value === "json") &&
2535
- <InputNumber
2536
- id="min"
2537
- name="min"
2538
- onValueChange={formik.handleChange}
2539
- value={formik.values.min}
2540
- className={classNames("", {
2541
- "p-invalid": isFormFieldValid(
2542
- formik,
2543
- "min"
2544
- ),
2545
- })}
2546
- disabled={fieldMetaData?.id}
2547
- />
2548
- }
2549
-
2550
- {isFormFieldValid(formik, "min") && (
2551
- <Message
2552
- severity="error"
2553
- text={formik?.errors?.min?.toString()}
2554
- />
2555
- )}
2556
- </div>
2557
- )}
2558
- {currentFields.includes("max") && (
2559
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2560
- <label htmlFor="max" className="form-field-label">
2561
- Max {(selectedType.value !== "int" &&
2562
- selectedType.value !== "decimal") && `(Characters allowed)`}
2563
- </label>
2564
- {/* <InputText
2530
+ {/* <RenderMinValueInput></RenderMinValueInput> */}
2531
+ {(selectedType.value === "int" ||
2532
+ selectedType.value === "decimal" ||
2533
+ selectedType.value === "shortText" ||
2534
+ selectedType.value === "decimal" ||
2535
+ selectedType.value === "longText" ||
2536
+ selectedType.value === "richText" ||
2537
+ selectedType.value === "password" ||
2538
+ selectedType.value === "json") &&
2539
+ <InputNumber
2540
+ id="min"
2541
+ name="min"
2542
+ onValueChange={formik.handleChange}
2543
+ value={formik.values.min}
2544
+ className={classNames("", {
2545
+ "p-invalid": isFormFieldValid(
2546
+ formik,
2547
+ "min"
2548
+ ),
2549
+ })}
2550
+ disabled={fieldMetaData?.id}
2551
+ />
2552
+ }
2553
+
2554
+ {isFormFieldValid(formik, "min") && (
2555
+ <Message
2556
+ severity="error"
2557
+ text={formik?.errors?.min?.toString()}
2558
+ />
2559
+ )}
2560
+ </div>
2561
+ )}
2562
+ {currentFields.includes("max") && (
2563
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2564
+ <label htmlFor="max" className="form-field-label">
2565
+ Max {(selectedType.value !== "int" &&
2566
+ selectedType.value !== "decimal") && `(Characters allowed)`}
2567
+ </label>
2568
+ {/* <InputText
2565
2569
  type="text"
2566
2570
  id="max"
2567
2571
  name="max"
@@ -2571,38 +2575,38 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
2571
2575
  "p-invalid": isFormFieldValid(formik, "max"),
2572
2576
  })}
2573
2577
  /> */}
2574
- {(selectedType.value === "int" ||
2575
- selectedType.value === "decimal" ||
2576
- selectedType.value === "shortText" ||
2577
- selectedType.value === "decimal" ||
2578
- selectedType.value === "longText" ||
2579
- selectedType.value === "richText" ||
2580
- selectedType.value === "password" ||
2581
- selectedType.value === "json") &&
2582
- <InputNumber
2583
- id="max"
2584
- name="max"
2585
- onValueChange={formik.handleChange}
2586
- value={formik.values.max}
2587
- className={classNames("", {
2588
- "p-invalid": isFormFieldValid(
2589
- formik,
2590
- "max"
2591
- ),
2592
- })}
2593
- disabled={fieldMetaData?.id}
2594
- />
2595
- }
2596
-
2597
- {isFormFieldValid(formik, "max") && (
2598
- <Message
2599
- severity="error"
2600
- text={formik?.errors?.max?.toString()}
2601
- />
2602
- )}
2603
- </div>
2604
- )}
2605
- </>
2578
+ {(selectedType.value === "int" ||
2579
+ selectedType.value === "decimal" ||
2580
+ selectedType.value === "shortText" ||
2581
+ selectedType.value === "decimal" ||
2582
+ selectedType.value === "longText" ||
2583
+ selectedType.value === "richText" ||
2584
+ selectedType.value === "password" ||
2585
+ selectedType.value === "json") &&
2586
+ <InputNumber
2587
+ id="max"
2588
+ name="max"
2589
+ onValueChange={formik.handleChange}
2590
+ value={formik.values.max}
2591
+ className={classNames("", {
2592
+ "p-invalid": isFormFieldValid(
2593
+ formik,
2594
+ "max"
2595
+ ),
2596
+ })}
2597
+ disabled={fieldMetaData?.id}
2598
+ />
2599
+ }
2600
+
2601
+ {isFormFieldValid(formik, "max") && (
2602
+ <Message
2603
+ severity="error"
2604
+ text={formik?.errors?.max?.toString()}
2605
+ />
2606
+ )}
2607
+ </div>
2608
+ )}
2609
+ </>
2606
2610
  }
2607
2611
  {currentFields.includes("ormType") && (
2608
2612
  <div className="md:col-12 sm:col-12">
@@ -2658,126 +2662,126 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
2658
2662
  </>
2659
2663
  }
2660
2664
 
2661
- <p className="form-wrapper-heading text-base">Settings</p>
2665
+ {(formik.values.relationType !== "many-to-many" && formik.values.relationType !== "one-to-many") && <p className="form-wrapper-heading text-base">Settings</p>}
2662
2666
  <div className="formgrid grid">
2663
- {currentFields.includes("required") && selectedType.value !== 'relation' && (
2664
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2665
- <div className="flex align-items-center">
2666
- <Checkbox
2667
- name="required"
2668
- onChange={(e) => {
2669
- formik.setFieldValue("required", e.checked);
2670
- }}
2671
- checked={formik.values.required}
2672
- ></Checkbox>
2673
- <label htmlFor="ingredient1" className="form-field-label ml-2">
2674
- Required
2675
- </label>
2676
- </div>
2677
- <p className="text-xs mt-2">You won't be able to create an entry if this field is empty</p>
2678
-
2679
- {isFormFieldValid(formik, "required") && (
2680
- <Message
2681
- severity="error"
2682
- text={formik?.errors?.required?.toString()}
2683
- />
2684
- )}
2667
+ {currentFields.includes("required") && (formik.values.relationType !== "many-to-many" && formik.values.relationType !== "one-to-many") && (
2668
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2669
+ <div className="flex align-items-center">
2670
+ <Checkbox
2671
+ name="required"
2672
+ onChange={(e) => {
2673
+ formik.setFieldValue("required", e.checked);
2674
+ }}
2675
+ checked={formik.values.required}
2676
+ ></Checkbox>
2677
+ <label htmlFor="ingredient1" className="form-field-label ml-2">
2678
+ Required
2679
+ </label>
2685
2680
  </div>
2681
+ <p className="text-xs mt-2">You won't be able to create an entry if this field is empty</p>
2682
+
2683
+ {isFormFieldValid(formik, "required") && (
2684
+ <Message
2685
+ severity="error"
2686
+ text={formik?.errors?.required?.toString()}
2687
+ />
2688
+ )}
2689
+ </div>
2686
2690
  )}
2687
2691
  {currentFields.includes("unique") && selectedType.value !== 'relation' && (
2688
- <div className="field col-6 flex-flex-column gap-2">
2689
- <div className="flex align-items-center">
2690
- <Checkbox
2691
- name="unique"
2692
- onChange={(e) => {
2693
- formik.setFieldValue("unique", e.checked);
2694
- formik.setFieldValue("isUserKey", false);
2695
- }}
2696
- checked={formik.values.unique}
2697
- ></Checkbox>
2698
- <label htmlFor="ingredient1" className="form-field-label ml-2">
2699
- Unique
2700
- </label>
2701
- </div>
2702
- <p className="text-xs mt-2">You won't be able to create an entry if there is an existing entry with identical content</p>
2703
-
2704
- {isFormFieldValid(formik, "unique") && (
2705
- <Message
2706
- severity="error"
2707
- text={formik?.errors?.unique?.toString()}
2708
- />
2709
- )}
2692
+ <div className="field col-6 flex-flex-column gap-2">
2693
+ <div className="flex align-items-center">
2694
+ <Checkbox
2695
+ name="unique"
2696
+ onChange={(e) => {
2697
+ formik.setFieldValue("unique", e.checked);
2698
+ formik.setFieldValue("isUserKey", false);
2699
+ }}
2700
+ checked={formik.values.unique}
2701
+ ></Checkbox>
2702
+ <label htmlFor="ingredient1" className="form-field-label ml-2">
2703
+ Unique
2704
+ </label>
2710
2705
  </div>
2706
+ <p className="text-xs mt-2">You won't be able to create an entry if there is an existing entry with identical content</p>
2707
+
2708
+ {isFormFieldValid(formik, "unique") && (
2709
+ <Message
2710
+ severity="error"
2711
+ text={formik?.errors?.unique?.toString()}
2712
+ />
2713
+ )}
2714
+ </div>
2711
2715
  )}
2712
2716
  {currentFields.includes("index") && selectedType.value !== 'relation' && (
2713
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2714
- <div className="flex align-items-center">
2715
- <Checkbox
2716
- name="index"
2717
- onChange={(e) => {
2718
- formik.setFieldValue("index", e.checked);
2719
- }}
2720
- checked={formik.values.index}
2721
- ></Checkbox>
2722
- <label htmlFor="ingredient1" className="form-field-label ml-2">
2723
- Index
2724
- </label>
2725
- </div>
2726
- {isFormFieldValid(formik, "index") && (
2727
- <Message
2728
- severity="error"
2729
- text={formik?.errors?.index?.toString()}
2730
- />
2731
- )}
2717
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2718
+ <div className="flex align-items-center">
2719
+ <Checkbox
2720
+ name="index"
2721
+ onChange={(e) => {
2722
+ formik.setFieldValue("index", e.checked);
2723
+ }}
2724
+ checked={formik.values.index}
2725
+ ></Checkbox>
2726
+ <label htmlFor="ingredient1" className="form-field-label ml-2">
2727
+ Index
2728
+ </label>
2732
2729
  </div>
2730
+ {isFormFieldValid(formik, "index") && (
2731
+ <Message
2732
+ severity="error"
2733
+ text={formik?.errors?.index?.toString()}
2734
+ />
2735
+ )}
2736
+ </div>
2733
2737
  )}
2734
2738
  {currentFields.includes("private") && selectedType.value !== 'relation' && (
2735
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2736
- <div className="flex align-items-center">
2737
- <Checkbox
2738
- name="private"
2739
- onChange={(e) => {
2740
- formik.setFieldValue("private", e.checked);
2741
- }}
2742
- checked={formik.values.private}
2743
- ></Checkbox>
2744
- <label htmlFor="ingredient1" className="form-field-label ml-2">
2745
- Private
2746
- </label>
2747
- </div>
2748
- <p className="text-xs mt-2">This field will not show up in the API response</p>
2739
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2740
+ <div className="flex align-items-center">
2741
+ <Checkbox
2742
+ name="private"
2743
+ onChange={(e) => {
2744
+ formik.setFieldValue("private", e.checked);
2745
+ }}
2746
+ checked={formik.values.private}
2747
+ ></Checkbox>
2748
+ <label htmlFor="ingredient1" className="form-field-label ml-2">
2749
+ Private
2750
+ </label>
2751
+ </div>
2752
+ <p className="text-xs mt-2">This field will not show up in the API response</p>
2749
2753
 
2750
2754
 
2751
- {isFormFieldValid(formik, "private") && (
2752
- <Message
2753
- severity="error"
2754
- text={formik?.errors?.private?.toString()}
2755
- />
2756
- )}
2757
- </div>
2755
+ {isFormFieldValid(formik, "private") && (
2756
+ <Message
2757
+ severity="error"
2758
+ text={formik?.errors?.private?.toString()}
2759
+ />
2760
+ )}
2761
+ </div>
2758
2762
  )}
2759
2763
  {currentFields.includes("encrypt") && selectedType.value !== 'relation' && (
2760
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2761
- <div className="flex align-items-center gap-2">
2762
- <Checkbox
2763
- name="encrypt"
2764
- onChange={(e) => {
2765
- formik.setFieldValue("encrypt", e.checked);
2766
- setEncryptState(e.checked);
2767
- }}
2768
- checked={formik.values.encrypt}
2769
- ></Checkbox>
2770
- <label htmlFor="ingredient1" className="form-field-label">
2771
- Encrypt
2772
- </label>
2773
- </div>
2774
- {isFormFieldValid(formik, "encrypt") && (
2775
- <Message
2776
- severity="error"
2777
- text={formik?.errors?.encrypt?.toString()}
2778
- />
2779
- )}
2764
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2765
+ <div className="flex align-items-center gap-2">
2766
+ <Checkbox
2767
+ name="encrypt"
2768
+ onChange={(e) => {
2769
+ formik.setFieldValue("encrypt", e.checked);
2770
+ setEncryptState(e.checked);
2771
+ }}
2772
+ checked={formik.values.encrypt}
2773
+ ></Checkbox>
2774
+ <label htmlFor="ingredient1" className="form-field-label">
2775
+ Encrypt
2776
+ </label>
2780
2777
  </div>
2778
+ {isFormFieldValid(formik, "encrypt") && (
2779
+ <Message
2780
+ severity="error"
2781
+ text={formik?.errors?.encrypt?.toString()}
2782
+ />
2783
+ )}
2784
+ </div>
2781
2785
  )}
2782
2786
  {/* {currentFields.includes("isSystem") && (
2783
2787
  <div className="md:col-6 sm:col-12">
@@ -2804,28 +2808,28 @@ const FieldMetaDataForm = ({ modelMetaData, fieldMetaData, setFieldMetaData, all
2804
2808
  </div>
2805
2809
  )} */}
2806
2810
  {currentFields.includes("isUserKey") && formik.values.unique && (
2807
- <div className="field col-6 flex-flex-column gap-2 mt-3">
2808
- <div className="flex align-items-center gap-2">
2809
- <Checkbox
2810
- name="isUserKey"
2811
- onChange={(e) => {
2812
- formik.setFieldValue("isUserKey", e.checked);
2813
- }}
2814
- checked={formik.values.isUserKey}
2815
- ></Checkbox>
2816
- <label htmlFor="ingredient1" className="form-field-label">
2817
- Is Userkey
2818
- </label>
2819
- </div>
2820
- <p className="fieldSubTitle">By selecting this option, you are setting this field as the model's user key. Any existing user key configuration will be overwritten</p>
2821
-
2822
- {isFormFieldValid(formik, "isUserKey") && (
2823
- <Message
2824
- severity="error"
2825
- text={formik?.errors?.isUserKey?.toString()}
2826
- />
2827
- )}
2811
+ <div className="field col-6 flex-flex-column gap-2 mt-3">
2812
+ <div className="flex align-items-center gap-2">
2813
+ <Checkbox
2814
+ name="isUserKey"
2815
+ onChange={(e) => {
2816
+ formik.setFieldValue("isUserKey", e.checked);
2817
+ }}
2818
+ checked={formik.values.isUserKey}
2819
+ ></Checkbox>
2820
+ <label htmlFor="ingredient1" className="form-field-label">
2821
+ Is Userkey
2822
+ </label>
2828
2823
  </div>
2824
+ <p className="fieldSubTitle">By selecting this option, you are setting this field as the model's user key. Any existing user key configuration will be overwritten</p>
2825
+
2826
+ {isFormFieldValid(formik, "isUserKey") && (
2827
+ <Message
2828
+ severity="error"
2829
+ text={formik?.errors?.isUserKey?.toString()}
2830
+ />
2831
+ )}
2832
+ </div>
2829
2833
  )}
2830
2834
  </div>
2831
2835