@solidxai/core-ui 0.1.12-beta.7 → 0.1.12-beta.9
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/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +19 -17
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +59 -34
- package/dist/components/common/BackendReconnectIndicator.d.ts +6 -0
- package/dist/components/common/BackendReconnectIndicator.d.ts.map +1 -0
- package/dist/components/common/BackendReconnectIndicator.js +25 -0
- package/dist/components/common/BackendReconnectIndicator.js.map +1 -0
- package/dist/components/common/BackendReconnectIndicator.tsx +45 -0
- package/dist/components/common/SettingsComponent.d.ts.map +1 -1
- package/dist/components/common/SettingsComponent.js +7 -3
- package/dist/components/common/SettingsComponent.js.map +1 -1
- package/dist/components/common/SettingsComponent.module.css +144 -12
- package/dist/components/common/SettingsComponent.tsx +22 -3
- package/dist/components/common/SolidAdmin.d.ts.map +1 -1
- package/dist/components/common/SolidAdmin.js +7 -2
- package/dist/components/common/SolidAdmin.js.map +1 -1
- package/dist/components/common/SolidAdmin.tsx +7 -2
- package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
- package/dist/components/common/SolidBreadcrumb.js +1 -6
- package/dist/components/common/SolidBreadcrumb.js.map +1 -1
- package/dist/components/common/SolidBreadcrumb.tsx +1 -8
- package/dist/components/common/SolidMaterialSymbol.d.ts +10 -0
- package/dist/components/common/SolidMaterialSymbol.d.ts.map +1 -0
- package/dist/components/common/SolidMaterialSymbol.js +69 -0
- package/dist/components/common/SolidMaterialSymbol.js.map +1 -0
- package/dist/components/common/SolidMaterialSymbol.tsx +96 -0
- package/dist/components/common/SolidToastProvider.d.ts.map +1 -1
- package/dist/components/common/SolidToastProvider.js +14 -1
- package/dist/components/common/SolidToastProvider.js.map +1 -1
- package/dist/components/common/SolidToastProvider.tsx +19 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +3 -1
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +3 -2
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +14 -18
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +43 -16
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +24 -2
- package/dist/components/core/form/SolidFormFooter.js +1 -1
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +1 -1
- package/dist/components/core/form/SolidFormLayouts.js +1 -1
- package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
- package/dist/components/core/form/SolidFormLayouts.tsx +2 -2
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +120 -56
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +63 -50
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +115 -37
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +36 -35
- package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.js +54 -5
- package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.tsx +71 -7
- package/dist/components/core/form/fields/mediaFieldUtils.d.ts +3 -0
- package/dist/components/core/form/fields/mediaFieldUtils.d.ts.map +1 -0
- package/dist/components/core/form/fields/mediaFieldUtils.js +30 -0
- package/dist/components/core/form/fields/mediaFieldUtils.js.map +1 -0
- package/dist/components/core/form/fields/mediaFieldUtils.ts +45 -0
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +3 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +22 -23
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +13 -7
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +16 -11
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +32 -18
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js +3 -1
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +11 -5
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +3 -2
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +3 -2
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +11 -5
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +15 -8
- package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.js +1 -0
- package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.tsx +1 -0
- package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.js +7 -2
- package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.tsx +7 -2
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js +4 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +5 -2
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js +4 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +5 -2
- package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
- package/dist/components/core/locales/SolidLocale.js +1 -1
- package/dist/components/core/locales/SolidLocale.js.map +1 -1
- package/dist/components/core/locales/SolidLocale.tsx +1 -0
- package/dist/components/core/model/CreateModel.css +26 -0
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +21 -3
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +45 -4
- package/dist/components/core/model/FieldMetaDataForm.css +82 -0
- package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -0
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +246 -235
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +46 -34
- package/dist/components/core/model/FieldSelector.js +1 -1
- package/dist/components/core/model/FieldSelector.js.map +1 -1
- package/dist/components/core/model/FieldSelector.tsx +1 -1
- package/dist/components/core/model/ModelMetaData.js +1 -1
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +1 -1
- package/dist/components/core/module/CreateModule.css +55 -2
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +2 -2
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +3 -2
- package/dist/components/core/module/ModuleMetadataExplorer.css +27 -0
- package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -0
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +6 -1
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +7 -1
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +10 -9
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +2 -0
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +2 -1
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +12 -5
- package/dist/components/layout/SolidMenuItemIcon.d.ts +9 -0
- package/dist/components/layout/SolidMenuItemIcon.d.ts.map +1 -0
- package/dist/components/layout/SolidMenuItemIcon.js +20 -0
- package/dist/components/layout/SolidMenuItemIcon.js.map +1 -0
- package/dist/components/layout/SolidMenuItemIcon.tsx +45 -0
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +6 -7
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +4 -12
- package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.js +30 -2
- package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +38 -1
- package/dist/helpers/backendHealthMonitor.d.ts +39 -0
- package/dist/helpers/backendHealthMonitor.d.ts.map +1 -0
- package/dist/helpers/backendHealthMonitor.js +255 -0
- package/dist/helpers/backendHealthMonitor.js.map +1 -0
- package/dist/helpers/backendHealthMonitor.ts +177 -0
- package/dist/helpers/helpers.d.ts +1 -0
- package/dist/helpers/helpers.d.ts.map +1 -1
- package/dist/helpers/helpers.js +9 -0
- package/dist/helpers/helpers.js.map +1 -1
- package/dist/helpers/helpers.ts +11 -1
- package/dist/helpers/menuItemIcons.d.ts +34 -0
- package/dist/helpers/menuItemIcons.d.ts.map +1 -0
- package/dist/helpers/menuItemIcons.js +144 -0
- package/dist/helpers/menuItemIcons.js.map +1 -0
- package/dist/helpers/menuItemIcons.ts +191 -0
- package/dist/helpers/relationDisplay.d.ts +3 -0
- package/dist/helpers/relationDisplay.d.ts.map +1 -0
- package/dist/helpers/relationDisplay.js +92 -0
- package/dist/helpers/relationDisplay.js.map +1 -0
- package/dist/helpers/relationDisplay.ts +101 -0
- package/dist/helpers/settingsPayload.d.ts +1 -0
- package/dist/helpers/settingsPayload.d.ts.map +1 -1
- package/dist/helpers/settingsPayload.js.map +1 -1
- package/dist/helpers/settingsPayload.ts +1 -0
- package/dist/helpers/solidIcons.d.ts +2 -0
- package/dist/helpers/solidIcons.d.ts.map +1 -1
- package/dist/helpers/solidIcons.js +8 -0
- package/dist/helpers/solidIcons.js.map +1 -1
- package/dist/helpers/solidIcons.tsx +10 -1
- package/dist/helpers/waitForBackendAvailability.d.ts +1 -0
- package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -1
- package/dist/helpers/waitForBackendAvailability.js +35 -22
- package/dist/helpers/waitForBackendAvailability.js.map +1 -1
- package/dist/helpers/waitForBackendAvailability.ts +18 -12
- package/dist/http/solidHttp.d.ts.map +1 -1
- package/dist/http/solidHttp.js +10 -4
- package/dist/http/solidHttp.js.map +1 -1
- package/dist/http/solidHttp.ts +9 -4
- package/dist/redux/api/datasourceIntrospectionApi.d.ts +4 -0
- package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.ts +4 -0
- package/dist/redux/api/fetchBaseQuery.d.ts.map +1 -1
- package/dist/redux/api/fetchBaseQuery.js +9 -3
- package/dist/redux/api/fetchBaseQuery.js.map +1 -1
- package/dist/redux/api/fetchBaseQuery.tsx +9 -3
- package/dist/redux/store/StoreProvider.d.ts.map +1 -1
- package/dist/redux/store/StoreProvider.js +4 -3
- package/dist/redux/store/StoreProvider.js.map +1 -1
- package/dist/redux/store/StoreProvider.tsx +4 -3
- package/dist/resources/globals.css +341 -49
- package/dist/resources/solid-custom.css +410 -12
- package/dist/resources/solid-responsive.css +27 -16
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/AppEventListener.d.ts.map +1 -1
- package/dist/routes/AppEventListener.js +23 -0
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +29 -0
- package/dist/routes/pages/admin/core/DashboardPage.module.css +12 -0
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +306 -3
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +745 -393
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1074 -420
- package/dist/routes/pages/admin/core/DatasourcesPage.css +15 -0
- package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DatasourcesPage.js +7 -188
- package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DatasourcesPage.tsx +3 -393
- package/package.json +3 -2
|
@@ -27,6 +27,7 @@ import { SolidFieldTooltip } from "../../../../components/common/SolidFieldToolt
|
|
|
27
27
|
import { ERROR_MESSAGES } from "../../../../constants/error-messages";
|
|
28
28
|
import styles from "./solidFields.module.css";
|
|
29
29
|
import { SolidIcon } from "../../../shad-cn-ui";
|
|
30
|
+
import { buildMediaFieldKey, getPersistedMediaId } from "./mediaFieldUtils";
|
|
30
31
|
export class SolidMediaMultipleField implements ISolidField {
|
|
31
32
|
|
|
32
33
|
private fieldContext: SolidFieldProps;
|
|
@@ -158,6 +159,7 @@ export class SolidMediaMultipleField implements ISolidField {
|
|
|
158
159
|
|
|
159
160
|
|
|
160
161
|
export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {
|
|
162
|
+
type MediaFileDetail = { name: string; type: string; size: number; mediaId: number | string | null; fileKey: string; fileUrl: string };
|
|
161
163
|
|
|
162
164
|
const fieldMetadata = fieldContext.fieldMetadata;
|
|
163
165
|
const fieldLayoutInfo = fieldContext.field;
|
|
@@ -176,8 +178,7 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
|
|
|
176
178
|
const isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;
|
|
177
179
|
|
|
178
180
|
const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);
|
|
179
|
-
const [
|
|
180
|
-
const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);
|
|
181
|
+
const [fileDetails, setFileDetails] = useState<MediaFileDetail[]>([]);
|
|
181
182
|
const [selectedFileId, setSelectedFileId] = useState<string | null>(null);
|
|
182
183
|
const [fileSizeError, setFileSizeError] = useState<string | null>(null);
|
|
183
184
|
|
|
@@ -186,63 +187,63 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
|
|
|
186
187
|
? `${(size / (1024 * 1024)).toFixed(1)} MB`
|
|
187
188
|
: `${(size / 1024).toFixed(1)} KB`;
|
|
188
189
|
};
|
|
189
|
-
const [
|
|
190
|
-
deleteMedia,
|
|
191
|
-
{ isLoading: isMediaDeleted, isSuccess: isDeleteMediaSuceess, isError: isMediaDeleteError, error: mediaDeleteError, data: DeletedMedia },
|
|
192
|
-
] = useDeleteMediaMutation();
|
|
190
|
+
const [deleteMedia] = useDeleteMediaMutation();
|
|
193
191
|
useEffect(() => {
|
|
194
192
|
const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];
|
|
193
|
+
const objectUrls: string[] = [];
|
|
195
194
|
|
|
196
195
|
if (Array.isArray(fieldValue) && fieldValue.length > 0) {
|
|
197
|
-
const
|
|
198
|
-
const details: { name: string; type: string; size: number, id: any, fileUrl: string }[] = [];
|
|
199
|
-
const objectUrls: string[] = [];
|
|
196
|
+
const details: MediaFileDetail[] = [];
|
|
200
197
|
fieldValue.forEach((file: File | any) => {
|
|
201
198
|
if (file instanceof File) {
|
|
202
|
-
// New file (from local upload)
|
|
203
199
|
const fileUrl = URL.createObjectURL(file);
|
|
204
|
-
objectUrls.push(fileUrl);
|
|
205
|
-
urls.push(fileUrl);
|
|
200
|
+
objectUrls.push(fileUrl);
|
|
206
201
|
|
|
207
202
|
details.push({
|
|
208
203
|
name: file.name,
|
|
209
204
|
type: file.type,
|
|
210
205
|
size: file.size,
|
|
211
|
-
|
|
212
|
-
|
|
206
|
+
mediaId: null,
|
|
207
|
+
fileKey: buildMediaFieldKey(file),
|
|
208
|
+
fileUrl: fileUrl
|
|
213
209
|
});
|
|
214
210
|
} else if (typeof file === "object" && file._full_url) {
|
|
215
|
-
urls.push(file._full_url);
|
|
216
211
|
details.push({
|
|
217
212
|
name: file.originalFileName,
|
|
218
213
|
type: file.mimeType,
|
|
219
214
|
size: file.fileSize,
|
|
220
|
-
|
|
215
|
+
mediaId: getPersistedMediaId(file),
|
|
216
|
+
fileKey: buildMediaFieldKey(file),
|
|
221
217
|
fileUrl: file._full_url
|
|
222
218
|
});
|
|
223
219
|
}
|
|
224
220
|
});
|
|
225
221
|
setFileDetails(details);
|
|
222
|
+
} else {
|
|
223
|
+
setFileDetails([]);
|
|
226
224
|
}
|
|
225
|
+
|
|
226
|
+
return () => {
|
|
227
|
+
objectUrls.forEach((url) => URL.revokeObjectURL(url));
|
|
228
|
+
};
|
|
227
229
|
}, [formik.values, fieldLayoutInfo.attrs.name]);
|
|
228
230
|
|
|
229
231
|
const handleDropImages = (acceptedFiles: any[]) => {
|
|
230
232
|
if (!acceptedFiles.length) return;
|
|
231
233
|
setFileSizeError(null);
|
|
232
|
-
const
|
|
234
|
+
const existingFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])
|
|
235
|
+
? formik.values[fieldLayoutInfo.attrs.name]
|
|
236
|
+
: [];
|
|
233
237
|
acceptedFiles.forEach((file) => {
|
|
234
|
-
newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id, fileUrl: file._full_url });
|
|
235
238
|
const reader = new FileReader();
|
|
236
239
|
reader.readAsDataURL(file);
|
|
237
240
|
});
|
|
238
241
|
|
|
239
|
-
setFileDetails(newFileDetails);
|
|
240
|
-
|
|
241
242
|
fieldContext.onChange(
|
|
242
243
|
{
|
|
243
244
|
target: {
|
|
244
245
|
name: fieldLayoutInfo.attrs.name,
|
|
245
|
-
value: acceptedFiles,
|
|
246
|
+
value: [...existingFiles, ...acceptedFiles],
|
|
246
247
|
type: "text",
|
|
247
248
|
},
|
|
248
249
|
} as any,
|
|
@@ -250,41 +251,53 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
|
|
|
250
251
|
);
|
|
251
252
|
};
|
|
252
253
|
|
|
253
|
-
const confirmDeleteFile = (fileId:
|
|
254
|
+
const confirmDeleteFile = (fileId: string) => {
|
|
254
255
|
setSelectedFileId(fileId);
|
|
255
256
|
setDeleteImageDialogVisible(true);
|
|
256
|
-
setImageToBeDeletedData(deleteId)
|
|
257
257
|
};
|
|
258
258
|
|
|
259
|
-
const deleteFile = () => {
|
|
260
|
-
if (selectedFileId
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const nextValue = fileDetails.filter((file) => `${file.name}-${file.size}` !== selectedFileId);
|
|
269
|
-
fieldContext.onChange(
|
|
270
|
-
{
|
|
271
|
-
target: {
|
|
272
|
-
name: fieldLayoutInfo.attrs.name,
|
|
273
|
-
value: nextValue,
|
|
274
|
-
type: "text",
|
|
275
|
-
},
|
|
276
|
-
} as any,
|
|
277
|
-
"onFieldChange"
|
|
278
|
-
);
|
|
279
|
-
})
|
|
280
|
-
.catch((error) => {
|
|
281
|
-
console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);
|
|
282
|
-
});
|
|
259
|
+
const deleteFile = async () => {
|
|
260
|
+
if (!selectedFileId) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const currentFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])
|
|
265
|
+
? formik.values[fieldLayoutInfo.attrs.name]
|
|
266
|
+
: [];
|
|
267
|
+
const fileToDelete = currentFiles.find((file: File | any) => buildMediaFieldKey(file) === selectedFileId);
|
|
283
268
|
|
|
269
|
+
if (!fileToDelete) {
|
|
284
270
|
setDeleteImageDialogVisible(false);
|
|
285
271
|
setShowAllFiles(false);
|
|
286
272
|
setSelectedFileId(null);
|
|
273
|
+
return;
|
|
287
274
|
}
|
|
275
|
+
|
|
276
|
+
try {
|
|
277
|
+
const persistedMediaId = getPersistedMediaId(fileToDelete);
|
|
278
|
+
if (persistedMediaId !== null) {
|
|
279
|
+
await deleteMedia(persistedMediaId).unwrap();
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const nextValue = currentFiles.filter((file: File | any) => buildMediaFieldKey(file) !== selectedFileId);
|
|
283
|
+
fieldContext.onChange(
|
|
284
|
+
{
|
|
285
|
+
target: {
|
|
286
|
+
name: fieldLayoutInfo.attrs.name,
|
|
287
|
+
value: nextValue,
|
|
288
|
+
type: "text",
|
|
289
|
+
},
|
|
290
|
+
} as any,
|
|
291
|
+
"onFieldChange"
|
|
292
|
+
);
|
|
293
|
+
setFileDetails((prev) => prev.filter((file) => file.fileKey !== selectedFileId));
|
|
294
|
+
} catch (error) {
|
|
295
|
+
console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
setDeleteImageDialogVisible(false);
|
|
299
|
+
setShowAllFiles(false);
|
|
300
|
+
setSelectedFileId(null);
|
|
288
301
|
};
|
|
289
302
|
|
|
290
303
|
const {
|
|
@@ -402,7 +415,7 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
|
|
|
402
415
|
className="solid-file-icon-btn is-danger"
|
|
403
416
|
disabled={isFieldDisabled || isFieldReadonly}
|
|
404
417
|
aria-label="Remove file"
|
|
405
|
-
onClick={() => confirmDeleteFile(
|
|
418
|
+
onClick={() => confirmDeleteFile(fileDetails[0].fileKey)}
|
|
406
419
|
>
|
|
407
420
|
<SolidIcon name="si-times" aria-hidden />
|
|
408
421
|
</button>
|
|
@@ -441,7 +454,7 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
|
|
|
441
454
|
<SolidDialogBody>
|
|
442
455
|
{fileDetails.length > 1 &&
|
|
443
456
|
fileDetails.map((file, index) => {
|
|
444
|
-
const fileId =
|
|
457
|
+
const fileId = file.fileKey;
|
|
445
458
|
return (
|
|
446
459
|
<div key={fileId} className="solid-file-upload-wrapper">
|
|
447
460
|
<div className="flex items-center md:gap-2">
|
|
@@ -464,7 +477,7 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
|
|
|
464
477
|
className="solid-file-icon-btn is-danger"
|
|
465
478
|
disabled={isFieldDisabled || isFieldReadonly}
|
|
466
479
|
aria-label="Remove file"
|
|
467
|
-
onClick={() => confirmDeleteFile(fileId
|
|
480
|
+
onClick={() => confirmDeleteFile(fileId)}
|
|
468
481
|
>
|
|
469
482
|
<SolidIcon name="si-times" aria-hidden />
|
|
470
483
|
</button>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidMediaSingleField.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaSingleField.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAK3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidMediaSingleField.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaSingleField.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAK3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAO9E,qBAAa,qBAAsB,YAAW,WAAW;IAErD,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAyD;IACjF,OAAO,CAAC,eAAe,CAAC,CAA0B;gBACtC,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,IAAI,EAC/G,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;IAM7C,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG;IAOnD,YAAY,IAAI,GAAG;IAKnB,gBAAgB,IAAI,GAAG,CAAC,MAAM;IAyC9B,MAAM,CAAC,MAAM,EAAE,YAAY;IAoC3B,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;CAcjE;AAMD,eAAO,MAAM,gCAAgC,+DAAgE,8BAA8B,4CA4U1I,CAAA;AAED,eAAO,MAAM,gCAAgC,+DAAgE,8BAA8B,4CAqH1I,CAAA"}
|
|
@@ -9,6 +9,42 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
12
48
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
49
|
import { DropzonePlaceholder } from "../../../../components/common/DropzonePlaceholder";
|
|
14
50
|
import { useDeleteMediaMutation } from "../../../../redux/api/mediaApi";
|
|
@@ -26,6 +62,7 @@ import { SolidFieldTooltip } from "../../../../components/common/SolidFieldToolt
|
|
|
26
62
|
import { ERROR_MESSAGES } from "../../../../constants/error-messages";
|
|
27
63
|
import styles from "./solidFields.module.css";
|
|
28
64
|
import { SolidIcon } from "../../../shad-cn-ui";
|
|
65
|
+
import { getPersistedMediaId } from "./mediaFieldUtils";
|
|
29
66
|
var SolidMediaSingleField = /** @class */ (function () {
|
|
30
67
|
function SolidMediaSingleField(fieldContext, setLightboxUrls, setOpenLightbox) {
|
|
31
68
|
Object.defineProperty(this, "fieldContext", {
|
|
@@ -170,23 +207,17 @@ export var DefaultMediaSingleFormEditWidget = function (_a) {
|
|
|
170
207
|
var isFieldDisabled = formDisabled || fieldDisabled;
|
|
171
208
|
var isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;
|
|
172
209
|
var _q = useState(false), isDeleteImageDialogVisible = _q[0], setDeleteImageDialogVisible = _q[1];
|
|
173
|
-
var _r = useState(),
|
|
174
|
-
var _s = useState(
|
|
175
|
-
var _t = useState(
|
|
176
|
-
var _u = useState(null),
|
|
177
|
-
var _v = useState(null), fileSizeError = _v[0], setFileSizeError = _v[1];
|
|
210
|
+
var _r = useState(null), fileDetails = _r[0], setFileDetails = _r[1];
|
|
211
|
+
var _s = useState(false), isReplaceImageDialogVisible = _s[0], setReplaceImageDialogVisible = _s[1];
|
|
212
|
+
var _t = useState(null), newFileToUpload = _t[0], setNewFileToUpload = _t[1];
|
|
213
|
+
var _u = useState(null), fileSizeError = _u[0], setFileSizeError = _u[1];
|
|
178
214
|
var formatFileSize = function (size) {
|
|
179
215
|
return size >= 1024 * 1024
|
|
180
216
|
? "".concat((size / (1024 * 1024)).toFixed(1), " MB")
|
|
181
217
|
: "".concat((size / 1024).toFixed(1), " KB");
|
|
182
218
|
};
|
|
183
|
-
var
|
|
184
|
-
var
|
|
185
|
-
e.stopPropagation();
|
|
186
|
-
if (imageToBeDeletedData) {
|
|
187
|
-
deleteMedia(imageToBeDeletedData);
|
|
188
|
-
}
|
|
189
|
-
e.stopPropagation();
|
|
219
|
+
var deleteMedia = useDeleteMediaMutation()[0];
|
|
220
|
+
var clearSelectedFile = function () {
|
|
190
221
|
setFileDetails(null);
|
|
191
222
|
fieldContext.onChange({
|
|
192
223
|
target: {
|
|
@@ -195,8 +226,48 @@ export var DefaultMediaSingleFormEditWidget = function (_a) {
|
|
|
195
226
|
type: "text",
|
|
196
227
|
},
|
|
197
228
|
}, "onFieldChange");
|
|
198
|
-
setDeleteImageDialogVisible(false);
|
|
199
229
|
};
|
|
230
|
+
var deletePersistedMediaIfNeeded = function (value) { return __awaiter(void 0, void 0, void 0, function () {
|
|
231
|
+
var mediaId;
|
|
232
|
+
return __generator(this, function (_a) {
|
|
233
|
+
switch (_a.label) {
|
|
234
|
+
case 0:
|
|
235
|
+
console.log("DeletePersistedMedia Called");
|
|
236
|
+
mediaId = getPersistedMediaId(value);
|
|
237
|
+
if (!(mediaId !== null)) return [3 /*break*/, 2];
|
|
238
|
+
return [4 /*yield*/, deleteMedia(mediaId).unwrap()];
|
|
239
|
+
case 1:
|
|
240
|
+
_a.sent();
|
|
241
|
+
_a.label = 2;
|
|
242
|
+
case 2: return [2 /*return*/];
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}); };
|
|
246
|
+
var handleCancelUpload = function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
247
|
+
var error_1;
|
|
248
|
+
return __generator(this, function (_a) {
|
|
249
|
+
switch (_a.label) {
|
|
250
|
+
case 0:
|
|
251
|
+
console.log("handleCancelUpload called");
|
|
252
|
+
e.stopPropagation();
|
|
253
|
+
_a.label = 1;
|
|
254
|
+
case 1:
|
|
255
|
+
_a.trys.push([1, 3, , 4]);
|
|
256
|
+
return [4 /*yield*/, deletePersistedMediaIfNeeded(formik === null || formik === void 0 ? void 0 : formik.values[fieldLayoutInfo.attrs.name])];
|
|
257
|
+
case 2:
|
|
258
|
+
_a.sent();
|
|
259
|
+
clearSelectedFile();
|
|
260
|
+
return [3 /*break*/, 4];
|
|
261
|
+
case 3:
|
|
262
|
+
error_1 = _a.sent();
|
|
263
|
+
console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error_1);
|
|
264
|
+
return [3 /*break*/, 4];
|
|
265
|
+
case 4:
|
|
266
|
+
setDeleteImageDialogVisible(false);
|
|
267
|
+
return [2 /*return*/];
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
}); };
|
|
200
271
|
var handleDropImage = function (acceptedFiles) {
|
|
201
272
|
var file = acceptedFiles[0];
|
|
202
273
|
if (!file)
|
|
@@ -229,26 +300,32 @@ export var DefaultMediaSingleFormEditWidget = function (_a) {
|
|
|
229
300
|
},
|
|
230
301
|
}, "onFieldChange");
|
|
231
302
|
};
|
|
232
|
-
var handleReplaceFile = function () {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
303
|
+
var handleReplaceFile = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
304
|
+
var error_2;
|
|
305
|
+
return __generator(this, function (_a) {
|
|
306
|
+
switch (_a.label) {
|
|
307
|
+
case 0:
|
|
308
|
+
_a.trys.push([0, 2, , 3]);
|
|
309
|
+
return [4 /*yield*/, deletePersistedMediaIfNeeded(formik === null || formik === void 0 ? void 0 : formik.values[fieldLayoutInfo.attrs.name])];
|
|
310
|
+
case 1:
|
|
311
|
+
_a.sent();
|
|
312
|
+
clearSelectedFile();
|
|
313
|
+
// Proceed with uploading new file
|
|
314
|
+
if (newFileToUpload) {
|
|
315
|
+
uploadFile(newFileToUpload);
|
|
316
|
+
setNewFileToUpload(null);
|
|
317
|
+
}
|
|
318
|
+
return [3 /*break*/, 3];
|
|
319
|
+
case 2:
|
|
320
|
+
error_2 = _a.sent();
|
|
321
|
+
console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error_2);
|
|
322
|
+
return [3 /*break*/, 3];
|
|
323
|
+
case 3:
|
|
324
|
+
setReplaceImageDialogVisible(false);
|
|
325
|
+
return [2 /*return*/];
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
}); };
|
|
252
329
|
useEffect(function () {
|
|
253
330
|
var fieldValue = formik === null || formik === void 0 ? void 0 : formik.values[fieldLayoutInfo.attrs.name];
|
|
254
331
|
if (fieldValue && typeof fieldValue === "object") {
|
|
@@ -271,13 +348,14 @@ export var DefaultMediaSingleFormEditWidget = function (_a) {
|
|
|
271
348
|
fileUrl: fileUrl,
|
|
272
349
|
fileSize: fileSize
|
|
273
350
|
});
|
|
274
|
-
// Set file ID for delete operation
|
|
275
|
-
setImageToBeDeletedData(fieldValue.id);
|
|
276
351
|
// Ensure formik has the correct value
|
|
277
352
|
formik.setFieldValue(fieldLayoutInfo.attrs.name, fieldValue);
|
|
278
353
|
}
|
|
354
|
+
else {
|
|
355
|
+
setFileDetails(null);
|
|
356
|
+
}
|
|
279
357
|
}, [formik.values, fieldLayoutInfo.attrs.name]);
|
|
280
|
-
var
|
|
358
|
+
var _v = useDropzone({
|
|
281
359
|
onDrop: handleDropImage,
|
|
282
360
|
onDropRejected: function (fileRejections) {
|
|
283
361
|
var _a;
|
|
@@ -293,7 +371,7 @@ export var DefaultMediaSingleFormEditWidget = function (_a) {
|
|
|
293
371
|
accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),
|
|
294
372
|
maxSize: fieldMetadata.mediaMaxSizeKb * 1024,
|
|
295
373
|
disabled: isFieldDisabled || isFieldReadonly
|
|
296
|
-
}), getRootProps =
|
|
374
|
+
}), getRootProps = _v.getRootProps, getInputProps = _v.getInputProps, isDragActive = _v.isDragActive;
|
|
297
375
|
var isFormFieldValid = function (formik, fieldName) { return formik.touched[fieldName] && formik.errors[fieldName]; };
|
|
298
376
|
var DynamicWidget = getExtensionComponent("SolidFormFieldViewMediaSingleWidget");
|
|
299
377
|
var widgetProps = {
|