albinasoft-ui-package 1.1.34 → 1.1.35

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,6 +55,7 @@ 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;
58
59
  }
59
60
  declare const CustomFileUploader: React.FC<CustomFileUploaderProps>;
60
61
  export default CustomFileUploader;
@@ -308,7 +308,12 @@ var CustomFileUploader = function (props) {
308
308
  };
309
309
  // Dosya kaldırma işlemi
310
310
  var handleRemoveFile = function (previewId) {
311
+ var _a;
311
312
  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);
312
317
  setPreviews(updatedPreviews);
313
318
  updatePendingStatus(updatedPreviews);
314
319
  var itemToRemove = previews.find(function (item) { return item.id === previewId; });
@@ -359,11 +364,16 @@ var CustomFileUploader = function (props) {
359
364
  if (data.responseCode === 200 && data.content && data.content.fileList.length > 0) {
360
365
  uploadedFileName_1 = data.content.fileList[0].fileName;
361
366
  setPreviews(function (prev) {
367
+ var _a;
362
368
  var updated = prev.map(function (p) {
363
369
  return p.id === item.id
364
370
  ? __assign(__assign({}, p), { uploaded: true, isUploading: false, serverFileName: uploadedFileName_1 }) : p;
365
371
  });
366
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);
367
377
  return updated;
368
378
  });
369
379
  }
@@ -7,6 +7,7 @@ declare enum ElementType {
7
7
  CHECKBOX = "checkbox",
8
8
  RADIO = "radio",
9
9
  SELECT = "select",
10
+ SIMPLESELECT = "simpleselect",
10
11
  DATETIMEPICKER = "datetimepicker",
11
12
  TEXT = "text",
12
13
  DIVIDER = "divider",
@@ -83,6 +84,23 @@ interface SelectElement {
83
84
  colClass?: string;
84
85
  onChange: (value: string | string[]) => void;
85
86
  }
87
+ interface SimpleSelectElement {
88
+ required: boolean;
89
+ id?: string;
90
+ type: ElementType;
91
+ label: string;
92
+ value: string[];
93
+ options: {
94
+ id: string;
95
+ label: string;
96
+ value: string;
97
+ }[];
98
+ rowId?: number;
99
+ colId?: number;
100
+ innerRowId?: number;
101
+ colClass?: string;
102
+ onChange: (value: string | string[]) => void;
103
+ }
86
104
  interface DateTimePickerElement {
87
105
  id?: string;
88
106
  type: ElementType;
@@ -191,7 +209,7 @@ interface FileUploaderElement {
191
209
  innerRowId?: number;
192
210
  colClass?: string;
193
211
  }
194
- type FormElement = InputElement | TextareaElement | CheckboxElement | RadioButtonElement | SelectElement | DateTimePickerElement | TextElement | DividerElement | RichTextboxElement | TreeViewElement | ButtonElement | AutoCompleteInputElement | PhoneElement | FileUploaderElement;
212
+ type FormElement = InputElement | TextareaElement | CheckboxElement | RadioButtonElement | SelectElement | SimpleSelectElement | DateTimePickerElement | TextElement | DividerElement | RichTextboxElement | TreeViewElement | ButtonElement | AutoCompleteInputElement | PhoneElement | FileUploaderElement;
195
213
  interface CustomFormProps {
196
214
  elements: FormElement[];
197
215
  innerRowCustomClass?: string;
@@ -69,6 +69,15 @@ 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
+ };
72
81
  var __importDefault = (this && this.__importDefault) || function (mod) {
73
82
  return (mod && mod.__esModule) ? mod : { "default": mod };
74
83
  };
@@ -82,6 +91,7 @@ var CustomTextarea_1 = __importDefault(require("./CustomTextarea"));
82
91
  var CustomCheckbox_1 = __importDefault(require("./CustomCheckbox"));
83
92
  var CustomRadioButton_1 = __importDefault(require("./CustomRadioButton"));
84
93
  var CustomSelect_1 = __importDefault(require("./CustomSelect"));
94
+ var CustomSimpleSelect_1 = __importDefault(require("./CustomSimpleSelect"));
85
95
  var CustomDateTimePicker_1 = __importDefault(require("./CustomDateTimePicker"));
86
96
  var CustomText_1 = __importDefault(require("./CustomText"));
87
97
  var CustomDivider_1 = __importDefault(require("./CustomDivider"));
@@ -97,6 +107,7 @@ var ElementType;
97
107
  ElementType["CHECKBOX"] = "checkbox";
98
108
  ElementType["RADIO"] = "radio";
99
109
  ElementType["SELECT"] = "select";
110
+ ElementType["SIMPLESELECT"] = "simpleselect";
100
111
  ElementType["DATETIMEPICKER"] = "datetimepicker";
101
112
  ElementType["TEXT"] = "text";
102
113
  ElementType["DIVIDER"] = "divider";
@@ -119,6 +130,8 @@ var CustomForm = function (_a) {
119
130
  var formRef = (0, react_1.useRef)(null);
120
131
  var _f = (0, react_1.useState)(false), isLoading = _f[0], setIsLoading = _f[1];
121
132
  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];
122
135
  var isUploadingAnyFile = Object.values(pendingFileCounts || {}).some(function (count) { return count > 0; });
123
136
  var disableConfirmButton = isLoading || isUploadingAnyFile;
124
137
  var handleConfirm = function (e) { return __awaiter(void 0, void 0, void 0, function () {
@@ -185,6 +198,9 @@ var CustomForm = function (_a) {
185
198
  formValues_1[element.id] = element.value;
186
199
  }
187
200
  });
201
+ formValues_1.uploadedFiles = uploadedFiles;
202
+ formValues_1["__uploadedFileNames"] = uploadedFileNames;
203
+ formValues_1["fileNames"] = uploadedFileNames;
188
204
  return [4 /*yield*/, onSubmit(formValues_1)];
189
205
  case 2:
190
206
  _a.sent();
@@ -226,10 +242,14 @@ var CustomForm = function (_a) {
226
242
  var colId = _a[0], innerRows = _a[1];
227
243
  return (react_1.default.createElement("div", { className: "col", key: "col-".concat(rowId, "-").concat(colId) }, Object.entries(innerRows).map(function (_a) {
228
244
  var innerRowId = _a[0], elements = _a[1];
229
- 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.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 ? (
245
+ 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 ? (
230
246
  // FILEUPLOADER elemanı için CustomFileUploader'ı render ediyoruz
231
247
  react_1.default.createElement(react_1.default.Fragment, null,
232
- 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)); })));
248
+ react_1.default.createElement(CustomFileUploader_1.default, { url: element.url, multi: element.multi, allowedTypes: element.allowedTypes, maxFile: element.maxFile, maxSize: element.maxSize, onUploadComplete: function (fileNames) {
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)); })));
233
253
  })));
234
254
  })));
235
255
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "albinasoft-ui-package",
3
- "version": "1.1.34",
3
+ "version": "1.1.35",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {