@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
@@ -0,0 +1,157 @@
1
+ 'use client';
2
+ import { Button } from "primereact/button";
3
+ import { useEffect, useState } from "react";
4
+ import { FileReaderExt } from "@/components/common/FileReaderExt";
5
+ import Link from "next/link";
6
+ import { downloadMediaFile } from "@/helpers/downloadMediaFile";
7
+ import { SolidMediaSingleFieldWidgetProps } from "@/types/solid-core";
8
+ import { Dialog } from "primereact/dialog";
9
+
10
+ export const SolidFormFieldViewMediaMultipleWidget = ({ formik, fieldContext }: SolidMediaSingleFieldWidgetProps) => {
11
+ const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);
12
+ const [isShowAllFiles, setShowAllFiles] = useState(false);
13
+ const fieldMetadata = fieldContext.fieldMetadata;
14
+ const fieldLayoutInfo = fieldContext.field;
15
+ const className = fieldLayoutInfo.attrs?.className || 'field col-12';
16
+ const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
17
+ const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
18
+
19
+ useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, "false") }, [])
20
+
21
+ const formatFileSize = (size: number) => {
22
+ return size >= 1024 * 1024
23
+ ? `${(size / (1024 * 1024)).toFixed(1)} MB`
24
+ : `${(size / 1024).toFixed(1)} KB`;
25
+ };
26
+
27
+ useEffect(() => {
28
+ const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];
29
+
30
+ if (Array.isArray(fieldValue) && fieldValue.length > 0) {
31
+ const urls: string[] = [];
32
+ const details: { name: string; type: string; size: number, id: any, fileUrl: string }[] = [];
33
+ const objectUrls: string[] = [];
34
+ fieldValue.forEach((file: File | any) => {
35
+ if (file instanceof File) {
36
+ // New file (from local upload)
37
+ const fileUrl = URL.createObjectURL(file);
38
+ objectUrls.push(fileUrl); // Store URL for cleanup
39
+ urls.push(fileUrl);
40
+
41
+ details.push({
42
+ name: file.name,
43
+ type: file.type,
44
+ size: file.size,
45
+ id: `${file.name}-${file.size}`,
46
+ fileUrl: fileUrl // ✅ Store the generated object URL
47
+ });
48
+ } else if (typeof file === "object" && file._full_url) {
49
+ urls.push(file._full_url);
50
+ details.push({
51
+ name: file.originalFileName,
52
+ type: file.mimeType,
53
+ size: file.fileSize,
54
+ id: file.id,
55
+ fileUrl: file._full_url
56
+ });
57
+ }
58
+ });
59
+ setFileDetails(details);
60
+ }
61
+ }, [formik.values, fieldLayoutInfo.attrs.name]);
62
+
63
+ return (
64
+ <div className={className}>
65
+ {showFieldLabel != false &&
66
+ <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label mt-4 font-medium">{fieldLabel}
67
+ </label>
68
+ }
69
+ {fileDetails.length > 0 &&
70
+ <div className="solid-file-view-wrapper">
71
+ <div className="flex align-items-center gap-2">
72
+ <FileReaderExt fileDetails={fileDetails[0]} />
73
+ <div className="w-full flex flex-column gap-1">
74
+ <div className="flex align-items-center justify-content-between">
75
+ <Link className="font-normal w-11" href={`${fileDetails[0]?.fileUrl}`} target="_blank">{fileDetails[0].name}</Link>
76
+ <div className="flex align-items-center gap-2">
77
+ <div>
78
+ <Button
79
+ type="button"
80
+ text
81
+ icon={"pi pi-download"}
82
+ size="small"
83
+ style={{
84
+ height: 16,
85
+ width: 16
86
+ }}
87
+ onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}
88
+ />
89
+ </div>
90
+ </div>
91
+ </div>
92
+ <div className="flex align-items-center gap-2 text-sm">
93
+ {formatFileSize(fileDetails[0].size)}
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ }
99
+
100
+ {fileDetails.length > 1 &&
101
+ <div className="flex align-items-center mt-1">
102
+ <p className="m-0">
103
+ {fileDetails.length - 1} items
104
+ </p>
105
+ <div>
106
+ <Button type="button" size="small" text label="View" onClick={() => setShowAllFiles(true)} />
107
+ </div>
108
+ </div>
109
+ }
110
+
111
+ <Dialog
112
+ visible={isShowAllFiles}
113
+ header="Items Uploaded"
114
+ modal
115
+ onHide={() => setShowAllFiles(false)}
116
+ style={{ minWidth: 450 }}
117
+ >
118
+ {fileDetails.length > 1 &&
119
+ fileDetails.map((file, index) => {
120
+ const fileId = `${file.name}-${file.size}`;
121
+ return (
122
+ <div key={fileId} className="solid-file-view-wrapper">
123
+ <div className="flex align-items-center gap-2">
124
+ <FileReaderExt fileDetails={file} />
125
+ <div className="w-full flex flex-column gap-1">
126
+ <div className="flex align-items-center justify-content-between">
127
+ <Link className="font-normal w-11" href={file?.fileUrl} target="_blank">{file.name}</Link>
128
+ <div className="flex align-items-center gap-2">
129
+ <div>
130
+ <Button
131
+ type="button"
132
+ text
133
+ icon={"pi pi-download"}
134
+ size="small"
135
+ style={{
136
+ height: 16,
137
+ width: 16
138
+ }}
139
+ onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}
140
+ />
141
+ </div>
142
+ </div>
143
+ </div>
144
+ <div className="flex align-items-center gap-2 text-sm">
145
+ {formatFileSize(file.size)}
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ );
151
+ })
152
+ }
153
+ </Dialog>
154
+
155
+ </div>
156
+ );
157
+ }
@@ -0,0 +1,98 @@
1
+ 'use client';
2
+ import { Button } from "primereact/button";
3
+ import { useEffect, useState } from "react";
4
+ import { FileReaderExt } from "@/components/common/FileReaderExt";
5
+ import Link from "next/link";
6
+ import { downloadMediaFile } from "@/helpers/downloadMediaFile";
7
+ import { SolidMediaSingleFieldWidgetProps } from "@/types/solid-core";
8
+
9
+ export const SolidFormFieldViewMediaSingleWidget = ({ formik, fieldContext }: SolidMediaSingleFieldWidgetProps) => {
10
+ const [fileDetails, setFileDetails] = useState<{ name: string; type: string, fileUrl: string, fileSize: number } | null>(null);
11
+ const fieldMetadata = fieldContext.fieldMetadata;
12
+ const fieldLayoutInfo = fieldContext.field;
13
+ const className = fieldLayoutInfo.attrs?.className || 'field col-12';
14
+ const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
15
+ const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
16
+
17
+ useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, "false") }, [])
18
+
19
+ const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];
20
+ const formatFileSize = (size: number) => {
21
+ return size >= 1024 * 1024
22
+ ? `${(size / (1024 * 1024)).toFixed(1)} MB`
23
+ : `${(size / 1024).toFixed(1)} KB`;
24
+ };
25
+
26
+ useEffect(() => {
27
+ const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];
28
+
29
+ if (fieldValue && typeof fieldValue === "object") {
30
+ let fileUrl = "";
31
+ let fileName = "Unknown File";
32
+ let fileSize = 0;
33
+
34
+ if (fieldValue instanceof File) {
35
+ fileUrl = URL.createObjectURL(fieldValue);
36
+ fileName = fieldValue.name;
37
+ fileSize = fieldValue.size;
38
+ } else if (fieldValue._full_url) {
39
+ fileUrl = fieldValue._full_url;
40
+ fileName = fieldValue.originalFileName;
41
+ fileSize = fieldValue.fileSize;
42
+ }
43
+
44
+ setFileDetails({
45
+ name: fileName,
46
+ type: fieldValue.mimeType,
47
+ fileUrl,
48
+ fileSize
49
+ });
50
+ // Ensure formik has the correct value
51
+ formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);
52
+ }
53
+ }, [formik.values, fieldLayoutInfo.attrs.name]);
54
+
55
+ return (
56
+ <div className={className}>
57
+ <div className="flex flex-column gap-2 mt-4 relative">
58
+ {showFieldLabel != false &&
59
+ <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label font-medium">{fieldLabel}
60
+ </label>
61
+ }
62
+
63
+ {fileDetails && (
64
+ <div className="solid-file-view-wrapper mt-4">
65
+ <div className="flex align-items-center gap-2">
66
+ <FileReaderExt fileDetails={fileDetails} />
67
+ <div className="w-full flex flex-column gap-1">
68
+ <div className="flex align-items-start justify-content-between">
69
+ <Link className="font-normal w-9 text-primary" href={fileDetails.fileUrl} target="_blank">{fileDetails.name}</Link>
70
+ <div className="flex align-items-center gap-2">
71
+ <div>
72
+ <Button
73
+ type="button"
74
+ text
75
+ icon={"pi pi-download"}
76
+ size="small"
77
+ severity="secondary"
78
+ // className="p-2"
79
+ style={{
80
+ height: 16,
81
+ width: 16
82
+ }}
83
+ onClick={() => downloadMediaFile(fileDetails?.fileUrl, fileDetails?.name)}
84
+ />
85
+ </div>
86
+ </div>
87
+ </div>
88
+ <div className="flex align-items-center gap-2 text-sm">
89
+ {fileDetails && formatFileSize(fileDetails.fileSize)}
90
+ </div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ )}
95
+ </div>
96
+ </div>
97
+ );
98
+ }
@@ -0,0 +1,11 @@
1
+
2
+ export const SolidFormFieldViewModeWidget = ({ label, value }: any) => {
3
+
4
+ return (
5
+ <div className="mt-2 flex-column gap-2">
6
+ <p className="m-0 form-field-label font-medium">{label}</p>
7
+ <p className="m-0">{value}</p>
8
+ </div>
9
+ );
10
+ };
11
+
@@ -39,7 +39,7 @@ export const SolidSelectionStaticAutocompleteWidget = ({ formik, fieldContext }:
39
39
  <div className="relative">
40
40
  <div className="flex flex-column gap-2 mt-4">
41
41
  {showFieldLabel != false &&
42
- <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label">{fieldLabel}
42
+ <label htmlFor={fieldLayoutInfo.attrs.name} className="form-field-label font-medium">{fieldLabel}
43
43
  {fieldMetadata.required && <span className="text-red-500"> *</span>}
44
44
  {/* &nbsp; {fieldDescription && <span className="form_field_help">({fieldDescription}) </span>} */}
45
45
  </label>
@@ -36,7 +36,7 @@ export const SolidSelectionStaticRadioWidget = ({ formik, fieldContext }: SolidS
36
36
  <div className="relative">
37
37
  <div className="flex flex-column gap-2 mt-4">
38
38
  {showFieldLabel !== false && (
39
- <label htmlFor={fieldName} className="form-field-label">
39
+ <label htmlFor={fieldName} className="form-field-label font-medium">
40
40
  {fieldLabel}
41
41
  {fieldMetadata.required && <span className="text-red-500"> *</span>}
42
42
  </label>
@@ -26,6 +26,7 @@ import Counter from "yet-another-react-lightbox/plugins/counter";
26
26
  import Download from "yet-another-react-lightbox/plugins/download";
27
27
  import "yet-another-react-lightbox/styles.css";
28
28
  import "yet-another-react-lightbox/plugins/counter.css";
29
+ import { useRouter, useSearchParams } from "next/navigation";
29
30
 
30
31
 
31
32
 
@@ -38,7 +39,8 @@ type SolidKanbanViewParams = {
38
39
 
39
40
  export const SolidKanbanView = (params: SolidKanbanViewParams) => {
40
41
  const solidGlobalSearchElementRef = useRef();
41
-
42
+ const searchParams = useSearchParams().toString(); // Converts the query params to a string
43
+ const router = useRouter();
42
44
  // TODO: The initial filter state will be created based on the fields which are present on this kanban view.
43
45
  const [filters, setFilters] = useState<any>();
44
46
  const [toPopulate, setToPopulate] = useState<string[]>([]);
@@ -58,9 +60,22 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
58
60
  const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();
59
61
  const [openLightbox, setOpenLightbox] = useState(false);
60
62
  const [lightboxUrls, setLightboxUrls] = useState({});
63
+ const [filterQueryString, setFilterQueryString] = useState<any>();
61
64
 
62
65
 
63
66
 
67
+ const pushFiltersToRouter = (filterQueryString: any) => {
68
+ router.push(`?${filterQueryString}`, undefined, { shallow: true });
69
+ };
70
+
71
+ useEffect(() => {
72
+ if (filterQueryString) {
73
+ pushFiltersToRouter(filterQueryString);
74
+ }
75
+ }, [filterQueryString]);
76
+
77
+
78
+
64
79
  useEffect(() => {
65
80
  const fetchPermissions = async () => {
66
81
  if (params.modelName) {
@@ -286,10 +301,15 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
286
301
  // sort: [`id:desc`],
287
302
  };
288
303
  // fields=status&groupBy=status&fields=count(status)&populateGroup=true
289
- const queryString = qs.stringify(queryData, {
304
+ let queryString = qs.stringify(queryData, {
290
305
  encodeValuesOnly: true
291
306
  });
292
-
307
+ if(searchParams) {
308
+ queryString = searchParams;
309
+ setFilterQueryString(searchParams)
310
+ }else{
311
+ setFilterQueryString(queryString)
312
+ }
293
313
  triggerGetSolidEntities(queryString);
294
314
  setSelectedRecords([]);
295
315
  }
@@ -408,7 +428,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
408
428
  const queryString = qs.stringify(queryData, {
409
429
  encodeValuesOnly: true
410
430
  });
411
-
431
+ setFilterQueryString(queryString);
412
432
  const data: any = await triggerGetSolidEntities(queryString);
413
433
  const newRecords = data.data.records;
414
434
  const currentData = kanbanViewData;
@@ -561,7 +581,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
561
581
  const queryString = qs.stringify(queryData, {
562
582
  encodeValuesOnly: true
563
583
  });
564
-
584
+ setFilterQueryString(queryString);
565
585
  const data: any = await triggerGetSolidEntities(queryString);
566
586
  if (data && data?.data?.groupRecords.length > 0) {
567
587
  const updatedData = [...kanbanViewData, ...data.data.groupRecords];
@@ -600,6 +620,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
600
620
  });
601
621
 
602
622
  // triggerGetSolidEntities(queryString);
623
+ setFilterQueryString(queryString);
603
624
  const data: any = await triggerGetSolidEntities(queryString);
604
625
  if (data && data?.data?.groupRecords.length > 0) {
605
626
  const updatedData = [...data.data.groupRecords];