@solidstarters/solid-core-ui 1.1.27 → 1.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/SolidChangeForcePassword.js +0 -3
- package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
- package/dist/components/common/SolidBreadcrumb.d.ts +6 -1
- package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
- package/dist/components/common/SolidBreadcrumb.js +27 -7
- package/dist/components/common/SolidBreadcrumb.js.map +1 -1
- package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
- package/dist/components/core/common/FilterComponent.js +3 -3
- package/dist/components/core/common/FilterComponent.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.d.ts.map +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.js +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.d.ts.map +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.d.ts.map +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.js +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.js +7 -7
- package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.js +5 -5
- package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDateField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidDateField.js +5 -5
- package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.js +5 -5
- package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.js +5 -5
- package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIdField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidIdField.js +5 -5
- package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIntField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidIntField.js +6 -6
- package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js +5 -5
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.js +5 -5
- package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +5 -5
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js +5 -5
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.js +5 -5
- package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.js +5 -5
- package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.js +5 -5
- package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +5 -5
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +23 -14
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.js +4 -4
- package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateField.js +7 -7
- package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.js +7 -7
- package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.js +4 -4
- package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
- package/dist/components/core/form/fields/SolidEmailField.d.ts +11 -0
- package/dist/components/core/form/fields/SolidEmailField.d.ts.map +1 -0
- package/dist/components/core/form/fields/SolidEmailField.js +75 -0
- package/dist/components/core/form/fields/SolidEmailField.js.map +1 -0
- package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +4 -4
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.js +2 -2
- package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.js +2 -2
- package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +4 -4
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +2 -2
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.d.ts +11 -0
- package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -0
- package/dist/components/core/form/fields/SolidPasswordField.js +73 -0
- package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -0
- package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
- package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js +4 -4
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js +5 -5
- package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js +4 -4
- package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.js +7 -7
- package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +3 -3
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/list/SolidListView.d.ts +2 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +29 -7
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.d.ts +3 -1
- package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.js +3 -3
- package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidDateColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidDateColumn.js +6 -2
- package/dist/components/core/list/columns/SolidDateColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidDatetimeColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidDatetimeColumn.js +6 -2
- package/dist/components/core/list/columns/SolidDatetimeColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidExternalIdColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidExternalIdColumn.js +6 -2
- package/dist/components/core/list/columns/SolidExternalIdColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidIdColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidIdColumn.js +6 -2
- package/dist/components/core/list/columns/SolidIdColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidIntColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidIntColumn.js +6 -2
- package/dist/components/core/list/columns/SolidIntColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +17 -4
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js +10 -3
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionDynamicColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionDynamicColumn.js +6 -2
- package/dist/components/core/list/columns/SolidSelectionDynamicColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionStaticColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionStaticColumn.js +6 -2
- package/dist/components/core/list/columns/SolidSelectionStaticColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.js +6 -2
- package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidTimeColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidTimeColumn.js +6 -2
- package/dist/components/core/list/columns/SolidTimeColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidUuidColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidUuidColumn.js +6 -2
- package/dist/components/core/list/columns/SolidUuidColumn.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/resources/globals.css +16 -2
- package/package.json +6 -2
- package/publish.js +16 -0
- package/src/components/auth/SolidChangeForcePassword.tsx +3 -3
- package/src/components/common/SolidBreadcrumb.tsx +36 -7
- package/src/components/core/common/FilterComponent.tsx +8 -6
- package/src/components/core/common/SolidGlobalSearchElement.tsx +1 -1
- package/src/components/core/filter/SolidManyToOneFilterElement.tsx +8 -7
- package/src/components/core/filter/SolidSelectionDynamicFilterElement.tsx +4 -3
- package/src/components/core/filter/SolidSelectionStaticFilterElement.tsx +4 -3
- package/src/components/core/filter/SolidVarInputsFilterElement.tsx +12 -7
- package/src/components/core/filter/fields/SolidBooleanField.tsx +16 -12
- package/src/components/core/filter/fields/SolidDateField.tsx +17 -13
- package/src/components/core/filter/fields/SolidDatetimeField.tsx +20 -15
- package/src/components/core/filter/fields/SolidExternalIdField.tsx +17 -13
- package/src/components/core/filter/fields/SolidIdField.tsx +25 -21
- package/src/components/core/filter/fields/SolidIntField.tsx +27 -23
- package/src/components/core/filter/fields/SolidMediaMultipleField.tsx +17 -14
- package/src/components/core/filter/fields/SolidMediaSingleField.tsx +17 -14
- package/src/components/core/filter/fields/SolidSelectionDynamicField.tsx +17 -13
- package/src/components/core/filter/fields/SolidSelectionStaticField.tsx +17 -13
- package/src/components/core/filter/fields/SolidShortTextField.tsx +17 -13
- package/src/components/core/filter/fields/SolidTimeField.tsx +17 -12
- package/src/components/core/filter/fields/SolidUuidField.tsx +17 -13
- package/src/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +17 -13
- package/src/components/core/form/SolidFormView.tsx +14 -1
- package/src/components/core/form/fields/SolidBooleanField.tsx +28 -26
- package/src/components/core/form/fields/SolidDateField.tsx +28 -26
- package/src/components/core/form/fields/SolidDateTimeField.tsx +29 -27
- package/src/components/core/form/fields/SolidDecimalField.tsx +20 -18
- package/src/components/core/form/fields/SolidEmailField.tsx +113 -0
- package/src/components/core/form/fields/SolidIntegerField.tsx +24 -22
- package/src/components/core/form/fields/SolidJsonField.tsx +22 -20
- package/src/components/core/form/fields/SolidLongTextField.tsx +24 -22
- package/src/components/core/form/fields/SolidMediaMultipleField.tsx +6 -6
- package/src/components/core/form/fields/SolidMediaSingleField.tsx +2 -2
- package/src/components/core/form/fields/SolidPasswordField.tsx +113 -0
- package/src/components/core/form/fields/SolidRichTextField.tsx +24 -21
- package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +28 -26
- package/src/components/core/form/fields/SolidSelectionStaticField.tsx +30 -28
- package/src/components/core/form/fields/SolidShortTextField.tsx +25 -23
- package/src/components/core/form/fields/SolidTimeField.tsx +29 -27
- package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +17 -15
- package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +1 -1
- package/src/components/core/list/SolidListView.tsx +37 -4
- package/src/components/core/list/SolidListViewColumn.tsx +6 -4
- package/src/components/core/list/columns/SolidDateColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidDatetimeColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidExternalIdColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidIdColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidIntColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidMediaMultipleColumn.tsx +38 -10
- package/src/components/core/list/columns/SolidMediaSingleColumn.tsx +21 -13
- package/src/components/core/list/columns/SolidSelectionDynamicColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidSelectionStaticColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidShortTextColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidTimeColumn.tsx +5 -2
- package/src/components/core/list/columns/SolidUuidColumn.tsx +5 -2
- package/src/components/core/model/FieldMetaDataForm.tsx +1 -1
- package/src/resources/globals.css +16 -2
|
@@ -78,29 +78,31 @@ export class SolidLongTextField implements ISolidField {
|
|
|
78
78
|
|
|
79
79
|
return (
|
|
80
80
|
<div className={className}>
|
|
81
|
-
<div className="
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
{
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
100
|
-
<div className="absolute mt-1">
|
|
101
|
-
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
81
|
+
<div className="relative">
|
|
82
|
+
<div className="flex flex-column gap-2 mt-4">
|
|
83
|
+
{showFieldLabel != false &&
|
|
84
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
85
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
86
|
+
{/* {fieldDescription && <span>({fieldDescription}) </span>} */}
|
|
87
|
+
</label>
|
|
88
|
+
}
|
|
89
|
+
<InputTextarea
|
|
90
|
+
readOnly={formReadonly || fieldReadonly || readOnlyPermission}
|
|
91
|
+
disabled={formDisabled || fieldDisabled}
|
|
92
|
+
id={fieldLayoutInfo.attrs.name}
|
|
93
|
+
aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
|
|
94
|
+
onChange={formik.handleChange}
|
|
95
|
+
value={formik.values[fieldLayoutInfo.attrs.name] || ''}
|
|
96
|
+
rows={5}
|
|
97
|
+
cols={30}
|
|
98
|
+
/>
|
|
102
99
|
</div>
|
|
103
|
-
|
|
100
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
101
|
+
<div className="absolute mt-1">
|
|
102
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
103
|
+
</div>
|
|
104
|
+
)}
|
|
105
|
+
</div>
|
|
104
106
|
</div>
|
|
105
107
|
);
|
|
106
108
|
}
|
|
@@ -208,7 +208,7 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
208
208
|
const [isShowAllFiles, setShowAllFiles] = useState(false);
|
|
209
209
|
return (
|
|
210
210
|
<div className={className} style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>
|
|
211
|
-
<div className="flex flex-column gap-2 mt-4">
|
|
211
|
+
<div className="flex flex-column gap-2 mt-4 relative">
|
|
212
212
|
{showFieldLabel != false &&
|
|
213
213
|
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
214
214
|
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
@@ -225,6 +225,11 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
225
225
|
mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}
|
|
226
226
|
/>
|
|
227
227
|
</div>
|
|
228
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
229
|
+
<div className="absolute mt-1">
|
|
230
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
231
|
+
</div>
|
|
232
|
+
)}
|
|
228
233
|
</div>
|
|
229
234
|
{fileDetails.length > 0 &&
|
|
230
235
|
<div className="solid-file-upload-wrapper">
|
|
@@ -341,11 +346,6 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
341
346
|
})
|
|
342
347
|
}
|
|
343
348
|
</Dialog>
|
|
344
|
-
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
345
|
-
<div className="absolute mt-1">
|
|
346
|
-
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
347
|
-
</div>
|
|
348
|
-
)}
|
|
349
349
|
<Dialog
|
|
350
350
|
visible={isDeleteImageDialogVisible}
|
|
351
351
|
header="Confirm Delete"
|
|
@@ -203,7 +203,7 @@ export class SolidMediaSingleField implements ISolidField {
|
|
|
203
203
|
|
|
204
204
|
return (
|
|
205
205
|
<div className={className} style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>
|
|
206
|
-
<div className="flex flex-column gap-2 mt-4">
|
|
206
|
+
<div className="flex flex-column gap-2 mt-4 relative">
|
|
207
207
|
{showFieldLabel != false &&
|
|
208
208
|
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
209
209
|
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
@@ -226,7 +226,7 @@ export class SolidMediaSingleField implements ISolidField {
|
|
|
226
226
|
</div>
|
|
227
227
|
)}
|
|
228
228
|
{fileDetails && (
|
|
229
|
-
<div className="solid-file-upload-wrapper">
|
|
229
|
+
<div className="solid-file-upload-wrapper mt-4">
|
|
230
230
|
<div className="flex align-items-center gap-2">
|
|
231
231
|
<FileReaderExt fileDetails={fileDetails} />
|
|
232
232
|
<div className="w-full flex flex-column gap-1">
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { InputText } from "primereact/inputtext";
|
|
3
|
+
import { Message } from "primereact/message";
|
|
4
|
+
import * as Yup from 'yup';
|
|
5
|
+
import { Schema } from "yup";
|
|
6
|
+
import { FormikObject, ISolidField, SolidFieldProps } from "./ISolidField";
|
|
7
|
+
import { Password } from "primereact/password";
|
|
8
|
+
|
|
9
|
+
export class SolidPasswordField implements ISolidField {
|
|
10
|
+
|
|
11
|
+
private fieldContext: SolidFieldProps;
|
|
12
|
+
|
|
13
|
+
constructor(fieldContext: SolidFieldProps) {
|
|
14
|
+
this.fieldContext = fieldContext;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
updateFormData(value: any, formData: FormData): any {
|
|
18
|
+
const fieldLayoutInfo = this.fieldContext.field;
|
|
19
|
+
if (value) {
|
|
20
|
+
formData.append(fieldLayoutInfo.attrs.name, value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
initialValue(): any {
|
|
25
|
+
const fieldName = this.fieldContext.field.attrs.name;
|
|
26
|
+
const fieldDefaultValue = this.fieldContext?.fieldMetadata?.defaultValue;
|
|
27
|
+
|
|
28
|
+
const existingValue = this.fieldContext.data[fieldName];
|
|
29
|
+
|
|
30
|
+
return existingValue !== undefined && existingValue !== null ? existingValue : fieldDefaultValue || '';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
validationSchema(): Schema {
|
|
34
|
+
let schema: Yup.StringSchema<string | null | undefined> = Yup.string();
|
|
35
|
+
|
|
36
|
+
const fieldMetadata = this.fieldContext.fieldMetadata;
|
|
37
|
+
const fieldLayoutInfo = this.fieldContext.field;
|
|
38
|
+
const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
|
|
39
|
+
|
|
40
|
+
// 1. required
|
|
41
|
+
// 1. required
|
|
42
|
+
if (fieldMetadata.required) {
|
|
43
|
+
schema = schema.required(`${fieldLabel} is required.`);
|
|
44
|
+
} else {
|
|
45
|
+
schema = schema.nullable(); // Allow null when not required
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// 2. length (min/max)
|
|
49
|
+
if (fieldMetadata.min && fieldMetadata.min > 0) {
|
|
50
|
+
schema = schema.min(fieldMetadata.min, `${fieldLabel} should be at-least ${fieldMetadata.min} characters long.`);
|
|
51
|
+
}
|
|
52
|
+
if (fieldMetadata.max && fieldMetadata.max > 0) {
|
|
53
|
+
schema = schema.max(fieldMetadata.max, `${fieldLabel} should not be more than ${fieldMetadata.max} characters long.`);
|
|
54
|
+
}
|
|
55
|
+
// 3. regular expression
|
|
56
|
+
if (fieldMetadata.regexPattern) {
|
|
57
|
+
const regexPatternNotMatchingErrorMsg = fieldMetadata.regexPatternNotMatchingErrorMsg ?? `${fieldLabel} has invalid data.`
|
|
58
|
+
schema = schema.matches(fieldMetadata.regexPattern, regexPatternNotMatchingErrorMsg);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return schema;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
render(formik: FormikObject) {
|
|
65
|
+
const fieldMetadata = this.fieldContext.fieldMetadata;
|
|
66
|
+
const fieldLayoutInfo = this.fieldContext.field;
|
|
67
|
+
const className = fieldLayoutInfo.attrs?.className || 'field col-12';
|
|
68
|
+
const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
|
|
69
|
+
const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
|
|
70
|
+
const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
|
|
71
|
+
const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
|
|
72
|
+
const readOnlyPermission = this.fieldContext.readOnly;
|
|
73
|
+
|
|
74
|
+
const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
|
|
75
|
+
|
|
76
|
+
const fieldDisabled = fieldLayoutInfo.attrs?.disabled;
|
|
77
|
+
const fieldReadonly = fieldLayoutInfo.attrs?.readonly;
|
|
78
|
+
|
|
79
|
+
const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;
|
|
80
|
+
const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;
|
|
81
|
+
|
|
82
|
+
return (
|
|
83
|
+
<div className={className}>
|
|
84
|
+
<div className="relative">
|
|
85
|
+
<div className="flex flex-column gap-2 mt-4">
|
|
86
|
+
{showFieldLabel != false &&
|
|
87
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">
|
|
88
|
+
{fieldLabel}
|
|
89
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
90
|
+
</label>
|
|
91
|
+
}
|
|
92
|
+
<Password
|
|
93
|
+
id={fieldLayoutInfo.attrs.name}
|
|
94
|
+
name={fieldMetadata.name}
|
|
95
|
+
value={formik.values[fieldLayoutInfo.attrs.name] || ''}
|
|
96
|
+
onChange={(e) => this.fieldContext.onChange(e, 'onFieldChange')}
|
|
97
|
+
onBlur={(e) => this.fieldContext.onBlur(e, 'onFieldBlur')}
|
|
98
|
+
readOnly={formReadonly || fieldReadonly || readOnlyPermission}
|
|
99
|
+
disabled={formDisabled || fieldDisabled}
|
|
100
|
+
toggleMask
|
|
101
|
+
/>
|
|
102
|
+
|
|
103
|
+
</div>
|
|
104
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
105
|
+
<div className="absolute mt-1">
|
|
106
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
107
|
+
</div>
|
|
108
|
+
)}
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -76,28 +76,31 @@ export class SolidRichTextField implements ISolidField {
|
|
|
76
76
|
|
|
77
77
|
return (
|
|
78
78
|
<div className={className}>
|
|
79
|
-
<div className="
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<div className="absolute mt-1">
|
|
98
|
-
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
79
|
+
<div className="relative">
|
|
80
|
+
<div className="flex flex-column gap-2 mt-4">
|
|
81
|
+
{showFieldLabel != false &&
|
|
82
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
83
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
84
|
+
{/* {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
|
|
85
|
+
</label>
|
|
86
|
+
}
|
|
87
|
+
<Editor
|
|
88
|
+
readOnly={formReadonly || fieldReadonly || readOnlyPermission}
|
|
89
|
+
disabled={formDisabled || fieldDisabled}
|
|
90
|
+
key={fieldLayoutInfo.attrs.name} // React will re-render the component whenever this value changes
|
|
91
|
+
id={fieldLayoutInfo.attrs.name}
|
|
92
|
+
value={formik.values[fieldLayoutInfo.attrs.name]}
|
|
93
|
+
onTextChange={e => formik.setFieldValue(fieldLayoutInfo.attrs.name, e.htmlValue)}
|
|
94
|
+
style={{ height: "320px" }}
|
|
95
|
+
className="solid-custom-editor"
|
|
96
|
+
/>
|
|
99
97
|
</div>
|
|
100
|
-
|
|
98
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
99
|
+
<div className="absolute mt-1">
|
|
100
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
101
|
+
</div>
|
|
102
|
+
)}
|
|
103
|
+
</div>
|
|
101
104
|
</div>
|
|
102
105
|
);
|
|
103
106
|
}
|
|
@@ -95,33 +95,35 @@ export class SolidSelectionDynamicField implements ISolidField {
|
|
|
95
95
|
|
|
96
96
|
return (
|
|
97
97
|
<div className={className}>
|
|
98
|
-
<div className="
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
{
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
121
|
-
<div className="absolute mt-1">
|
|
122
|
-
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
98
|
+
<div className="relative">
|
|
99
|
+
<div className="flex flex-column gap-2 mt-4">
|
|
100
|
+
{showFieldLabel != false &&
|
|
101
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
102
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
103
|
+
{/* {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
|
|
104
|
+
</label>
|
|
105
|
+
}
|
|
106
|
+
<AutoComplete
|
|
107
|
+
readOnly={formReadonly || fieldReadonly || readOnlyPermission}
|
|
108
|
+
disabled={formDisabled || fieldDisabled}
|
|
109
|
+
{...formik.getFieldProps(fieldLayoutInfo.attrs.name)}
|
|
110
|
+
id={fieldLayoutInfo.attrs.name}
|
|
111
|
+
field="label"
|
|
112
|
+
value={formik.values[fieldLayoutInfo.attrs.name] || ''}
|
|
113
|
+
dropdown
|
|
114
|
+
suggestions={selectionDynamicItems}
|
|
115
|
+
completeMethod={selectionDynamicSearch}
|
|
116
|
+
// onChange={(e) => updateInputs(index, e.value)} />
|
|
117
|
+
onChange={formik.handleChange}
|
|
118
|
+
className="solid-standard-autocomplete"
|
|
119
|
+
/>
|
|
123
120
|
</div>
|
|
124
|
-
|
|
121
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
122
|
+
<div className="absolute mt-1">
|
|
123
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
124
|
+
</div>
|
|
125
|
+
)}
|
|
126
|
+
</div>
|
|
125
127
|
</div>
|
|
126
128
|
);
|
|
127
129
|
}
|
|
@@ -100,35 +100,37 @@ export class SolidSelectionStaticField implements ISolidField {
|
|
|
100
100
|
|
|
101
101
|
return (
|
|
102
102
|
<div className={className}>
|
|
103
|
-
<div className="
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
{
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
128
|
-
<div className="absolute mt-1">
|
|
129
|
-
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
103
|
+
<div className="relative">
|
|
104
|
+
<div className="flex flex-column gap-2 mt-4">
|
|
105
|
+
{showFieldLabel != false &&
|
|
106
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
107
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
108
|
+
{/* {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
|
|
109
|
+
</label>
|
|
110
|
+
}
|
|
111
|
+
<AutoComplete
|
|
112
|
+
readOnly={formReadonly || fieldReadonly || readOnlyPermission}
|
|
113
|
+
disabled={formDisabled || fieldDisabled}
|
|
114
|
+
{...formik.getFieldProps(fieldLayoutInfo.attrs.name)}
|
|
115
|
+
id={fieldLayoutInfo.attrs.name}
|
|
116
|
+
name={fieldLayoutInfo.attrs.name}
|
|
117
|
+
field="label"
|
|
118
|
+
value={formik.values[fieldLayoutInfo.attrs.name] || ''}
|
|
119
|
+
dropdown
|
|
120
|
+
suggestions={selectionStaticItems}
|
|
121
|
+
completeMethod={selectionStaticSearch}
|
|
122
|
+
// onChange={(e) => updateInputs(index, e.value)} />
|
|
123
|
+
// onChange={formik.handleChange}
|
|
124
|
+
onChange={(e) => this.fieldContext.onChange(e, 'onFieldChange')}
|
|
125
|
+
className="solid-standard-autocomplete"
|
|
126
|
+
/>
|
|
130
127
|
</div>
|
|
131
|
-
|
|
128
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
129
|
+
<div className="absolute mt-1">
|
|
130
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
131
|
+
</div>
|
|
132
|
+
)}
|
|
133
|
+
</div>
|
|
132
134
|
</div>
|
|
133
135
|
);
|
|
134
136
|
}
|
|
@@ -82,30 +82,32 @@ export class SolidShortTextField implements ISolidField {
|
|
|
82
82
|
return (
|
|
83
83
|
<>
|
|
84
84
|
{includeWrapper === 'yes' && <div className={className}>
|
|
85
|
-
<div className="
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
{
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
105
|
-
<div className="absolute mt-1">
|
|
106
|
-
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
85
|
+
<div className="relative">
|
|
86
|
+
<div className="flex flex-column gap-2 mt-4">
|
|
87
|
+
{showFieldLabel != false &&
|
|
88
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
89
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
90
|
+
{/* {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
|
|
91
|
+
</label>
|
|
92
|
+
}
|
|
93
|
+
<InputText
|
|
94
|
+
readOnly={formReadonly || fieldReadonly || readOnlyPermission}
|
|
95
|
+
disabled={formDisabled || fieldDisabled}
|
|
96
|
+
id={fieldLayoutInfo.attrs.name}
|
|
97
|
+
name={fieldMetadata.name}
|
|
98
|
+
aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
|
|
99
|
+
// onChange={formik.handleChange}
|
|
100
|
+
onChange={(e) => this.fieldContext.onChange(e, 'onFieldChange')}
|
|
101
|
+
onBlur={(e) => this.fieldContext.onBlur(e, 'onFieldBlur')}
|
|
102
|
+
value={formik.values[fieldLayoutInfo.attrs.name] || ''}
|
|
103
|
+
/>
|
|
107
104
|
</div>
|
|
108
|
-
|
|
105
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
106
|
+
<div className="absolute mt-1">
|
|
107
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
108
|
+
</div>
|
|
109
|
+
)}
|
|
110
|
+
</div>
|
|
109
111
|
</div>}
|
|
110
112
|
{includeWrapper === 'no' &&
|
|
111
113
|
<>
|
|
@@ -61,35 +61,37 @@ export class SolidTimeField implements ISolidField {
|
|
|
61
61
|
|
|
62
62
|
return (
|
|
63
63
|
<div className={className}>
|
|
64
|
-
<div className="
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
64
|
+
<div className="relative">
|
|
65
|
+
<div className="flex flex-column gap-2 mt-4">
|
|
66
|
+
{showFieldLabel != false &&
|
|
67
|
+
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
|
|
68
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
69
|
+
{/* {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
|
|
70
|
+
</label>
|
|
71
|
+
}
|
|
72
|
+
<Calendar
|
|
73
|
+
disabled={formDisabled || fieldDisabled || readOnlyPermission}
|
|
74
|
+
ref={calendarRef} // Attach ref to Calendar
|
|
75
|
+
id={fieldLayoutInfo.attrs.name}
|
|
76
|
+
aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}
|
|
77
|
+
onChange={formik.handleChange}
|
|
78
|
+
//@ts-ignore
|
|
79
|
+
value={formik.values[fieldLayoutInfo.attrs.name] ? formik.values[fieldLayoutInfo.attrs.name] : Date()}
|
|
80
|
+
// dateFormat="mm/dd/yy"
|
|
81
|
+
// placeholder="mm/dd/yyyy hh:mm"
|
|
82
|
+
hideOnDateTimeSelect
|
|
83
|
+
timeOnly
|
|
84
|
+
showTime className=""
|
|
85
|
+
hourFormat="24"
|
|
85
86
|
|
|
86
|
-
|
|
87
|
-
</div>
|
|
88
|
-
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
89
|
-
<div className="absolute mt-1">
|
|
90
|
-
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
87
|
+
/>
|
|
91
88
|
</div>
|
|
92
|
-
|
|
89
|
+
{isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
|
|
90
|
+
<div className="absolute mt-1">
|
|
91
|
+
<Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
|
|
92
|
+
</div>
|
|
93
|
+
)}
|
|
94
|
+
</div>
|
|
93
95
|
</div>
|
|
94
96
|
);
|
|
95
97
|
}
|
|
@@ -242,28 +242,30 @@ export class SolidRelationManyToManyField implements ISolidField {
|
|
|
242
242
|
|
|
243
243
|
return (
|
|
244
244
|
<div className={className}>
|
|
245
|
-
<div className="
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
245
|
+
<div className="relative">
|
|
246
|
+
<div className="flex align-items-center gap-3">
|
|
247
|
+
{showFieldLabel != false &&
|
|
248
|
+
<label className="form-field-label">
|
|
249
|
+
{capitalize(fieldLayoutInfo.attrs.name)}
|
|
250
|
+
{fieldMetadata.required && <span className="text-red-500"> *</span>}
|
|
251
|
+
</label>
|
|
252
|
+
}
|
|
253
|
+
{fieldLayoutInfo.attrs.inlineCreate === "true" &&
|
|
254
|
+
this.renderSolidFormEmbededView(formik, customCreateHandler, visibleCreateRelationEntity, setvisibleCreateRelationEntity)
|
|
255
|
+
}
|
|
256
|
+
<div className="many-to-many-add" >
|
|
257
|
+
{/* <Button icon="pi pi-plus"
|
|
257
258
|
rounded
|
|
258
259
|
outlined
|
|
259
260
|
aria-label="Filter"
|
|
260
261
|
type="button"
|
|
261
262
|
onClick={() => autoCompleteSearch()}
|
|
262
263
|
/> */}
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
<div>
|
|
267
|
+
{options.togglerElement}
|
|
263
268
|
</div>
|
|
264
|
-
</div>
|
|
265
|
-
<div>
|
|
266
|
-
{options.togglerElement}
|
|
267
269
|
</div>
|
|
268
270
|
</div>
|
|
269
271
|
);
|
|
@@ -137,7 +137,7 @@ export class SolidRelationManyToOneField implements ISolidField {
|
|
|
137
137
|
}
|
|
138
138
|
return (
|
|
139
139
|
<div className={className}>
|
|
140
|
-
<div className="mt-4">
|
|
140
|
+
<div className="mt-4 relative">
|
|
141
141
|
{showFieldLabel != false &&
|
|
142
142
|
<label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">
|
|
143
143
|
{fieldLabel}
|