albinasoft-ui-package 1.1.35 → 1.1.36
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.
@@ -55,7 +55,6 @@ export interface CustomFileUploaderProps {
|
|
55
55
|
* Eğer bu prop’un değeri değişirse uploader içini temizle
|
56
56
|
*/
|
57
57
|
clearTrigger?: any;
|
58
|
-
onUploadedListChange?: (uploadedFileNames: string[]) => void;
|
59
58
|
}
|
60
59
|
declare const CustomFileUploader: React.FC<CustomFileUploaderProps>;
|
61
60
|
export default CustomFileUploader;
|
@@ -308,12 +308,7 @@ var CustomFileUploader = function (props) {
|
|
308
308
|
};
|
309
309
|
// Dosya kaldırma işlemi
|
310
310
|
var handleRemoveFile = function (previewId) {
|
311
|
-
var _a;
|
312
311
|
var updatedPreviews = previews.filter(function (item) { return item.id !== previewId; });
|
313
|
-
var uploadedList = updatedPreviews
|
314
|
-
.filter(function (p) { return p.uploaded && p.serverFileName; })
|
315
|
-
.map(function (p) { return p.serverFileName; });
|
316
|
-
(_a = props.onUploadedListChange) === null || _a === void 0 ? void 0 : _a.call(props, uploadedList);
|
317
312
|
setPreviews(updatedPreviews);
|
318
313
|
updatePendingStatus(updatedPreviews);
|
319
314
|
var itemToRemove = previews.find(function (item) { return item.id === previewId; });
|
@@ -323,96 +318,69 @@ var CustomFileUploader = function (props) {
|
|
323
318
|
};
|
324
319
|
// Dosyaları sunucuya yükleme işlemi
|
325
320
|
var handleUpload = function () { return __awaiter(void 0, void 0, void 0, function () {
|
326
|
-
var
|
321
|
+
var filesToUpload, formData, response, data, uploadedFileNames_1, errorData, error_1;
|
327
322
|
return __generator(this, function (_a) {
|
328
323
|
switch (_a.label) {
|
329
324
|
case 0:
|
330
|
-
|
331
|
-
if (
|
325
|
+
filesToUpload = previews.filter(function (item) { return !item.uploaded; }).map(function (item) { return item.file; });
|
326
|
+
if (filesToUpload.length === 0) {
|
332
327
|
react_toastify_1.toast.warning(finalTranslations.noFileSelectedWarning);
|
333
328
|
return [2 /*return*/];
|
334
329
|
}
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
case 0:
|
340
|
-
item = pendingItems[i];
|
341
|
-
// isUploading = true olarak işaretle
|
342
|
-
setPreviews(function (prev) {
|
343
|
-
var updated = prev.map(function (p) {
|
344
|
-
return p.id === item.id ? __assign(__assign({}, p), { isUploading: true }) : p;
|
345
|
-
});
|
346
|
-
updatePendingStatus(updated);
|
347
|
-
return updated;
|
348
|
-
});
|
349
|
-
formData = new FormData();
|
350
|
-
formData.append("file", item.file);
|
351
|
-
_b.label = 1;
|
352
|
-
case 1:
|
353
|
-
_b.trys.push([1, 6, , 7]);
|
354
|
-
return [4 /*yield*/, fetch(url, {
|
355
|
-
method: "POST",
|
356
|
-
body: formData,
|
357
|
-
})];
|
358
|
-
case 2:
|
359
|
-
response = _b.sent();
|
360
|
-
if (!response.ok) return [3 /*break*/, 4];
|
361
|
-
return [4 /*yield*/, response.json()];
|
362
|
-
case 3:
|
363
|
-
data = _b.sent();
|
364
|
-
if (data.responseCode === 200 && data.content && data.content.fileList.length > 0) {
|
365
|
-
uploadedFileName_1 = data.content.fileList[0].fileName;
|
366
|
-
setPreviews(function (prev) {
|
367
|
-
var _a;
|
368
|
-
var updated = prev.map(function (p) {
|
369
|
-
return p.id === item.id
|
370
|
-
? __assign(__assign({}, p), { uploaded: true, isUploading: false, serverFileName: uploadedFileName_1 }) : p;
|
371
|
-
});
|
372
|
-
updatePendingStatus(updated);
|
373
|
-
var uploadedList = updated
|
374
|
-
.filter(function (p) { return p.uploaded && p.serverFileName; })
|
375
|
-
.map(function (p) { return p.serverFileName; });
|
376
|
-
(_a = props.onUploadedListChange) === null || _a === void 0 ? void 0 : _a.call(props, uploadedList);
|
377
|
-
return updated;
|
378
|
-
});
|
379
|
-
}
|
380
|
-
else {
|
381
|
-
throw new Error("Sunucu hatası");
|
382
|
-
}
|
383
|
-
return [3 /*break*/, 5];
|
384
|
-
case 4: throw new Error("HTTP hatası");
|
385
|
-
case 5: return [3 /*break*/, 7];
|
386
|
-
case 6:
|
387
|
-
error_1 = _b.sent();
|
388
|
-
console.error("Yükleme hatası:", error_1);
|
389
|
-
react_toastify_1.toast.error("".concat(item.file.name, " y\u00FCklenemedi."));
|
390
|
-
setPreviews(function (prev) {
|
391
|
-
var updated = prev.map(function (p) {
|
392
|
-
return p.id === item.id ? __assign(__assign({}, p), { isUploading: false }) : p;
|
393
|
-
});
|
394
|
-
updatePendingStatus(updated);
|
395
|
-
return updated;
|
396
|
-
});
|
397
|
-
return [3 /*break*/, 7];
|
398
|
-
case 7: return [2 /*return*/];
|
399
|
-
}
|
400
|
-
});
|
401
|
-
};
|
402
|
-
i = 0;
|
330
|
+
formData = new FormData();
|
331
|
+
filesToUpload.forEach(function (file) {
|
332
|
+
formData.append("file", file);
|
333
|
+
});
|
403
334
|
_a.label = 1;
|
404
335
|
case 1:
|
405
|
-
|
406
|
-
return [
|
336
|
+
_a.trys.push([1, 7, , 8]);
|
337
|
+
return [4 /*yield*/, fetch(url, {
|
338
|
+
method: "POST",
|
339
|
+
body: formData,
|
340
|
+
})];
|
407
341
|
case 2:
|
408
|
-
_a.sent();
|
409
|
-
|
342
|
+
response = _a.sent();
|
343
|
+
if (!response.ok) return [3 /*break*/, 4];
|
344
|
+
return [4 /*yield*/, response.json()];
|
410
345
|
case 3:
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
346
|
+
data = _a.sent();
|
347
|
+
if (data.responseCode === 200 &&
|
348
|
+
data.content &&
|
349
|
+
data.content.fileList &&
|
350
|
+
data.content.fileList.length > 0) {
|
351
|
+
uploadedFileNames_1 = data.content.fileList.map(function (item) { return item.fileName; });
|
352
|
+
if (onUploadComplete) {
|
353
|
+
onUploadComplete(uploadedFileNames_1);
|
354
|
+
}
|
355
|
+
setPreviews(function (prev) {
|
356
|
+
var updatedPreviews = prev.map(function (item, index) {
|
357
|
+
if (!item.uploaded) {
|
358
|
+
return __assign(__assign({}, item), { uploaded: true, serverFileName: uploadedFileNames_1[index] || item.file.name });
|
359
|
+
}
|
360
|
+
return item;
|
361
|
+
});
|
362
|
+
updatePendingStatus(updatedPreviews);
|
363
|
+
return updatedPreviews;
|
364
|
+
});
|
365
|
+
react_toastify_1.toast.success(finalTranslations.uploadSuccessToast);
|
366
|
+
}
|
367
|
+
else {
|
368
|
+
react_toastify_1.toast.error(finalTranslations.uploadErrorToast);
|
369
|
+
}
|
370
|
+
return [3 /*break*/, 6];
|
371
|
+
case 4: return [4 /*yield*/, response.json()];
|
372
|
+
case 5:
|
373
|
+
errorData = _a.sent();
|
374
|
+
console.error("API Hatası:", errorData);
|
375
|
+
react_toastify_1.toast.error(finalTranslations.uploadErrorToast);
|
376
|
+
_a.label = 6;
|
377
|
+
case 6: return [3 /*break*/, 8];
|
378
|
+
case 7:
|
379
|
+
error_1 = _a.sent();
|
380
|
+
console.error("API çağrısında hata:", error_1);
|
381
|
+
react_toastify_1.toast.error(finalTranslations.uploadErrorToast);
|
382
|
+
return [3 /*break*/, 8];
|
383
|
+
case 8: return [2 /*return*/];
|
416
384
|
}
|
417
385
|
});
|
418
386
|
}); };
|
@@ -441,21 +409,7 @@ var CustomFileUploader = function (props) {
|
|
441
409
|
e.stopPropagation();
|
442
410
|
handleRemoveFile(item.id);
|
443
411
|
}, title: finalTranslations.removeButtonTitle }, "\u00D7"),
|
444
|
-
item.uploaded && react_1.default.createElement("div", { style: tickOverlayStyle }, "\u2713"),
|
445
|
-
item.isUploading && (react_1.default.createElement("div", { style: {
|
446
|
-
position: "absolute",
|
447
|
-
top: "0",
|
448
|
-
left: "0",
|
449
|
-
width: "100%",
|
450
|
-
height: "100%",
|
451
|
-
backgroundColor: "rgba(255,255,255,0.6)",
|
452
|
-
display: "flex",
|
453
|
-
justifyContent: "center",
|
454
|
-
alignItems: "center",
|
455
|
-
zIndex: 3,
|
456
|
-
} },
|
457
|
-
react_1.default.createElement("div", { className: "spinner-border text-primary", role: "status", style: { width: "24px", height: "24px" } },
|
458
|
-
react_1.default.createElement("span", { className: "visually-hidden" }, "Y\u00FCkleniyor..."))))),
|
412
|
+
item.uploaded && react_1.default.createElement("div", { style: tickOverlayStyle }, "\u2713")),
|
459
413
|
react_1.default.createElement("div", { style: {
|
460
414
|
marginTop: "4px",
|
461
415
|
fontSize: "12px",
|
@@ -219,7 +219,6 @@ interface CustomFormProps {
|
|
219
219
|
handleCancel?: () => void;
|
220
220
|
showConfirmButton?: boolean;
|
221
221
|
showCancelButton?: boolean;
|
222
|
-
pendingFileCounts?: Record<string, number>;
|
223
222
|
}
|
224
223
|
declare const CustomForm: React.FC<CustomFormProps>;
|
225
224
|
export { CustomForm, ElementType };
|
@@ -69,15 +69,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
69
69
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
70
70
|
}
|
71
71
|
};
|
72
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
73
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
74
|
-
if (ar || !(i in from)) {
|
75
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
76
|
-
ar[i] = from[i];
|
77
|
-
}
|
78
|
-
}
|
79
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
80
|
-
};
|
81
72
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
82
73
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
83
74
|
};
|
@@ -125,15 +116,10 @@ var CustomForm = function (_a) {
|
|
125
116
|
cancelLabel = _c === void 0 ? "Cancel" : _c, // Varsayılan değer
|
126
117
|
handleCancel = _a.handleCancel, _d = _a.showConfirmButton, showConfirmButton = _d === void 0 ? true : _d, // Varsayılan olarak görünür
|
127
118
|
_e = _a.showCancelButton, // Varsayılan olarak görünür
|
128
|
-
showCancelButton = _e === void 0 ? false : _e
|
129
|
-
pendingFileCounts = _a.pendingFileCounts;
|
119
|
+
showCancelButton = _e === void 0 ? false : _e;
|
130
120
|
var formRef = (0, react_1.useRef)(null);
|
131
121
|
var _f = (0, react_1.useState)(false), isLoading = _f[0], setIsLoading = _f[1];
|
132
122
|
var _g = (0, react_1.useState)(false), submitted = _g[0], setSubmitted = _g[1];
|
133
|
-
var _h = (0, react_1.useState)([]), uploadedFiles = _h[0], setUploadedFiles = _h[1];
|
134
|
-
var _j = (0, react_1.useState)([]), uploadedFileNames = _j[0], setUploadedFileNames = _j[1];
|
135
|
-
var isUploadingAnyFile = Object.values(pendingFileCounts || {}).some(function (count) { return count > 0; });
|
136
|
-
var disableConfirmButton = isLoading || isUploadingAnyFile;
|
137
123
|
var handleConfirm = function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
138
124
|
var form, customSelectValid, isValid, formValues_1, error_1;
|
139
125
|
return __generator(this, function (_a) {
|
@@ -198,9 +184,6 @@ var CustomForm = function (_a) {
|
|
198
184
|
formValues_1[element.id] = element.value;
|
199
185
|
}
|
200
186
|
});
|
201
|
-
formValues_1.uploadedFiles = uploadedFiles;
|
202
|
-
formValues_1["__uploadedFileNames"] = uploadedFileNames;
|
203
|
-
formValues_1["fileNames"] = uploadedFileNames;
|
204
187
|
return [4 /*yield*/, onSubmit(formValues_1)];
|
205
188
|
case 2:
|
206
189
|
_a.sent();
|
@@ -245,18 +228,14 @@ var CustomForm = function (_a) {
|
|
245
228
|
return (react_1.default.createElement("div", { className: "row ".concat(innerRowCustomClass), key: "inner-row-".concat(rowId, "-").concat(colId, "-").concat(innerRowId) }, elements.map(function (element) { return (react_1.default.createElement("div", { className: element.colClass || "col-12", key: element.id }, element.type === ElementType.TEXT ? (react_1.default.createElement(CustomText_1.default, __assign({}, element))) : element.type === ElementType.INPUT ? (react_1.default.createElement(CustomInput_1.default, __assign({}, element))) : element.type === ElementType.TEXTAREA ? (react_1.default.createElement(CustomTextarea_1.default, __assign({}, element))) : element.type === ElementType.CHECKBOX ? (react_1.default.createElement(CustomCheckbox_1.default, __assign({}, element))) : element.type === ElementType.RADIO ? (react_1.default.createElement(CustomRadioButton_1.default, __assign({}, element))) : element.type === ElementType.SELECT ? (react_1.default.createElement(CustomSelect_1.default, __assign({}, element, { submitted: submitted }))) : element.type === ElementType.SIMPLESELECT ? (react_1.default.createElement(CustomSimpleSelect_1.default, __assign({}, element, { value: Array.isArray(element.value) ? element.value[0] || "" : "", onChange: function (val) { return element.onChange(val); } }))) : element.type === ElementType.DATETIMEPICKER ? (react_1.default.createElement(CustomDateTimePicker_1.default, __assign({}, element, { submitted: submitted }))) : element.type === ElementType.DIVIDER ? (react_1.default.createElement(CustomDivider_1.default, __assign({}, element))) : element.type === ElementType.RICHTEXTBOX ? (react_1.default.createElement(CustomRichTextbox_1.default, __assign({}, element))) : element.type === ElementType.TREEVIEW ? (react_1.default.createElement(CustomTreeView_1.default, __assign({}, element))) : element.type === ElementType.BUTTON ? (react_1.default.createElement(CustomButton_1.default, __assign({}, element, { isLoading: isLoading }))) : element.type === ElementType.AUTOCOMPLETEINPUT ? (react_1.default.createElement(CustomAutocompleteInput_1.default, __assign({}, element))) : element.type === ElementType.PHONE ? (react_1.default.createElement(CustomPhoneInput_1.default, __assign({}, element))) : element.type === ElementType.FILEUPLOADER ? (
|
246
229
|
// FILEUPLOADER elemanı için CustomFileUploader'ı render ediyoruz
|
247
230
|
react_1.default.createElement(react_1.default.Fragment, null,
|
248
|
-
react_1.default.createElement(CustomFileUploader_1.default, { url: element.url, multi: element.multi, allowedTypes: element.allowedTypes, maxFile: element.maxFile, maxSize: element.maxSize, onUploadComplete:
|
249
|
-
var _a, _b;
|
250
|
-
setUploadedFileNames(function (prev) { return __spreadArray(__spreadArray([], prev, true), fileNames, true); });
|
251
|
-
(_b = (_a = element).onUploadComplete) === null || _b === void 0 ? void 0 : _b.call(_a, fileNames); // Orijinal fonksiyonu da tetikle
|
252
|
-
}, onRemoveUploaded: element.onRemoveUploaded, onPendingChange: element.onPendingChange, clearTrigger: element.clearTrigger, label: element.label, translations: element.translations, onUploadedListChange: setUploadedFiles }))) : null)); })));
|
231
|
+
react_1.default.createElement(CustomFileUploader_1.default, { url: element.url, multi: element.multi, allowedTypes: element.allowedTypes, maxFile: element.maxFile, maxSize: element.maxSize, onUploadComplete: element.onUploadComplete, onRemoveUploaded: element.onRemoveUploaded, onPendingChange: element.onPendingChange, clearTrigger: element.clearTrigger, label: element.label, translations: element.translations }))) : null)); })));
|
253
232
|
})));
|
254
233
|
})));
|
255
234
|
}),
|
256
235
|
(showConfirmButton || showCancelButton) && (react_1.default.createElement("div", { className: "card-footer mt-3" },
|
257
236
|
react_1.default.createElement("div", { className: "form-actions mt-3", style: { display: "flex", justifyContent: "flex-end", gap: "10px" } },
|
258
237
|
showCancelButton && (react_1.default.createElement(CustomButton_1.default, { label: cancelLabel, className: "btn btn-secondary", onClick: handleCancel || (function () { }), isLoading: isLoading })),
|
259
|
-
showConfirmButton && (react_1.default.createElement(CustomButton_1.default, { label: confirmLabel, className: "btn btn-primary", onClick: handleConfirm, isLoading: isLoading
|
238
|
+
showConfirmButton && (react_1.default.createElement(CustomButton_1.default, { label: confirmLabel, className: "btn btn-primary", onClick: handleConfirm, isLoading: isLoading })))))));
|
260
239
|
};
|
261
240
|
exports.CustomForm = CustomForm;
|
262
241
|
exports.default = CustomForm;
|