@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
|
@@ -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
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
49
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
50
|
if (ar || !(i in from)) {
|
|
@@ -35,6 +71,7 @@ import { SolidFieldTooltip } from "../../../../components/common/SolidFieldToolt
|
|
|
35
71
|
import { ERROR_MESSAGES } from "../../../../constants/error-messages";
|
|
36
72
|
import styles from "./solidFields.module.css";
|
|
37
73
|
import { SolidIcon } from "../../../shad-cn-ui";
|
|
74
|
+
import { buildMediaFieldKey, getPersistedMediaId } from "./mediaFieldUtils";
|
|
38
75
|
var SolidMediaMultipleField = /** @class */ (function () {
|
|
39
76
|
function SolidMediaMultipleField(fieldContext, setLightboxUrls, setOpenLightbox) {
|
|
40
77
|
Object.defineProperty(this, "fieldContext", {
|
|
@@ -185,100 +222,127 @@ export var DefaultMediaMultipleFormEditWidget = function (_a) {
|
|
|
185
222
|
var isFieldDisabled = formDisabled || fieldDisabled;
|
|
186
223
|
var isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;
|
|
187
224
|
var _q = useState(false), isDeleteImageDialogVisible = _q[0], setDeleteImageDialogVisible = _q[1];
|
|
188
|
-
var _r = useState(),
|
|
189
|
-
var _s = useState(
|
|
190
|
-
var _t = useState(null),
|
|
191
|
-
var _u = useState(null), fileSizeError = _u[0], setFileSizeError = _u[1];
|
|
225
|
+
var _r = useState([]), fileDetails = _r[0], setFileDetails = _r[1];
|
|
226
|
+
var _s = useState(null), selectedFileId = _s[0], setSelectedFileId = _s[1];
|
|
227
|
+
var _t = useState(null), fileSizeError = _t[0], setFileSizeError = _t[1];
|
|
192
228
|
var formatFileSize = function (size) {
|
|
193
229
|
return size >= 1024 * 1024
|
|
194
230
|
? "".concat((size / (1024 * 1024)).toFixed(1), " MB")
|
|
195
231
|
: "".concat((size / 1024).toFixed(1), " KB");
|
|
196
232
|
};
|
|
197
|
-
var
|
|
233
|
+
var deleteMedia = useDeleteMediaMutation()[0];
|
|
198
234
|
useEffect(function () {
|
|
199
235
|
var fieldValue = formik === null || formik === void 0 ? void 0 : formik.values[fieldLayoutInfo.attrs.name];
|
|
236
|
+
var objectUrls = [];
|
|
200
237
|
if (Array.isArray(fieldValue) && fieldValue.length > 0) {
|
|
201
|
-
var urls_1 = [];
|
|
202
238
|
var details_1 = [];
|
|
203
|
-
var objectUrls_1 = [];
|
|
204
239
|
fieldValue.forEach(function (file) {
|
|
205
240
|
if (file instanceof File) {
|
|
206
|
-
// New file (from local upload)
|
|
207
241
|
var fileUrl = URL.createObjectURL(file);
|
|
208
|
-
|
|
209
|
-
urls_1.push(fileUrl);
|
|
242
|
+
objectUrls.push(fileUrl);
|
|
210
243
|
details_1.push({
|
|
211
244
|
name: file.name,
|
|
212
245
|
type: file.type,
|
|
213
246
|
size: file.size,
|
|
214
|
-
|
|
215
|
-
|
|
247
|
+
mediaId: null,
|
|
248
|
+
fileKey: buildMediaFieldKey(file),
|
|
249
|
+
fileUrl: fileUrl
|
|
216
250
|
});
|
|
217
251
|
}
|
|
218
252
|
else if (typeof file === "object" && file._full_url) {
|
|
219
|
-
urls_1.push(file._full_url);
|
|
220
253
|
details_1.push({
|
|
221
254
|
name: file.originalFileName,
|
|
222
255
|
type: file.mimeType,
|
|
223
256
|
size: file.fileSize,
|
|
224
|
-
|
|
257
|
+
mediaId: getPersistedMediaId(file),
|
|
258
|
+
fileKey: buildMediaFieldKey(file),
|
|
225
259
|
fileUrl: file._full_url
|
|
226
260
|
});
|
|
227
261
|
}
|
|
228
262
|
});
|
|
229
263
|
setFileDetails(details_1);
|
|
230
264
|
}
|
|
265
|
+
else {
|
|
266
|
+
setFileDetails([]);
|
|
267
|
+
}
|
|
268
|
+
return function () {
|
|
269
|
+
objectUrls.forEach(function (url) { return URL.revokeObjectURL(url); });
|
|
270
|
+
};
|
|
231
271
|
}, [formik.values, fieldLayoutInfo.attrs.name]);
|
|
232
272
|
var handleDropImages = function (acceptedFiles) {
|
|
233
273
|
if (!acceptedFiles.length)
|
|
234
274
|
return;
|
|
235
275
|
setFileSizeError(null);
|
|
236
|
-
var
|
|
276
|
+
var existingFiles = Array.isArray(formik === null || formik === void 0 ? void 0 : formik.values[fieldLayoutInfo.attrs.name])
|
|
277
|
+
? formik.values[fieldLayoutInfo.attrs.name]
|
|
278
|
+
: [];
|
|
237
279
|
acceptedFiles.forEach(function (file) {
|
|
238
|
-
newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id, fileUrl: file._full_url });
|
|
239
280
|
var reader = new FileReader();
|
|
240
281
|
reader.readAsDataURL(file);
|
|
241
282
|
});
|
|
242
|
-
setFileDetails(newFileDetails);
|
|
243
283
|
fieldContext.onChange({
|
|
244
284
|
target: {
|
|
245
285
|
name: fieldLayoutInfo.attrs.name,
|
|
246
|
-
value: acceptedFiles,
|
|
286
|
+
value: __spreadArray(__spreadArray([], existingFiles, true), acceptedFiles, true),
|
|
247
287
|
type: "text",
|
|
248
288
|
},
|
|
249
289
|
}, "onFieldChange");
|
|
250
290
|
};
|
|
251
|
-
var confirmDeleteFile = function (fileId
|
|
291
|
+
var confirmDeleteFile = function (fileId) {
|
|
252
292
|
setSelectedFileId(fileId);
|
|
253
293
|
setDeleteImageDialogVisible(true);
|
|
254
|
-
setImageToBeDeletedData(deleteId);
|
|
255
294
|
};
|
|
256
|
-
var deleteFile = function () {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
295
|
+
var deleteFile = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
296
|
+
var currentFiles, fileToDelete, persistedMediaId, nextValue, error_1;
|
|
297
|
+
return __generator(this, function (_a) {
|
|
298
|
+
switch (_a.label) {
|
|
299
|
+
case 0:
|
|
300
|
+
if (!selectedFileId) {
|
|
301
|
+
return [2 /*return*/];
|
|
302
|
+
}
|
|
303
|
+
currentFiles = Array.isArray(formik === null || formik === void 0 ? void 0 : formik.values[fieldLayoutInfo.attrs.name])
|
|
304
|
+
? formik.values[fieldLayoutInfo.attrs.name]
|
|
305
|
+
: [];
|
|
306
|
+
fileToDelete = currentFiles.find(function (file) { return buildMediaFieldKey(file) === selectedFileId; });
|
|
307
|
+
if (!fileToDelete) {
|
|
308
|
+
setDeleteImageDialogVisible(false);
|
|
309
|
+
setShowAllFiles(false);
|
|
310
|
+
setSelectedFileId(null);
|
|
311
|
+
return [2 /*return*/];
|
|
312
|
+
}
|
|
313
|
+
_a.label = 1;
|
|
314
|
+
case 1:
|
|
315
|
+
_a.trys.push([1, 4, , 5]);
|
|
316
|
+
persistedMediaId = getPersistedMediaId(fileToDelete);
|
|
317
|
+
if (!(persistedMediaId !== null)) return [3 /*break*/, 3];
|
|
318
|
+
return [4 /*yield*/, deleteMedia(persistedMediaId).unwrap()];
|
|
319
|
+
case 2:
|
|
320
|
+
_a.sent();
|
|
321
|
+
_a.label = 3;
|
|
322
|
+
case 3:
|
|
323
|
+
nextValue = currentFiles.filter(function (file) { return buildMediaFieldKey(file) !== selectedFileId; });
|
|
324
|
+
fieldContext.onChange({
|
|
325
|
+
target: {
|
|
326
|
+
name: fieldLayoutInfo.attrs.name,
|
|
327
|
+
value: nextValue,
|
|
328
|
+
type: "text",
|
|
329
|
+
},
|
|
330
|
+
}, "onFieldChange");
|
|
331
|
+
setFileDetails(function (prev) { return prev.filter(function (file) { return file.fileKey !== selectedFileId; }); });
|
|
332
|
+
return [3 /*break*/, 5];
|
|
333
|
+
case 4:
|
|
334
|
+
error_1 = _a.sent();
|
|
335
|
+
console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error_1);
|
|
336
|
+
return [3 /*break*/, 5];
|
|
337
|
+
case 5:
|
|
338
|
+
setDeleteImageDialogVisible(false);
|
|
339
|
+
setShowAllFiles(false);
|
|
340
|
+
setSelectedFileId(null);
|
|
341
|
+
return [2 /*return*/];
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
}); };
|
|
345
|
+
var _u = useDropzone({
|
|
282
346
|
onDrop: handleDropImages,
|
|
283
347
|
onDropRejected: function (fileRejections) {
|
|
284
348
|
var _a;
|
|
@@ -294,9 +358,9 @@ export var DefaultMediaMultipleFormEditWidget = function (_a) {
|
|
|
294
358
|
},
|
|
295
359
|
accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),
|
|
296
360
|
maxSize: fieldMetadata.mediaMaxSizeKb * 1024,
|
|
297
|
-
}), getRootProps =
|
|
361
|
+
}), getRootProps = _u.getRootProps, getInputProps = _u.getInputProps, isDragActive = _u.isDragActive;
|
|
298
362
|
var isFormFieldValid = function (formik, fieldName) { return formik.touched[fieldName] && formik.errors[fieldName]; };
|
|
299
|
-
var
|
|
363
|
+
var _v = useState(false), isShowAllFiles = _v[0], setShowAllFiles = _v[1];
|
|
300
364
|
var DynamicWidget = getExtensionComponent("SolidFormFieldViewMediaMultipleWidget");
|
|
301
365
|
var widgetProps = {
|
|
302
366
|
formik: formik,
|
|
@@ -334,11 +398,11 @@ export var DefaultMediaMultipleFormEditWidget = function (_a) {
|
|
|
334
398
|
return (_jsxs("div", { style: readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}, children: [_jsxs("div", { className: "".concat(styles.fieldWrapper, " relative"), children: [showFieldLabel != false &&
|
|
335
399
|
_jsxs("label", { htmlFor: fieldLayoutInfo.attrs.name, className: "".concat(styles.fieldLabel, " form-field-label"), children: [fieldLabel, fieldMetadata.required && _jsx("span", { className: "text-red-500", children: " *" }), _jsx(SolidFieldTooltip, { fieldContext: fieldContext })] }), _jsxs("div", { className: "relative", children: [_jsxs("div", __assign({}, getRootProps(), { className: "solid-dropzone-wrapper", children: [_jsx("input", __assign({}, getInputProps())), _jsx(DropzonePlaceholder, { mediaTypes: fieldMetadata.mediaTypes, mediaMaxSizeKb: fieldMetadata.mediaMaxSizeKb })] })), isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (_jsx("div", { className: "absolute mt-1", children: _jsx(SolidMessage, { severity: "error", text: (_p = formik === null || formik === void 0 ? void 0 : formik.errors[fieldLayoutInfo.attrs.name]) === null || _p === void 0 ? void 0 : _p.toString() }) }))] }), fileSizeError &&
|
|
336
400
|
_jsx(SolidMessage, { severity: "error", text: fileSizeError === null || fileSizeError === void 0 ? void 0 : fileSizeError.toString() })] }), fileDetails.length > 0 &&
|
|
337
|
-
_jsx("div", { className: "solid-file-upload-wrapper", children: _jsxs("div", { className: "flex items-center md:gap-2", children: [_jsx(FileReaderExt, { fileDetails: fileDetails[0] }), _jsxs("div", { className: "w-full flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "m-0 w-9 font-normal text-[var(--primary-color)] solid-img-text-wrapper", style: { cursor: 'pointer' }, onClick: function () { return handleFileView(fileDetails[0]); }, children: fileDetails[0].name }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function () { var _a, _b; return downloadMediaFile((_a = fileDetails[0]) === null || _a === void 0 ? void 0 : _a.fileUrl, (_b = fileDetails[0]) === null || _b === void 0 ? void 0 : _b.name); }, children: _jsx(SolidIcon, { name: "si-download", "aria-hidden": true }) }), _jsx("button", { type: "button", className: "solid-file-icon-btn is-danger", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Remove file", onClick: function () { return confirmDeleteFile(
|
|
401
|
+
_jsx("div", { className: "solid-file-upload-wrapper", children: _jsxs("div", { className: "flex items-center md:gap-2", children: [_jsx(FileReaderExt, { fileDetails: fileDetails[0] }), _jsxs("div", { className: "w-full flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "m-0 w-9 font-normal text-[var(--primary-color)] solid-img-text-wrapper", style: { cursor: 'pointer' }, onClick: function () { return handleFileView(fileDetails[0]); }, children: fileDetails[0].name }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function () { var _a, _b; return downloadMediaFile((_a = fileDetails[0]) === null || _a === void 0 ? void 0 : _a.fileUrl, (_b = fileDetails[0]) === null || _b === void 0 ? void 0 : _b.name); }, children: _jsx(SolidIcon, { name: "si-download", "aria-hidden": true }) }), _jsx("button", { type: "button", className: "solid-file-icon-btn is-danger", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Remove file", onClick: function () { return confirmDeleteFile(fileDetails[0].fileKey); }, children: _jsx(SolidIcon, { name: "si-times", "aria-hidden": true }) })] })] }), _jsx("div", { className: "flex items-center gap-2 text-sm", children: formatFileSize(fileDetails[0].size) })] })] }) }), fileDetails.length > 1 &&
|
|
338
402
|
_jsxs("div", { className: "flex items-center mt-1", children: [_jsxs("p", { className: "m-0", children: [fileDetails.length - 1, " items"] }), _jsx("div", { children: _jsx(SolidButton, { type: "button", size: "sm", variant: "ghost", onClick: function () { return setShowAllFiles(true); }, children: "View" }) })] }), _jsxs(SolidDialog, { open: isShowAllFiles, onOpenChange: setShowAllFiles, style: { minWidth: 450 }, children: [_jsxs(SolidDialogHeader, { children: [_jsx(SolidDialogTitle, { children: "Items Uploaded" }), _jsx(SolidDialogClose, {})] }), _jsx(SolidDialogBody, { children: fileDetails.length > 1 &&
|
|
339
403
|
fileDetails.map(function (file, index) {
|
|
340
|
-
var fileId =
|
|
341
|
-
return (_jsx("div", { className: "solid-file-upload-wrapper", children: _jsxs("div", { className: "flex items-center md:gap-2", children: [_jsx(FileReaderExt, { fileDetails: file }), _jsxs("div", { className: "w-full flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "m-0 w-11 font-normal text-[var(--primary-color)] solid-img-text-wrapper", style: { cursor: 'pointer' }, onClick: function () { return handleFileView(file); }, children: file.name }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function () { return downloadMediaFile(file === null || file === void 0 ? void 0 : file.fileUrl, file === null || file === void 0 ? void 0 : file.name); }, children: _jsx(SolidIcon, { name: "si-download", "aria-hidden": true }) }), _jsx("button", { type: "button", className: "solid-file-icon-btn is-danger", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Remove file", onClick: function () { return confirmDeleteFile(fileId
|
|
404
|
+
var fileId = file.fileKey;
|
|
405
|
+
return (_jsx("div", { className: "solid-file-upload-wrapper", children: _jsxs("div", { className: "flex items-center md:gap-2", children: [_jsx(FileReaderExt, { fileDetails: file }), _jsxs("div", { className: "w-full flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "m-0 w-11 font-normal text-[var(--primary-color)] solid-img-text-wrapper", style: { cursor: 'pointer' }, onClick: function () { return handleFileView(file); }, children: file.name }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function () { return downloadMediaFile(file === null || file === void 0 ? void 0 : file.fileUrl, file === null || file === void 0 ? void 0 : file.name); }, children: _jsx(SolidIcon, { name: "si-download", "aria-hidden": true }) }), _jsx("button", { type: "button", className: "solid-file-icon-btn is-danger", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Remove file", onClick: function () { return confirmDeleteFile(fileId); }, children: _jsx(SolidIcon, { name: "si-times", "aria-hidden": true }) })] })] }), _jsx("div", { className: "flex items-center gap-2 text-sm", children: formatFileSize(file.size) })] })] }) }, fileId));
|
|
342
406
|
}) })] }), _jsxs(SolidDialog, { open: isDeleteImageDialogVisible, onOpenChange: setDeleteImageDialogVisible, className: "solid-shadcn-confirm-dialog", children: [_jsxs(SolidDialogHeader, { className: "solid-shadcn-dialog-head", children: [_jsx(SolidDialogTitle, { children: "Confirm Delete" }), _jsx(SolidDialogClose, {})] }), _jsx(SolidDialogSeparator, { className: "solid-shadcn-dialog-sep" }), _jsx(SolidDialogBody, { className: "solid-shadcn-dialog-body", children: _jsx("p", { className: "solid-shadcn-dialog-text", children: "Are you sure you want to delete this file?" }) }), _jsxs(SolidDialogFooter, { className: "solid-shadcn-dialog-actions", children: [_jsx(SolidButton, { variant: "destructive", size: "sm", autoFocus: true, onClick: deleteFile, children: "Delete" }), _jsx(SolidButton, { variant: "outline", size: "sm", onClick: function () { return setDeleteImageDialogVisible(false); }, children: "Cancel" })] })] })] }));
|
|
343
407
|
};
|
|
344
408
|
export var DefaultMediaMultipleFormViewWidget = function (_a) {
|
|
@@ -360,15 +424,15 @@ export var DefaultMediaMultipleFormViewWidget = function (_a) {
|
|
|
360
424
|
useEffect(function () {
|
|
361
425
|
var fieldValue = formik === null || formik === void 0 ? void 0 : formik.values[fieldLayoutInfo.attrs.name];
|
|
362
426
|
if (Array.isArray(fieldValue) && fieldValue.length > 0) {
|
|
363
|
-
var
|
|
427
|
+
var urls_1 = [];
|
|
364
428
|
var details_2 = [];
|
|
365
|
-
var
|
|
429
|
+
var objectUrls_1 = [];
|
|
366
430
|
fieldValue.forEach(function (file) {
|
|
367
431
|
if (file instanceof File) {
|
|
368
432
|
// New file (from local upload)
|
|
369
433
|
var fileUrl = URL.createObjectURL(file);
|
|
370
|
-
|
|
371
|
-
|
|
434
|
+
objectUrls_1.push(fileUrl); // Store URL for cleanup
|
|
435
|
+
urls_1.push(fileUrl);
|
|
372
436
|
details_2.push({
|
|
373
437
|
name: file.name,
|
|
374
438
|
type: file.type,
|
|
@@ -378,7 +442,7 @@ export var DefaultMediaMultipleFormViewWidget = function (_a) {
|
|
|
378
442
|
});
|
|
379
443
|
}
|
|
380
444
|
else if (typeof file === "object" && file._full_url) {
|
|
381
|
-
|
|
445
|
+
urls_1.push(file._full_url);
|
|
382
446
|
details_2.push({
|
|
383
447
|
name: file.originalFileName,
|
|
384
448
|
type: file.mimeType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidMediaMultipleField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaMultipleField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { DropzonePlaceholder } from \"../../../../components/common/DropzonePlaceholder\";\nimport { DropzoneUpload } from \"../../../../components/common/DropzoneUpload\";\nimport { useDeleteMediaMutation } from \"../../../../redux/api/mediaApi\";\nimport { SolidButton } from \"../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../shad-cn-ui/SolidMessage\";\nimport { SolidProgressBar } from \"../../../shad-cn-ui/SolidProgressBar\";\nimport { useEffect, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { FileReaderExt } from \"../../../../components/common/FileReaderExt\";\nimport getAcceptedFileTypes from \"../../../../helpers/getAcceptedFileTypes\";\nimport { downloadMediaFile } from \"../../../../helpers/downloadMediaFile\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps, SolidMediaFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\nimport styles from \"./solidFields.module.css\";\nimport { SolidIcon } from \"../../../shad-cn-ui\";\nexport class SolidMediaMultipleField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n private setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void;\n private setOpenLightbox?: (open: boolean) => void;\n constructor(fieldContext: SolidFieldProps, setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void,\n setOpenLightbox?: (open: boolean) => void) {\n this.fieldContext = fieldContext;\n this.setLightboxUrls = setLightboxUrls;\n this.setOpenLightbox = setOpenLightbox;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n // @ts-ignore\n for (let i = 0; i < value.length; i++) {\n // @ts-ignore\n const file = value[i];\n if (file instanceof File) {\n formData.append(fieldLayoutInfo.attrs.name, file);\n }\n }\n }\n\n initialValue(): any {\n const mediaUrls = this.fieldContext.data && this.fieldContext.data._media && this.fieldContext.data._media[this.fieldContext.field.attrs.name].map((i: any) => i)\n return mediaUrls;\n }\n\n validationSchema(): Yup.Schema {\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.label ?? fieldMetadata.displayName;\n\n let schema: Yup.ArraySchema<any, any, any, any>; // Correctly specifying type arguments for ArraySchema\n if (fieldMetadata.required) {\n // For required fields: disallow null, undefined, and empty arrays\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel))\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value instanceof File || typeof value === \"object\" // Validate File or object\n )\n )\n .min(1, ERROR_MESSAGES.FIELD_MUST_HAVE_ITEM(fieldLabel)); // Ensure array has at least one item\n } else {\n // For optional fields: allow null, undefined, or an empty array\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .nullable() // Allow null explicitly\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value === null || // Allow null\n value === undefined || // Allow undefined\n value instanceof File || // Allow File\n typeof value === \"object\" // Allow object\n )\n )\n .nullable() // Allow null array explicitly\n .test(\n ERROR_MESSAGES.EMPTY_VALID_ARRAY,\n ERROR_MESSAGES.CONTAIN_EMPTY_ARRAY_OR_FILE_OBECT(fieldLabel),\n (value) => value === null || value === undefined || Array.isArray(value)\n );\n }\n\n\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultMediaMultipleFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultMediaMultipleFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" &&\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidMediaFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n setLightboxUrls: this.setLightboxUrls,\n setOpenLightbox: this.setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\nexport const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const viewMode: string = fieldContext.viewMode;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly ? fieldContext.readOnly : fieldLayoutInfo.attrs.readonly;\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const isFieldDisabled = formDisabled || fieldDisabled;\n const isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;\n\n const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);\n const [imageToBeDeletedData, setImageToBeDeletedData] = useState<any>();\n const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);\n const [selectedFileId, setSelectedFileId] = useState<string | null>(null);\n const [fileSizeError, setFileSizeError] = useState<string | null>(null);\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n const [\n deleteMedia,\n { isLoading: isMediaDeleted, isSuccess: isDeleteMediaSuceess, isError: isMediaDeleteError, error: mediaDeleteError, data: DeletedMedia },\n ] = useDeleteMediaMutation();\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n\n if (Array.isArray(fieldValue) && fieldValue.length > 0) {\n const urls: string[] = [];\n const details: { name: string; type: string; size: number, id: any, fileUrl: string }[] = [];\n const objectUrls: string[] = [];\n fieldValue.forEach((file: File | any) => {\n if (file instanceof File) {\n // New file (from local upload)\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl); // Store URL for cleanup\n urls.push(fileUrl);\n\n details.push({\n name: file.name,\n type: file.type,\n size: file.size,\n id: `${file.name}-${file.size}`,\n fileUrl: fileUrl // ✅ Store the generated object URL\n });\n } else if (typeof file === \"object\" && file._full_url) {\n urls.push(file._full_url);\n details.push({\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n id: file.id,\n fileUrl: file._full_url\n });\n }\n });\n setFileDetails(details);\n }\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleDropImages = (acceptedFiles: any[]) => {\n if (!acceptedFiles.length) return;\n setFileSizeError(null);\n const newFileDetails = [...fileDetails];\n acceptedFiles.forEach((file) => {\n newFileDetails.push({ name: file.name, type: file.type, size: file.size, id: file.id, fileUrl: file._full_url });\n const reader = new FileReader();\n reader.readAsDataURL(file);\n });\n\n setFileDetails(newFileDetails);\n\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: acceptedFiles,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const confirmDeleteFile = (fileId: any, deleteId: number) => {\n setSelectedFileId(fileId);\n setDeleteImageDialogVisible(true);\n setImageToBeDeletedData(deleteId)\n };\n\n const deleteFile = () => {\n if (selectedFileId && imageToBeDeletedData) {\n // Remove file from UI before making API call\n setFileDetails((prev) => prev.filter((file) => `${file.name}-${file.size}` !== selectedFileId));\n\n deleteMedia(imageToBeDeletedData)\n .unwrap()\n .then(() => {\n // Update form state\n const nextValue = fileDetails.filter((file) => `${file.name}-${file.size}` !== selectedFileId);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: nextValue,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n })\n .catch((error) => {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n });\n\n setDeleteImageDialogVisible(false);\n setShowAllFiles(false);\n setSelectedFileId(null);\n }\n };\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n } = useDropzone({\n onDrop: handleDropImages,\n onDropRejected: (fileRejections) => {\n const rejection = fileRejections[0];\n const sizeError = rejection.errors.find(err => err.code === 'file-too-large');\n if (sizeError) {\n setFileSizeError(ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb));\n ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb)\n } else {\n setFileSizeError(rejection.errors[0]?.message || ERROR_MESSAGES.FILE_NOT_ACCEPT);\n }\n },\n accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),\n maxSize: fieldMetadata.mediaMaxSizeKb * 1024,\n });\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldViewMediaMultipleWidget\");\n const widgetProps = {\n formik: formik,\n fieldContext: fieldContext,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n\n const handleFileView = (url: any) => {\n const downloadOnlyExt = [\n \"txt\", \"zip\", \"rar\",\n \"doc\", \"docx\",\n \"xls\", \"xlsx\",\n \"ppt\", \"pptx\"\n ];\n\n const fileUrl = url?.fileUrl || \"\";\n const cleanUrl = fileUrl.split(\"?\")[0];\n const ext = cleanUrl.split(\".\").pop()?.toLowerCase();\n\n if (ext && downloadOnlyExt.includes(ext)) {\n const link = document.createElement('a');\n link.href = url.fileUrl;\n link.download = ''; // or specify a file name like 'file.pdf'\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n } else {\n setLightboxUrls?.([\n { src: url.fileUrl, downloadUrl: url.fileUrl },\n ]);\n setOpenLightbox?.(true);\n }\n }\n\n\n return (\n <div style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>\n <div className={`${styles.fieldWrapper} relative`}>\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n {/* {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <div className=\"relative\">\n <div\n {...getRootProps()}\n className=\"solid-dropzone-wrapper\"\n >\n <input {...getInputProps()} />\n <DropzonePlaceholder\n mediaTypes={fieldMetadata.mediaTypes}\n mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <SolidMessage severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n {\n fileSizeError &&\n <SolidMessage severity=\"error\" text={fileSizeError?.toString()} />\n }\n </div>\n {fileDetails.length > 0 &&\n <div className=\"solid-file-upload-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={fileDetails[0]} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"m-0 w-9 font-normal text-[var(--primary-color)] solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(fileDetails[0])}>{fileDetails[0].name}</p>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(`${fileDetails[0].name}-${fileDetails[0].size}`, fileDetails[0].id)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(fileDetails[0].size)}\n </div>\n </div>\n </div>\n </div>\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = `${file.name}-${file.size}`;\n return (\n <div key={fileId} className=\"solid-file-upload-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={file} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"m-0 w-11 font-normal text-[var(--primary-color)] solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(file)}>{file.name}</p>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(fileId, file?.id)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={isDeleteImageDialogVisible}\n onOpenChange={setDeleteImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to delete this file?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" autoFocus onClick={deleteFile}>\n Delete\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setDeleteImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n\nexport const DefaultMediaMultipleFormViewWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n // useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, \"false\") }, [])\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n\n if (Array.isArray(fieldValue) && fieldValue.length > 0) {\n const urls: string[] = [];\n const details: { name: string; type: string; size: number, id: any, fileUrl: string }[] = [];\n const objectUrls: string[] = [];\n fieldValue.forEach((file: File | any) => {\n if (file instanceof File) {\n // New file (from local upload)\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl); // Store URL for cleanup\n urls.push(fileUrl);\n\n details.push({\n name: file.name,\n type: file.type,\n size: file.size,\n id: `${file.name}-${file.size}`,\n fileUrl: fileUrl // ✅ Store the generated object URL\n });\n } else if (typeof file === \"object\" && file._full_url) {\n urls.push(file._full_url);\n details.push({\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n id: file.id,\n fileUrl: file._full_url\n });\n }\n });\n setFileDetails(details);\n }\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleFileView = (url: any) => {\n const downloadOnlyExt = [\n \"txt\", \"zip\", \"rar\",\n \"doc\", \"docx\",\n \"xls\", \"xlsx\",\n \"ppt\", \"pptx\"\n ];\n\n const fileUrl = url?.fileUrl || \"\";\n const cleanUrl = fileUrl.split(\"?\")[0];\n const ext = cleanUrl.split(\".\").pop()?.toLowerCase();\n\n if (ext && downloadOnlyExt.includes(ext)) {\n const link = document.createElement('a');\n link.href = url.fileUrl;\n link.download = ''; // or specify a file name like 'file.pdf'\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n } else {\n setLightboxUrls?.([\n { src: url.fileUrl, downloadUrl: url.fileUrl },\n ]);\n setOpenLightbox?.(true);\n }\n }\n\n return (\n <div className={styles.fieldViewWrapper}>\n {showFieldLabel != false &&\n <p className={`${styles.fieldViewLabel} form-field-label`}>\n {fieldLabel}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </p>\n }\n {fileDetails.length > 0 &&\n <div className=\"solid-file-view-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={fileDetails[0]} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"m-0 w-11 font-normal text-[var(--primary-color)] solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(fileDetails[0])}>{fileDetails[0].name}</p>\n <div className=\"flex items-center md:gap-2\">\n <div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n icon=\"si si-download\"\n size=\"sm\"\n style={{\n height: 16,\n width: 16\n }}\n onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}\n />\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(fileDetails[0].size)}\n </div>\n </div>\n </div>\n </div>\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = `${file.name}-${file.size}`;\n return (\n <div key={fileId} className=\"solid-file-view-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={file} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"font-normal w-11 solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(file)}>{file.name}</p>\n <div className=\"flex items-center md:gap-2\">\n <div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n icon=\"si si-download\"\n size=\"sm\"\n style={{\n height: 16,\n width: 16\n }}\n onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}\n />\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidMediaMultipleField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaMultipleField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { DropzonePlaceholder } from \"../../../../components/common/DropzonePlaceholder\";\nimport { DropzoneUpload } from \"../../../../components/common/DropzoneUpload\";\nimport { useDeleteMediaMutation } from \"../../../../redux/api/mediaApi\";\nimport { SolidButton } from \"../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../shad-cn-ui/SolidMessage\";\nimport { SolidProgressBar } from \"../../../shad-cn-ui/SolidProgressBar\";\nimport { useEffect, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { FileReaderExt } from \"../../../../components/common/FileReaderExt\";\nimport getAcceptedFileTypes from \"../../../../helpers/getAcceptedFileTypes\";\nimport { downloadMediaFile } from \"../../../../helpers/downloadMediaFile\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps, SolidMediaFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\nimport styles from \"./solidFields.module.css\";\nimport { SolidIcon } from \"../../../shad-cn-ui\";\nimport { buildMediaFieldKey, getPersistedMediaId } from \"./mediaFieldUtils\";\nexport class SolidMediaMultipleField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n private setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void;\n private setOpenLightbox?: (open: boolean) => void;\n constructor(fieldContext: SolidFieldProps, setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void,\n setOpenLightbox?: (open: boolean) => void) {\n this.fieldContext = fieldContext;\n this.setLightboxUrls = setLightboxUrls;\n this.setOpenLightbox = setOpenLightbox;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n // @ts-ignore\n for (let i = 0; i < value.length; i++) {\n // @ts-ignore\n const file = value[i];\n if (file instanceof File) {\n formData.append(fieldLayoutInfo.attrs.name, file);\n }\n }\n }\n\n initialValue(): any {\n const mediaUrls = this.fieldContext.data && this.fieldContext.data._media && this.fieldContext.data._media[this.fieldContext.field.attrs.name].map((i: any) => i)\n return mediaUrls;\n }\n\n validationSchema(): Yup.Schema {\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.label ?? fieldMetadata.displayName;\n\n let schema: Yup.ArraySchema<any, any, any, any>; // Correctly specifying type arguments for ArraySchema\n if (fieldMetadata.required) {\n // For required fields: disallow null, undefined, and empty arrays\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel))\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value instanceof File || typeof value === \"object\" // Validate File or object\n )\n )\n .min(1, ERROR_MESSAGES.FIELD_MUST_HAVE_ITEM(fieldLabel)); // Ensure array has at least one item\n } else {\n // For optional fields: allow null, undefined, or an empty array\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .nullable() // Allow null explicitly\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value === null || // Allow null\n value === undefined || // Allow undefined\n value instanceof File || // Allow File\n typeof value === \"object\" // Allow object\n )\n )\n .nullable() // Allow null array explicitly\n .test(\n ERROR_MESSAGES.EMPTY_VALID_ARRAY,\n ERROR_MESSAGES.CONTAIN_EMPTY_ARRAY_OR_FILE_OBECT(fieldLabel),\n (value) => value === null || value === undefined || Array.isArray(value)\n );\n }\n\n\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultMediaMultipleFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultMediaMultipleFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" &&\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidMediaFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n setLightboxUrls: this.setLightboxUrls,\n setOpenLightbox: this.setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\nexport const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n type MediaFileDetail = { name: string; type: string; size: number; mediaId: number | string | null; fileKey: string; fileUrl: string };\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const viewMode: string = fieldContext.viewMode;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly ? fieldContext.readOnly : fieldLayoutInfo.attrs.readonly;\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const isFieldDisabled = formDisabled || fieldDisabled;\n const isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;\n\n const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);\n const [fileDetails, setFileDetails] = useState<MediaFileDetail[]>([]);\n const [selectedFileId, setSelectedFileId] = useState<string | null>(null);\n const [fileSizeError, setFileSizeError] = useState<string | null>(null);\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n const [deleteMedia] = useDeleteMediaMutation();\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n const objectUrls: string[] = [];\n\n if (Array.isArray(fieldValue) && fieldValue.length > 0) {\n const details: MediaFileDetail[] = [];\n fieldValue.forEach((file: File | any) => {\n if (file instanceof File) {\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl);\n\n details.push({\n name: file.name,\n type: file.type,\n size: file.size,\n mediaId: null,\n fileKey: buildMediaFieldKey(file),\n fileUrl: fileUrl\n });\n } else if (typeof file === \"object\" && file._full_url) {\n details.push({\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n mediaId: getPersistedMediaId(file),\n fileKey: buildMediaFieldKey(file),\n fileUrl: file._full_url\n });\n }\n });\n setFileDetails(details);\n } else {\n setFileDetails([]);\n }\n\n return () => {\n objectUrls.forEach((url) => URL.revokeObjectURL(url));\n };\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleDropImages = (acceptedFiles: any[]) => {\n if (!acceptedFiles.length) return;\n setFileSizeError(null);\n const existingFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])\n ? formik.values[fieldLayoutInfo.attrs.name]\n : [];\n acceptedFiles.forEach((file) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n });\n\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: [...existingFiles, ...acceptedFiles],\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const confirmDeleteFile = (fileId: string) => {\n setSelectedFileId(fileId);\n setDeleteImageDialogVisible(true);\n };\n\n const deleteFile = async () => {\n if (!selectedFileId) {\n return;\n }\n\n const currentFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])\n ? formik.values[fieldLayoutInfo.attrs.name]\n : [];\n const fileToDelete = currentFiles.find((file: File | any) => buildMediaFieldKey(file) === selectedFileId);\n\n if (!fileToDelete) {\n setDeleteImageDialogVisible(false);\n setShowAllFiles(false);\n setSelectedFileId(null);\n return;\n }\n\n try {\n const persistedMediaId = getPersistedMediaId(fileToDelete);\n if (persistedMediaId !== null) {\n await deleteMedia(persistedMediaId).unwrap();\n }\n\n const nextValue = currentFiles.filter((file: File | any) => buildMediaFieldKey(file) !== selectedFileId);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: nextValue,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n setFileDetails((prev) => prev.filter((file) => file.fileKey !== selectedFileId));\n } catch (error) {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n }\n\n setDeleteImageDialogVisible(false);\n setShowAllFiles(false);\n setSelectedFileId(null);\n };\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n } = useDropzone({\n onDrop: handleDropImages,\n onDropRejected: (fileRejections) => {\n const rejection = fileRejections[0];\n const sizeError = rejection.errors.find(err => err.code === 'file-too-large');\n if (sizeError) {\n setFileSizeError(ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb));\n ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb)\n } else {\n setFileSizeError(rejection.errors[0]?.message || ERROR_MESSAGES.FILE_NOT_ACCEPT);\n }\n },\n accept: getAcceptedFileTypes(fieldMetadata.mediaTypes),\n maxSize: fieldMetadata.mediaMaxSizeKb * 1024,\n });\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldViewMediaMultipleWidget\");\n const widgetProps = {\n formik: formik,\n fieldContext: fieldContext,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n\n const handleFileView = (url: any) => {\n const downloadOnlyExt = [\n \"txt\", \"zip\", \"rar\",\n \"doc\", \"docx\",\n \"xls\", \"xlsx\",\n \"ppt\", \"pptx\"\n ];\n\n const fileUrl = url?.fileUrl || \"\";\n const cleanUrl = fileUrl.split(\"?\")[0];\n const ext = cleanUrl.split(\".\").pop()?.toLowerCase();\n\n if (ext && downloadOnlyExt.includes(ext)) {\n const link = document.createElement('a');\n link.href = url.fileUrl;\n link.download = ''; // or specify a file name like 'file.pdf'\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n } else {\n setLightboxUrls?.([\n { src: url.fileUrl, downloadUrl: url.fileUrl },\n ]);\n setOpenLightbox?.(true);\n }\n }\n\n\n return (\n <div style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>\n <div className={`${styles.fieldWrapper} relative`}>\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n {/* {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <div className=\"relative\">\n <div\n {...getRootProps()}\n className=\"solid-dropzone-wrapper\"\n >\n <input {...getInputProps()} />\n <DropzonePlaceholder\n mediaTypes={fieldMetadata.mediaTypes}\n mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <SolidMessage severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n {\n fileSizeError &&\n <SolidMessage severity=\"error\" text={fileSizeError?.toString()} />\n }\n </div>\n {fileDetails.length > 0 &&\n <div className=\"solid-file-upload-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={fileDetails[0]} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"m-0 w-9 font-normal text-[var(--primary-color)] solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(fileDetails[0])}>{fileDetails[0].name}</p>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(fileDetails[0].fileKey)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(fileDetails[0].size)}\n </div>\n </div>\n </div>\n </div>\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = file.fileKey;\n return (\n <div key={fileId} className=\"solid-file-upload-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={file} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"m-0 w-11 font-normal text-[var(--primary-color)] solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(file)}>{file.name}</p>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(fileId)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={isDeleteImageDialogVisible}\n onOpenChange={setDeleteImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to delete this file?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" autoFocus onClick={deleteFile}>\n Delete\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setDeleteImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n\nexport const DefaultMediaMultipleFormViewWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number, id: number, fileUrl: string }[]>([]);\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n // useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, \"false\") }, [])\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n\n if (Array.isArray(fieldValue) && fieldValue.length > 0) {\n const urls: string[] = [];\n const details: { name: string; type: string; size: number, id: any, fileUrl: string }[] = [];\n const objectUrls: string[] = [];\n fieldValue.forEach((file: File | any) => {\n if (file instanceof File) {\n // New file (from local upload)\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl); // Store URL for cleanup\n urls.push(fileUrl);\n\n details.push({\n name: file.name,\n type: file.type,\n size: file.size,\n id: `${file.name}-${file.size}`,\n fileUrl: fileUrl // ✅ Store the generated object URL\n });\n } else if (typeof file === \"object\" && file._full_url) {\n urls.push(file._full_url);\n details.push({\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n id: file.id,\n fileUrl: file._full_url\n });\n }\n });\n setFileDetails(details);\n }\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleFileView = (url: any) => {\n const downloadOnlyExt = [\n \"txt\", \"zip\", \"rar\",\n \"doc\", \"docx\",\n \"xls\", \"xlsx\",\n \"ppt\", \"pptx\"\n ];\n\n const fileUrl = url?.fileUrl || \"\";\n const cleanUrl = fileUrl.split(\"?\")[0];\n const ext = cleanUrl.split(\".\").pop()?.toLowerCase();\n\n if (ext && downloadOnlyExt.includes(ext)) {\n const link = document.createElement('a');\n link.href = url.fileUrl;\n link.download = ''; // or specify a file name like 'file.pdf'\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n } else {\n setLightboxUrls?.([\n { src: url.fileUrl, downloadUrl: url.fileUrl },\n ]);\n setOpenLightbox?.(true);\n }\n }\n\n return (\n <div className={styles.fieldViewWrapper}>\n {showFieldLabel != false &&\n <p className={`${styles.fieldViewLabel} form-field-label`}>\n {fieldLabel}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </p>\n }\n {fileDetails.length > 0 &&\n <div className=\"solid-file-view-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={fileDetails[0]} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"m-0 w-11 font-normal text-[var(--primary-color)] solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(fileDetails[0])}>{fileDetails[0].name}</p>\n <div className=\"flex items-center md:gap-2\">\n <div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n icon=\"si si-download\"\n size=\"sm\"\n style={{\n height: 16,\n width: 16\n }}\n onClick={() => downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name)}\n />\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(fileDetails[0].size)}\n </div>\n </div>\n </div>\n </div>\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = `${file.name}-${file.size}`;\n return (\n <div key={fileId} className=\"solid-file-view-wrapper\">\n <div className=\"flex items-center md:gap-2\">\n <FileReaderExt fileDetails={file} />\n <div className=\"w-full flex flex-col gap-1\">\n <div className=\"flex items-center justify-between\">\n <p className=\"font-normal w-11 solid-img-text-wrapper\" style={{ cursor: 'pointer' }} onClick={() => handleFileView(file)}>{file.name}</p>\n <div className=\"flex items-center md:gap-2\">\n <div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n icon=\"si si-download\"\n size=\"sm\"\n style={{\n height: 16,\n width: 16\n }}\n onClick={() => downloadMediaFile(file?.fileUrl, file?.name)}\n />\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n\n </div>\n );\n}\n"]}
|