albinasoft-ui-package 1.0.19 → 1.0.20
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.
@@ -33,15 +33,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
33
33
|
__setModuleDefault(result, mod);
|
34
34
|
return result;
|
35
35
|
};
|
36
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
37
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
38
|
-
if (ar || !(i in from)) {
|
39
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
40
|
-
ar[i] = from[i];
|
41
|
-
}
|
42
|
-
}
|
43
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
44
|
-
};
|
45
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
46
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
47
38
|
};
|
@@ -51,112 +42,56 @@ var react_checkbox_tree_1 = __importDefault(require("react-checkbox-tree"));
|
|
51
42
|
require("react-checkbox-tree/lib/react-checkbox-tree.css");
|
52
43
|
var fa_1 = require("react-icons/fa");
|
53
44
|
var CustomInput_1 = __importStar(require("./CustomInput"));
|
54
|
-
var react_bootstrap_1 = require("react-bootstrap");
|
55
45
|
var CustomTreeView = function (_a) {
|
56
46
|
var id = _a.id, name = _a.name, label = _a.label, value = _a.value, treeData = _a.treeData, _b = _a.placeholder, placeholder = _b === void 0 ? "Ağaç Yapısını Filtrele..." : _b, _c = _a.required, required = _c === void 0 ? false : _c, errorMessage = _a.errorMessage, _d = _a.conditionalErrorVisible, conditionalErrorVisible = _d === void 0 ? false : _d, conditionalErrorMessage = _a.conditionalErrorMessage, _e = _a.disabled, disabled = _e === void 0 ? false : _e, _f = _a.readOnly, readOnly = _f === void 0 ? false : _f, description = _a.description, tooltip = _a.tooltip, style = _a.style, className = _a.className, onChange = _a.onChange, _g = _a.hasTriedToSubmit, hasTriedToSubmit = _g === void 0 ? false : _g;
|
57
47
|
var _h = (0, react_1.useState)(value ? [value] : []), checked = _h[0], setChecked = _h[1];
|
58
48
|
var _j = (0, react_1.useState)([]), expanded = _j[0], setExpanded = _j[1];
|
59
49
|
var _k = (0, react_1.useState)(''), filterTerm = _k[0], setFilterTerm = _k[1];
|
60
50
|
var _l = (0, react_1.useState)(treeData), filteredTreeData = _l[0], setFilteredTreeData = _l[1];
|
61
|
-
var _m = (0, react_1.useState)(
|
62
|
-
|
63
|
-
var _p = (0, react_1.useState)(false), isValid = _p[0], setIsValid = _p[1];
|
51
|
+
var _m = (0, react_1.useState)(false), isValid = _m[0], setIsValid = _m[1];
|
52
|
+
// 🔥 Yalnızca Leaf checkbox'larını göster (node'larda checkbox olmasın)
|
64
53
|
var markLeafCheckboxOnly = function (nodes) {
|
65
54
|
return nodes.map(function (node) { return (__assign(__assign({}, node), { showCheckbox: !(Array.isArray(node.children) && node.children.length > 0), children: node.children ? markLeafCheckboxOnly(node.children) : undefined })); });
|
66
55
|
};
|
67
|
-
|
68
|
-
if (path === void 0) { path = []; }
|
69
|
-
for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
|
70
|
-
var node = nodes_1[_i];
|
71
|
-
var currentPath = __spreadArray(__spreadArray([], path, true), [node.value], false);
|
72
|
-
if (node.value === targetValue) {
|
73
|
-
return currentPath;
|
74
|
-
}
|
75
|
-
if (node.children) {
|
76
|
-
var result = findParentPath(node.children, targetValue, currentPath);
|
77
|
-
if (result)
|
78
|
-
return result;
|
79
|
-
}
|
80
|
-
}
|
81
|
-
return null;
|
82
|
-
};
|
83
|
-
var findLeafLabelByValue = function (nodes, value) {
|
84
|
-
for (var _i = 0, nodes_2 = nodes; _i < nodes_2.length; _i++) {
|
85
|
-
var node = nodes_2[_i];
|
86
|
-
if (node.value === value)
|
87
|
-
return node.label;
|
88
|
-
if (node.children) {
|
89
|
-
var result = findLeafLabelByValue(node.children, value);
|
90
|
-
if (result)
|
91
|
-
return result;
|
92
|
-
}
|
93
|
-
}
|
94
|
-
return null;
|
95
|
-
};
|
96
|
-
// 🚀 Filtreleme fonksiyonu (path'leri de genişletiyoruz)
|
56
|
+
// 🚀 Filtreleme işlemi
|
97
57
|
var filterTreeData = function (nodes, searchTerm) {
|
98
|
-
|
99
|
-
var filteredNodes = nodes.map(function (node) {
|
58
|
+
return nodes.map(function (node) {
|
100
59
|
var nodeMatches = node.label.toLowerCase().includes(searchTerm.toLowerCase());
|
101
|
-
var children = node.children ? filterTreeData(node.children, searchTerm) :
|
102
|
-
var childMatches = children.
|
60
|
+
var children = node.children ? filterTreeData(node.children, searchTerm) : [];
|
61
|
+
var childMatches = children.length > 0;
|
103
62
|
if (nodeMatches || childMatches) {
|
104
|
-
|
105
|
-
return __assign(__assign({}, node), { children: childMatches ? children.filteredNodes : node.children });
|
63
|
+
return __assign(__assign({}, node), { children: childMatches ? children : node.children });
|
106
64
|
}
|
107
65
|
return null;
|
108
66
|
}).filter(Boolean);
|
109
|
-
return { filteredNodes: filteredNodes, pathsToExpand: pathsToExpand };
|
110
67
|
};
|
68
|
+
// 🔥 Filtre güncelleme, expanded artık değişmiyor
|
111
69
|
(0, react_1.useEffect)(function () {
|
112
70
|
if (filterTerm.trim() === '') {
|
113
71
|
setFilteredTreeData(treeData);
|
114
|
-
setExpanded(__spreadArray([], selectedPath, true));
|
115
72
|
}
|
116
73
|
else {
|
117
|
-
var
|
74
|
+
var filteredNodes = filterTreeData(treeData, filterTerm);
|
118
75
|
setFilteredTreeData(filteredNodes);
|
119
|
-
setExpanded(Array.from(new Set(__spreadArray(__spreadArray([], pathsToExpand, true), selectedPath, true))));
|
120
76
|
}
|
121
|
-
}, [filterTerm, treeData
|
77
|
+
}, [filterTerm, treeData]);
|
122
78
|
var handleCheck = function (checkedNodes) {
|
123
79
|
var newlySelected = checkedNodes.find(function (node) { return !checked.includes(node); });
|
124
80
|
var selectedLeaf = newlySelected || '';
|
125
81
|
setChecked(selectedLeaf ? [selectedLeaf] : []);
|
126
|
-
if (selectedLeaf) {
|
127
|
-
var parentPath = findParentPath(treeData, selectedLeaf);
|
128
|
-
if (parentPath) {
|
129
|
-
setSelectedPath(parentPath);
|
130
|
-
setExpanded(parentPath);
|
131
|
-
}
|
132
|
-
var selectedLabel = findLeafLabelByValue(treeData, selectedLeaf);
|
133
|
-
if (selectedLabel) {
|
134
|
-
setFilterTerm(selectedLabel);
|
135
|
-
setReadOnly(true);
|
136
|
-
}
|
137
|
-
}
|
138
82
|
onChange(selectedLeaf);
|
139
83
|
};
|
140
84
|
var handleReset = function () {
|
141
85
|
setFilterTerm('');
|
142
86
|
setChecked([]);
|
143
|
-
setExpanded([]);
|
144
|
-
setReadOnly(false);
|
145
87
|
};
|
146
|
-
// 🚀 Sayfa yüklendiğinde handleReset'i bir kere çalıştır
|
147
|
-
(0, react_1.useEffect)(function () {
|
148
|
-
handleCheck(['leafCheck']);
|
149
|
-
handleReset();
|
150
|
-
}, []);
|
151
88
|
// 🚀 Validasyon Kontrolü
|
152
89
|
(0, react_1.useEffect)(function () {
|
153
|
-
// Kullanıcı bir leaf seçmiş VE input boş değilse valid = true
|
154
90
|
setIsValid(checked.length > 0 && filterTerm.trim().length > 0);
|
155
91
|
}, [checked, filterTerm]);
|
156
92
|
return (react_1.default.createElement("div", { className: className },
|
157
93
|
react_1.default.createElement("div", { className: "form-group" },
|
158
|
-
|
159
|
-
react_1.default.createElement(CustomInput_1.default, { id: id && "input-".concat(id), name: name && "input-".concat(name), label: label && label, value: filterTerm, disabled: disabled, readOnly: isReadOnly, required: required, valid: hasTriedToSubmit ? isValid : undefined, buttonIcon: react_1.default.createElement(fa_1.FaTimes, null), buttonClass: 'btn btn-danger bg-soft-danger', buttonOnClick: handleReset, inputType: CustomInput_1.InputType.TEXT, placeholder: placeholder, style: style, onChange: function (e) { return setFilterTerm(e.target.value); } }))) : (react_1.default.createElement(CustomInput_1.default, { id: id && "input-".concat(id), name: name && "input-".concat(name), label: label && label, value: filterTerm, disabled: disabled, readOnly: isReadOnly, required: required, valid: hasTriedToSubmit ? isValid : undefined, buttonIcon: react_1.default.createElement(fa_1.FaTimes, null), buttonClass: 'btn btn-danger bg-soft-danger', buttonOnClick: handleReset, inputType: CustomInput_1.InputType.TEXT, placeholder: placeholder, style: style, onChange: function (e) { return setFilterTerm(e.target.value); } })),
|
94
|
+
react_1.default.createElement(CustomInput_1.default, { id: id && "input-".concat(id), name: name && "input-".concat(name), label: label, value: filterTerm, disabled: disabled, readOnly: readOnly, required: required, valid: hasTriedToSubmit ? isValid : undefined, buttonIcon: react_1.default.createElement(fa_1.FaTimes, null), buttonClass: 'btn btn-danger bg-soft-danger', buttonOnClick: handleReset, inputType: CustomInput_1.InputType.TEXT, placeholder: placeholder, style: style, onChange: function (e) { return setFilterTerm(e.target.value); } }),
|
160
95
|
react_1.default.createElement(react_checkbox_tree_1.default, { id: id, name: name, disabled: disabled, nodes: markLeafCheckboxOnly(filteredTreeData), checked: checked, expanded: expanded, onCheck: handleCheck, onExpand: setExpanded, icons: {
|
161
96
|
check: react_1.default.createElement(fa_1.FaCheckSquare, { color: "#4caf50" }),
|
162
97
|
uncheck: react_1.default.createElement(fa_1.FaSquare, { color: "currentColor" }),
|
@@ -167,20 +102,14 @@ var CustomTreeView = function (_a) {
|
|
167
102
|
parentOpen: react_1.default.createElement(fa_1.FaFolderOpen, { color: "#ff9800" }),
|
168
103
|
leaf: react_1.default.createElement(fa_1.FaFile, { color: "#607d8b" }),
|
169
104
|
} }),
|
170
|
-
required && (react_1.default.createElement("div", { className: "invalid-feedback text-danger" },
|
171
|
-
react_1.default.createElement(
|
172
|
-
|
173
|
-
react_1.default.createElement("div", { className: "description-text" },
|
174
|
-
react_1.default.createElement("span", null, errorMessage || 'Bu alan boş bırakılamaz.')))),
|
105
|
+
required && !isValid && (react_1.default.createElement("div", { className: "invalid-feedback text-danger" },
|
106
|
+
react_1.default.createElement(fa_1.FaExclamationTriangle, null),
|
107
|
+
errorMessage || 'Bu alan boş bırakılamaz.')),
|
175
108
|
conditionalErrorVisible && (react_1.default.createElement("div", { className: "conditional-error-message text-warning" },
|
176
|
-
react_1.default.createElement(
|
177
|
-
|
178
|
-
react_1.default.createElement("div", { className: "description-text" },
|
179
|
-
react_1.default.createElement("span", null, conditionalErrorMessage)))),
|
109
|
+
react_1.default.createElement(fa_1.FaExclamationTriangle, null),
|
110
|
+
conditionalErrorMessage)),
|
180
111
|
description && (react_1.default.createElement("div", { className: "form-description text-secondary" },
|
181
|
-
react_1.default.createElement(
|
182
|
-
|
183
|
-
react_1.default.createElement("div", { className: "description-text" },
|
184
|
-
react_1.default.createElement("span", null, description)))))));
|
112
|
+
react_1.default.createElement(fa_1.FaInfoCircle, null),
|
113
|
+
description)))));
|
185
114
|
};
|
186
115
|
exports.default = CustomTreeView;
|