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)([]), selectedPath = _m[0], setSelectedPath = _m[1];
62
- var _o = (0, react_1.useState)(false), isReadOnly = _o[0], setReadOnly = _o[1];
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
- var findParentPath = function (nodes, targetValue, path) {
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
- var pathsToExpand = [];
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) : { filteredNodes: [], pathsToExpand: [] };
102
- var childMatches = children.filteredNodes.length > 0;
60
+ var children = node.children ? filterTreeData(node.children, searchTerm) : [];
61
+ var childMatches = children.length > 0;
103
62
  if (nodeMatches || childMatches) {
104
- pathsToExpand = __spreadArray(__spreadArray(__spreadArray([], pathsToExpand, true), [node.value], false), children.pathsToExpand, true);
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 _a = filterTreeData(treeData, filterTerm), filteredNodes = _a.filteredNodes, pathsToExpand = _a.pathsToExpand;
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, selectedPath]);
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
- tooltip ? (react_1.default.createElement(react_bootstrap_1.OverlayTrigger, { placement: "bottom", overlay: react_1.default.createElement(react_bootstrap_1.Tooltip, { id: "tooltip-".concat(tooltip) }, tooltip) },
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("div", { className: "description-icon" },
172
- react_1.default.createElement(fa_1.FaExclamationTriangle, null)),
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("div", { className: "description-icon" },
177
- react_1.default.createElement(fa_1.FaExclamationTriangle, null)),
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("div", { className: "description-icon" },
182
- react_1.default.createElement(fa_1.FaInfoCircle, null)),
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "albinasoft-ui-package",
3
- "version": "1.0.19",
3
+ "version": "1.0.20",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {