@solidstarters/solid-core-ui 1.1.47 → 1.1.50

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 (166) hide show
  1. package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
  2. package/dist/components/core/common/FilterComponent.js +26 -10
  3. package/dist/components/core/common/FilterComponent.js.map +1 -1
  4. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  5. package/dist/components/core/common/SolidGlobalSearchElement.js +160 -94
  6. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  7. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  8. package/dist/components/core/form/SolidFormView.js +43 -16
  9. package/dist/components/core/form/SolidFormView.js.map +1 -1
  10. package/dist/components/core/form/fields/ISolidField.d.ts +1 -0
  11. package/dist/components/core/form/fields/ISolidField.d.ts.map +1 -1
  12. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  13. package/dist/components/core/form/fields/SolidBooleanField.js +9 -2
  14. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  15. package/dist/components/core/form/fields/SolidDateField.d.ts.map +1 -1
  16. package/dist/components/core/form/fields/SolidDateField.js +27 -11
  17. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  18. package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
  19. package/dist/components/core/form/fields/SolidDateTimeField.js +28 -11
  20. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  21. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
  22. package/dist/components/core/form/fields/SolidDecimalField.js +24 -5
  23. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  24. package/dist/components/core/form/fields/SolidEmailField.d.ts.map +1 -1
  25. package/dist/components/core/form/fields/SolidEmailField.js +24 -5
  26. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  27. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  28. package/dist/components/core/form/fields/SolidIntegerField.js +24 -5
  29. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  30. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
  31. package/dist/components/core/form/fields/SolidJsonField.js +22 -3
  32. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  33. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  34. package/dist/components/core/form/fields/SolidLongTextField.js +30 -4
  35. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  36. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  37. package/dist/components/core/form/fields/SolidMediaMultipleField.js +52 -29
  38. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  39. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  40. package/dist/components/core/form/fields/SolidMediaSingleField.js +39 -16
  41. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  42. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  43. package/dist/components/core/form/fields/SolidPasswordField.js +23 -3
  44. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  45. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  46. package/dist/components/core/form/fields/SolidRichTextField.js +23 -3
  47. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  48. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  49. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +14 -5
  50. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  51. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
  52. package/dist/components/core/form/fields/SolidSelectionStaticField.js +10 -2
  53. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  54. package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
  55. package/dist/components/core/form/fields/SolidShortTextField.js +28 -8
  56. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  57. package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
  58. package/dist/components/core/form/fields/SolidTimeField.js +27 -8
  59. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  60. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
  61. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +15 -4
  62. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  63. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  64. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +13 -4
  65. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  66. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
  67. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +17 -5
  68. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  69. package/dist/components/core/form/fields/widgets/SolidBooleanCheckboxFieldWidget.js +1 -1
  70. package/dist/components/core/form/fields/widgets/SolidBooleanCheckboxFieldWidget.js.map +1 -1
  71. package/dist/components/core/form/fields/widgets/SolidBooleanSelectFieldWidget.js +1 -1
  72. package/dist/components/core/form/fields/widgets/SolidBooleanSelectFieldWidget.js.map +1 -1
  73. package/dist/components/core/form/fields/widgets/SolidFormFieldJsonViewModeWidget.d.ts +2 -0
  74. package/dist/components/core/form/fields/widgets/SolidFormFieldJsonViewModeWidget.d.ts.map +1 -0
  75. package/dist/components/core/form/fields/widgets/SolidFormFieldJsonViewModeWidget.js +9 -0
  76. package/dist/components/core/form/fields/widgets/SolidFormFieldJsonViewModeWidget.js.map +1 -0
  77. package/dist/components/core/form/fields/widgets/SolidFormFieldMediaViewModeWidget.d.ts +2 -0
  78. package/dist/components/core/form/fields/widgets/SolidFormFieldMediaViewModeWidget.d.ts.map +1 -0
  79. package/dist/components/core/form/fields/widgets/SolidFormFieldMediaViewModeWidget.js +8 -0
  80. package/dist/components/core/form/fields/widgets/SolidFormFieldMediaViewModeWidget.js.map +1 -0
  81. package/dist/components/core/form/fields/widgets/SolidFormFieldPasswordViewModeWidget.d.ts +2 -0
  82. package/dist/components/core/form/fields/widgets/SolidFormFieldPasswordViewModeWidget.d.ts.map +1 -0
  83. package/dist/components/core/form/fields/widgets/SolidFormFieldPasswordViewModeWidget.js +9 -0
  84. package/dist/components/core/form/fields/widgets/SolidFormFieldPasswordViewModeWidget.js.map +1 -0
  85. package/dist/components/core/form/fields/widgets/SolidFormFieldRelationViewModeWidget.d.ts +2 -0
  86. package/dist/components/core/form/fields/widgets/SolidFormFieldRelationViewModeWidget.d.ts.map +1 -0
  87. package/dist/components/core/form/fields/widgets/SolidFormFieldRelationViewModeWidget.js +20 -0
  88. package/dist/components/core/form/fields/widgets/SolidFormFieldRelationViewModeWidget.js.map +1 -0
  89. package/dist/components/core/form/fields/widgets/SolidFormFieldRichTextViewModeWidget.d.ts +2 -0
  90. package/dist/components/core/form/fields/widgets/SolidFormFieldRichTextViewModeWidget.d.ts.map +1 -0
  91. package/dist/components/core/form/fields/widgets/SolidFormFieldRichTextViewModeWidget.js +7 -0
  92. package/dist/components/core/form/fields/widgets/SolidFormFieldRichTextViewModeWidget.js.map +1 -0
  93. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaMultipleWidget.d.ts +3 -0
  94. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaMultipleWidget.d.ts.map +1 -0
  95. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaMultipleWidget.js +74 -0
  96. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaMultipleWidget.js.map +1 -0
  97. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaSingleWidget.d.ts +3 -0
  98. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaSingleWidget.d.ts.map +1 -0
  99. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaSingleWidget.js +58 -0
  100. package/dist/components/core/form/fields/widgets/SolidFormFieldViewMediaSingleWidget.js.map +1 -0
  101. package/dist/components/core/form/fields/widgets/SolidFormFieldViewModeWidget.d.ts +2 -0
  102. package/dist/components/core/form/fields/widgets/SolidFormFieldViewModeWidget.d.ts.map +1 -0
  103. package/dist/components/core/form/fields/widgets/SolidFormFieldViewModeWidget.js +6 -0
  104. package/dist/components/core/form/fields/widgets/SolidFormFieldViewModeWidget.js.map +1 -0
  105. package/dist/components/core/form/fields/widgets/SolidSelectionStaticAutocompleteFieldWidget.js +1 -1
  106. package/dist/components/core/form/fields/widgets/SolidSelectionStaticAutocompleteFieldWidget.js.map +1 -1
  107. package/dist/components/core/form/fields/widgets/SolidSelectionStaticRadioFieldWidget.js +1 -1
  108. package/dist/components/core/form/fields/widgets/SolidSelectionStaticRadioFieldWidget.js.map +1 -1
  109. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  110. package/dist/components/core/kanban/SolidKanbanView.js +37 -14
  111. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  112. package/dist/components/core/list/SolidListView.d.ts +3 -0
  113. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  114. package/dist/components/core/list/SolidListView.js +167 -95
  115. package/dist/components/core/list/SolidListView.js.map +1 -1
  116. package/dist/components/core/model/FieldMetaDataForm.js +1 -1
  117. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  118. package/dist/components/core/users/CreateUser.js +1 -3
  119. package/dist/components/core/users/CreateUser.js.map +1 -1
  120. package/dist/helpers/registry.d.ts.map +1 -1
  121. package/dist/helpers/registry.js +16 -0
  122. package/dist/helpers/registry.js.map +1 -1
  123. package/dist/resources/globals.css +81 -2
  124. package/package.json +1 -1
  125. package/src/components/core/common/FilterComponent.tsx +39 -10
  126. package/src/components/core/common/SolidGlobalSearchElement.tsx +228 -135
  127. package/src/components/core/form/SolidFormView.tsx +69 -21
  128. package/src/components/core/form/fields/ISolidField.tsx +1 -0
  129. package/src/components/core/form/fields/SolidBooleanField.tsx +39 -25
  130. package/src/components/core/form/fields/SolidDateField.tsx +46 -32
  131. package/src/components/core/form/fields/SolidDateTimeField.tsx +47 -34
  132. package/src/components/core/form/fields/SolidDecimalField.tsx +42 -26
  133. package/src/components/core/form/fields/SolidEmailField.tsx +43 -27
  134. package/src/components/core/form/fields/SolidIntegerField.tsx +42 -25
  135. package/src/components/core/form/fields/SolidJsonField.tsx +40 -23
  136. package/src/components/core/form/fields/SolidLongTextField.tsx +86 -53
  137. package/src/components/core/form/fields/SolidMediaMultipleField.tsx +170 -139
  138. package/src/components/core/form/fields/SolidMediaSingleField.tsx +124 -93
  139. package/src/components/core/form/fields/SolidPasswordField.tsx +42 -25
  140. package/src/components/core/form/fields/SolidRichTextField.tsx +41 -24
  141. package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +46 -28
  142. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +38 -22
  143. package/src/components/core/form/fields/SolidShortTextField.tsx +63 -47
  144. package/src/components/core/form/fields/SolidTimeField.tsx +47 -30
  145. package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +30 -8
  146. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +49 -31
  147. package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +38 -19
  148. package/src/components/core/form/fields/widgets/SolidBooleanCheckboxFieldWidget.tsx +1 -1
  149. package/src/components/core/form/fields/widgets/SolidBooleanSelectFieldWidget.tsx +1 -1
  150. package/src/components/core/form/fields/widgets/SolidFormFieldJsonViewModeWidget.tsx +23 -0
  151. package/src/components/core/form/fields/widgets/SolidFormFieldMediaViewModeWidget.tsx +13 -0
  152. package/src/components/core/form/fields/widgets/SolidFormFieldPasswordViewModeWidget.tsx +23 -0
  153. package/src/components/core/form/fields/widgets/SolidFormFieldRelationViewModeWidget.tsx +32 -0
  154. package/src/components/core/form/fields/widgets/SolidFormFieldRichTextViewModeWidget.tsx +17 -0
  155. package/src/components/core/form/fields/widgets/SolidFormFieldViewMediaMultipleWidget.tsx +157 -0
  156. package/src/components/core/form/fields/widgets/SolidFormFieldViewMediaSingleWidget.tsx +98 -0
  157. package/src/components/core/form/fields/widgets/SolidFormFieldViewModeWidget.tsx +11 -0
  158. package/src/components/core/form/fields/widgets/SolidSelectionStaticAutocompleteFieldWidget.tsx +1 -1
  159. package/src/components/core/form/fields/widgets/SolidSelectionStaticRadioFieldWidget.tsx +1 -1
  160. package/src/components/core/kanban/SolidKanbanView.tsx +26 -5
  161. package/src/components/core/list/SolidListView.tsx +166 -105
  162. package/src/components/core/model/FieldMetaDataForm.tsx +1 -1
  163. package/src/components/core/users/CreateUser.tsx +5 -5
  164. package/src/helpers/registry.ts +16 -0
  165. package/src/resources/globals.css +81 -2
  166. package/src/types/solid-core.d.ts +6 -1
@@ -15,6 +15,7 @@ import { ProgressBar } from "primereact/progressbar";
15
15
  import getAcceptedFileTypes from "@/helpers/getAcceptedFileTypes";
16
16
  import Link from "next/link";
17
17
  import { downloadMediaFile } from "@/helpers/downloadMediaFile";
18
+ import { getExtensionComponent } from "@/helpers/registry";
18
19
  export class SolidMediaMultipleField implements ISolidField {
19
20
 
20
21
  private fieldContext: SolidFieldProps;
@@ -94,6 +95,7 @@ export class SolidMediaMultipleField implements ISolidField {
94
95
  const fieldLayoutInfo = this.fieldContext.field;
95
96
  const className = fieldLayoutInfo.attrs?.className || 'field col-12';
96
97
  const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
98
+ const viewMode: string = this.fieldContext.viewMode;
97
99
  const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;
98
100
  const solidFormViewMetaData = this.fieldContext.solidFormViewMetaData;
99
101
  const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
@@ -103,6 +105,7 @@ export class SolidMediaMultipleField implements ISolidField {
103
105
  const [imageToBeDeletedData, setImageToBeDeletedData] = useState<any>();
104
106
  const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);
105
107
  const [selectedFileId, setSelectedFileId] = useState<string | null>(null);
108
+ const [fileSizeError, setFileSizeError] = useState<string | null>(null);
106
109
 
107
110
  const formatFileSize = (size: number) => {
108
111
  return size >= 1024 * 1024
@@ -151,6 +154,7 @@ export class SolidMediaMultipleField implements ISolidField {
151
154
 
152
155
  const handleDropImages = (acceptedFiles: any[]) => {
153
156
  if (!acceptedFiles.length) return;
157
+ setFileSizeError(null);
154
158
  const newFileDetails = [...fileDetails];
155
159
  acceptedFiles.forEach((file) => {
156
160
  newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id, fileUrl: file._full_url });
@@ -199,6 +203,15 @@ export class SolidMediaMultipleField implements ISolidField {
199
203
  isDragActive,
200
204
  } = useDropzone({
201
205
  onDrop: handleDropImages,
206
+ onDropRejected: (fileRejections) => {
207
+ const rejection = fileRejections[0];
208
+ const sizeError = rejection.errors.find(err => err.code === 'file-too-large');
209
+ if (sizeError) {
210
+ setFileSizeError(`File is too large. Max size is ${fieldMetadata.mediaMaxSizeKb} KB.`);
211
+ } else {
212
+ setFileSizeError(rejection.errors[0]?.message || "File not accepted.");
213
+ }
214
+ },
202
215
  accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),
203
216
  maxSize: fieldMetadata.mediaMaxSizeKb * 1024,
204
217
  });
@@ -206,161 +219,179 @@ export class SolidMediaMultipleField implements ISolidField {
206
219
  const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
207
220
 
208
221
  const [isShowAllFiles, setShowAllFiles] = useState(false);
222
+ let DynamicWidget = getExtensionComponent("SolidFormFieldViewMediaMultipleWidget");
223
+ const widgetProps = {
224
+ formik: formik,
225
+ fieldContext: this.fieldContext,
226
+ }
209
227
  return (
210
- <div className={className} style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>
211
- <div className="flex flex-column gap-2 mt-4 relative">
212
- {showFieldLabel != false &&
213
- <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
214
- {fieldMetadata.required && <span className="text-red-500"> *</span>}
215
- {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
216
- </label>
217
- }
218
- <div
219
- {...getRootProps()}
220
- className="solid-dropzone-wrapper"
221
- >
222
- <input {...getInputProps()} />
223
- <DropzonePlaceholder
224
- mediaTypes={fieldMetadata.mediaTypes}
225
- mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}
226
- />
228
+ <>
229
+ {viewMode === "view" &&
230
+ <div className={className}>
231
+ {DynamicWidget && <DynamicWidget {...widgetProps} />}
227
232
  </div>
228
- {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
229
- <div className="absolute mt-1">
230
- <Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
233
+ }
234
+ {viewMode === "edit" &&
235
+ <div className={className} style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>
236
+ <div className="flex flex-column gap-2 mt-4 relative">
237
+ {showFieldLabel != false &&
238
+ <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
239
+ {fieldMetadata.required && <span className="text-red-500"> *</span>}
240
+ {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
241
+ </label>
242
+ }
243
+ <div
244
+ {...getRootProps()}
245
+ className="solid-dropzone-wrapper"
246
+ >
247
+ <input {...getInputProps()} />
248
+ <DropzonePlaceholder
249
+ mediaTypes={fieldMetadata.mediaTypes}
250
+ mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}
251
+ />
252
+ </div>
253
+ {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (
254
+ <div className="absolute mt-1">
255
+ <Message severity="error" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />
256
+ </div>
257
+ )}
258
+ {
259
+ fileSizeError &&
260
+ <Message severity="error" text={fileSizeError?.toString()} />
261
+ }
231
262
  </div>
232
- )}
233
- </div>
234
- {fileDetails.length > 0 &&
235
- <div className="solid-file-upload-wrapper">
236
- <div className="flex align-items-center gap-2">
237
- <FileReaderExt fileDetails={fileDetails[0]} />
238
- <div className="w-full flex flex-column gap-1">
239
- <div className="flex align-items-center justify-content-between">
240
- <Link className="font-normal w-11" href={`${fileDetails[0]?.fileUrl}`} target="_blank">{fileDetails[0].name}</Link>
241
- <div className="flex align-items-center gap-2">
242
- <div>
243
- <Button
244
- type="button"
245
- text
246
- icon={"pi pi-download"}
247
- size="small"
248
- style={{
249
- height: 16,
250
- width: 16
251
- }}
252
- onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}
253
- />
263
+ {fileDetails.length > 0 &&
264
+ <div className="solid-file-upload-wrapper">
265
+ <div className="flex align-items-center gap-2">
266
+ <FileReaderExt fileDetails={fileDetails[0]} />
267
+ <div className="w-full flex flex-column gap-1">
268
+ <div className="flex align-items-center justify-content-between">
269
+ <Link className="font-normal w-11" href={`${fileDetails[0]?.fileUrl}`} target="_blank">{fileDetails[0].name}</Link>
270
+ <div className="flex align-items-center gap-2">
271
+ <div>
272
+ <Button
273
+ type="button"
274
+ text
275
+ icon={"pi pi-download"}
276
+ size="small"
277
+ style={{
278
+ height: 16,
279
+ width: 16
280
+ }}
281
+ onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}
282
+ />
283
+ </div>
284
+ <div>
285
+ <Button
286
+ type="button"
287
+ text
288
+ icon={"pi pi-times"}
289
+ size="small"
290
+ severity="secondary"
291
+ // className="p-2"
292
+ style={{
293
+ height: 16,
294
+ width: 16
295
+ }}
296
+ onClick={() => confirmDeleteFile(`${fileDetails[0].name}-${fileDetails[0].size}`, fileDetails[0].id)}
297
+ />
298
+ </div>
299
+ </div>
254
300
  </div>
255
- <div>
256
- <Button
257
- type="button"
258
- text
259
- icon={"pi pi-times"}
260
- size="small"
261
- severity="secondary"
262
- // className="p-2"
263
- style={{
264
- height: 16,
265
- width: 16
266
- }}
267
- onClick={() => confirmDeleteFile(`${fileDetails[0].name}-${fileDetails[0].size}`, fileDetails[0].id)}
268
- />
301
+ <div className="flex align-items-center gap-2 text-sm">
302
+ {formatFileSize(fileDetails[0].size)}
269
303
  </div>
270
304
  </div>
271
305
  </div>
272
- <div className="flex align-items-center gap-2 text-sm">
273
- {formatFileSize(fileDetails[0].size)}
274
- </div>
275
306
  </div>
276
- </div>
277
- </div>
278
- }
307
+ }
279
308
 
280
- {fileDetails.length > 1 &&
281
- <div className="flex align-items-center mt-1">
282
- <p className="m-0">
283
- {fileDetails.length - 1} items
284
- </p>
285
- <div>
286
- <Button type="button" size="small" text label="View" onClick={() => setShowAllFiles(true)} />
287
- </div>
288
- </div>
289
- }
309
+ {fileDetails.length > 1 &&
310
+ <div className="flex align-items-center mt-1">
311
+ <p className="m-0">
312
+ {fileDetails.length - 1} items
313
+ </p>
314
+ <div>
315
+ <Button type="button" size="small" text label="View" onClick={() => setShowAllFiles(true)} />
316
+ </div>
317
+ </div>
318
+ }
290
319
 
291
- <Dialog
292
- visible={isShowAllFiles}
293
- header="Items Uploaded"
294
- modal
295
- onHide={() => setShowAllFiles(false)}
296
- style={{ minWidth: 450 }}
297
- >
298
- {fileDetails.length > 1 &&
299
- fileDetails.map((file, index) => {
300
- const fileId = `${file.name}-${file.size}`;
301
- return (
302
- <div key={fileId} className="solid-file-upload-wrapper">
303
- <div className="flex align-items-center gap-2">
304
- <FileReaderExt fileDetails={file} />
305
- <div className="w-full flex flex-column gap-1">
306
- <div className="flex align-items-center justify-content-between">
307
- <Link className="font-normal w-11" href={file?.fileUrl} target="_blank">{file.name}</Link>
308
- <div className="flex align-items-center gap-2">
309
- <div>
310
- <Button
311
- type="button"
312
- text
313
- icon={"pi pi-download"}
314
- size="small"
315
- style={{
316
- height: 16,
317
- width: 16
318
- }}
319
- onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}
320
- />
320
+ <Dialog
321
+ visible={isShowAllFiles}
322
+ header="Items Uploaded"
323
+ modal
324
+ onHide={() => setShowAllFiles(false)}
325
+ style={{ minWidth: 450 }}
326
+ >
327
+ {fileDetails.length > 1 &&
328
+ fileDetails.map((file, index) => {
329
+ const fileId = `${file.name}-${file.size}`;
330
+ return (
331
+ <div key={fileId} className="solid-file-upload-wrapper">
332
+ <div className="flex align-items-center gap-2">
333
+ <FileReaderExt fileDetails={file} />
334
+ <div className="w-full flex flex-column gap-1">
335
+ <div className="flex align-items-center justify-content-between">
336
+ <Link className="font-normal w-11" href={file?.fileUrl} target="_blank">{file.name}</Link>
337
+ <div className="flex align-items-center gap-2">
338
+ <div>
339
+ <Button
340
+ type="button"
341
+ text
342
+ icon={"pi pi-download"}
343
+ size="small"
344
+ style={{
345
+ height: 16,
346
+ width: 16
347
+ }}
348
+ onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}
349
+ />
350
+ </div>
351
+ <div>
352
+ <Button
353
+ type="button"
354
+ text
355
+ icon={"pi pi-times"}
356
+ size="small"
357
+ severity="secondary"
358
+ // className="p-2"
359
+ style={{
360
+ height: 16,
361
+ width: 16
362
+ }}
363
+ onClick={() => confirmDeleteFile(fileId, file?.id)}
364
+ />
365
+ </div>
366
+ </div>
321
367
  </div>
322
- <div>
323
- <Button
324
- type="button"
325
- text
326
- icon={"pi pi-times"}
327
- size="small"
328
- severity="secondary"
329
- // className="p-2"
330
- style={{
331
- height: 16,
332
- width: 16
333
- }}
334
- onClick={() => confirmDeleteFile(fileId, file?.id)}
335
- />
368
+ <div className="flex align-items-center gap-2 text-sm">
369
+ {formatFileSize(file.size)}
336
370
  </div>
337
371
  </div>
338
372
  </div>
339
- <div className="flex align-items-center gap-2 text-sm">
340
- {formatFileSize(file.size)}
341
- </div>
342
373
  </div>
343
- </div>
374
+ );
375
+ })
376
+ }
377
+ </Dialog>
378
+ <Dialog
379
+ visible={isDeleteImageDialogVisible}
380
+ header="Confirm Delete"
381
+ modal
382
+ footer={() => (
383
+ <div className="flex justify-content-center">
384
+ <Button type="button" label="Yes" icon="pi pi-check" className='small-button' severity="danger" autoFocus onClick={deleteFile} />
385
+ <Button type="button" label="No" icon="pi pi-times" className='small-button' onClick={() => setDeleteImageDialogVisible(false)} />
344
386
  </div>
345
- );
346
- })
347
- }
348
- </Dialog>
349
- <Dialog
350
- visible={isDeleteImageDialogVisible}
351
- header="Confirm Delete"
352
- modal
353
- footer={() => (
354
- <div className="flex justify-content-center">
355
- <Button type="button" label="Yes" icon="pi pi-check" className='small-button' severity="danger" autoFocus onClick={deleteFile} />
356
- <Button type="button" label="No" icon="pi pi-times" className='small-button' onClick={() => setDeleteImageDialogVisible(false)} />
357
- </div>
358
- )}
359
- onHide={() => setDeleteImageDialogVisible(false)}
360
- >
361
- <p>Are you sure you want to delete image?</p>
362
- </Dialog>
363
- </div >
387
+ )}
388
+ onHide={() => setDeleteImageDialogVisible(false)}
389
+ >
390
+ <p>Are you sure you want to delete image?</p>
391
+ </Dialog>
392
+ </div>
393
+ }
394
+ </>
364
395
  );
365
396
  }
366
397
  }