albinasoft-ui-package 1.1.1 → 1.1.3

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.
@@ -129,13 +129,13 @@ interface TreeViewElement {
129
129
  id?: string;
130
130
  type: ElementType;
131
131
  label?: string;
132
- value: string | null;
132
+ value: string | string[] | null;
133
133
  treeData: TreeNode[];
134
134
  rowId?: number;
135
135
  colId?: number;
136
136
  innerRowId?: number;
137
137
  colClass?: string;
138
- onChange: (selected: string | null) => void;
138
+ onChange: (selected: string | string[] | null) => void;
139
139
  }
140
140
  interface ButtonElement {
141
141
  id?: string;
@@ -23,7 +23,7 @@ var CustomRichTextbox = function (_a) {
23
23
  ]
24
24
  };
25
25
  var formats = [
26
- 'align', 'bold', 'italic', 'underline', 'strike', 'header', 'list', 'bullet'
26
+ 'align', 'bold', 'italic', 'underline', 'strike', 'header', 'list'
27
27
  ];
28
28
  return (react_1.default.createElement("div", { className: className },
29
29
  react_1.default.createElement("div", { className: "form-group" },
@@ -6,10 +6,11 @@ export interface TreeNode {
6
6
  }
7
7
  interface CustomTreeViewProps {
8
8
  label?: string;
9
- value: string | null;
9
+ value: string | string[] | null;
10
10
  treeData: TreeNode[];
11
11
  placeholder?: string;
12
- onChange: (selected: string | null) => void;
12
+ multi?: boolean;
13
+ onChange: (selected: string | string[] | null) => void;
13
14
  }
14
15
  declare const CustomTreeView: React.FC<CustomTreeViewProps>;
15
16
  export default CustomTreeView;
@@ -49,23 +49,54 @@ var TreeItem_1 = require("@mui/x-tree-view/TreeItem");
49
49
  var fa_1 = require("react-icons/fa");
50
50
  var CustomInput_1 = __importStar(require("./CustomInput"));
51
51
  var CustomTreeView = function (_a) {
52
- var label = _a.label, value = _a.value, treeData = _a.treeData, _b = _a.placeholder, placeholder = _b === void 0 ? 'Ağaç Yapısını Filtrele...' : _b, onChange = _a.onChange;
53
- var _c = (0, react_1.useState)(''), filterTerm = _c[0], setFilterTerm = _c[1];
54
- // value prop'u ile başlayacak şekilde state'i ayarla
55
- var _d = (0, react_1.useState)(value), selectedItem = _d[0], setSelectedItem = _d[1];
56
- var _e = (0, react_1.useState)([]), expandedItems = _e[0], setExpandedItems = _e[1];
57
- var _f = (0, react_1.useState)(''), inputValue = _f[0], setInputValue = _f[1];
58
- var _g = (0, react_1.useState)(false), isInputDisabled = _g[0], setIsInputDisabled = _g[1];
59
- // value prop'u mount veya değiştiğinde, ilgili state'leri güncelle
52
+ var 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.multi, multi = _c === void 0 ? false : _c, onChange = _a.onChange;
53
+ var _d = (0, react_1.useState)(''), filterTerm = _d[0], setFilterTerm = _d[1];
54
+ var _e = (0, react_1.useState)([]), selectedItems = _e[0], setSelectedItems = _e[1];
55
+ var _f = (0, react_1.useState)([]), expandedItems = _f[0], setExpandedItems = _f[1];
56
+ var _g = (0, react_1.useState)(''), inputValue = _g[0], setInputValue = _g[1];
57
+ var _h = (0, react_1.useState)(false), isInputDisabled = _h[0], setIsInputDisabled = _h[1];
58
+ var getAllNodeIds = function (nodes) {
59
+ return nodes.reduce(function (acc, node) {
60
+ acc.push(node.value);
61
+ if (node.children)
62
+ acc.push.apply(acc, getAllNodeIds(node.children));
63
+ return acc;
64
+ }, []);
65
+ };
66
+ var findNodeByValue = function (nodes, val) {
67
+ for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
68
+ var node = nodes_1[_i];
69
+ if (node.value === val)
70
+ return node;
71
+ if (node.children) {
72
+ var found = findNodeByValue(node.children, val);
73
+ if (found)
74
+ return found;
75
+ }
76
+ }
77
+ return null;
78
+ };
79
+ var findLabelByValue = function (nodes, val) {
80
+ var node = findNodeByValue(nodes, val);
81
+ return node ? node.label : '';
82
+ };
60
83
  (0, react_1.useEffect)(function () {
61
- if (value) {
62
- var labelText = findLabelByValue(treeData, value);
63
- setInputValue(labelText);
84
+ var initialSelected = Array.isArray(value)
85
+ ? value
86
+ : value
87
+ ? [value]
88
+ : [];
89
+ setSelectedItems(initialSelected);
90
+ if (initialSelected.length) {
91
+ var labels = initialSelected.map(function (val) { return findLabelByValue(treeData, val); });
92
+ setInputValue(labels.join(', '));
64
93
  setIsInputDisabled(true);
65
- setSelectedItem(value);
94
+ setExpandedItems(getAllNodeIds(treeData));
66
95
  }
67
96
  else {
68
- handleReset();
97
+ setExpandedItems(getAllNodeIds(treeData));
98
+ setInputValue('');
99
+ setIsInputDisabled(false);
69
100
  }
70
101
  }, [value, treeData]);
71
102
  var filterTree = function (nodes, term) {
@@ -75,80 +106,86 @@ var CustomTreeView = function (_a) {
75
106
  .map(function (node) {
76
107
  var normalizedLabel = node.label.toLocaleLowerCase('tr-TR');
77
108
  var matches = normalizedLabel.includes(normalizedTerm);
78
- var childrenResult = node.children && node.children.length > 0
109
+ var childrenResult = node.children
79
110
  ? filterTree(node.children, term)
80
111
  : { filteredNodes: [], pathsToExpand: [] };
81
- if (matches || childrenResult.filteredNodes.length > 0) {
82
- pathsToExpand = __spreadArray(__spreadArray(__spreadArray([], pathsToExpand, true), [node.value], false), childrenResult.pathsToExpand, true);
83
- return __assign(__assign({}, node), { children: childrenResult.filteredNodes.length > 0 ? childrenResult.filteredNodes : undefined });
112
+ if (matches || childrenResult.filteredNodes.length) {
113
+ pathsToExpand = __spreadArray(__spreadArray(__spreadArray([], pathsToExpand, true), [
114
+ node.value
115
+ ], false), childrenResult.pathsToExpand, true);
116
+ return __assign(__assign({}, node), { children: childrenResult.filteredNodes.length > 0
117
+ ? childrenResult.filteredNodes
118
+ : undefined });
84
119
  }
85
120
  return null;
86
121
  })
87
122
  .filter(Boolean);
88
123
  return { filteredNodes: filteredNodes, pathsToExpand: pathsToExpand };
89
124
  };
90
- var _h = filterTerm
125
+ var _j = filterTerm
91
126
  ? filterTree(treeData, filterTerm)
92
- : { filteredNodes: treeData, pathsToExpand: [] }, filteredNodes = _h.filteredNodes, pathsToExpand = _h.pathsToExpand;
127
+ : { filteredNodes: treeData, pathsToExpand: [] }, filteredNodes = _j.filteredNodes, pathsToExpand = _j.pathsToExpand;
93
128
  (0, react_1.useEffect)(function () {
94
129
  if (filterTerm) {
95
130
  setExpandedItems(pathsToExpand);
96
131
  }
97
132
  }, [filterTerm, pathsToExpand]);
98
- var renderTree = function (nodes) {
99
- return nodes.map(function (node) { return (react_1.default.createElement(TreeItem_1.TreeItem, { key: node.value, itemId: node.value, label: react_1.default.createElement("span", { onClick: function () { return handleLabelClick(node.value); }, style: { cursor: 'pointer' } }, node.label.trim() === "" ? "Kök" : node.label) }, node.children ? renderTree(node.children) : null)); });
100
- };
101
- var handleSelectionChange = function (event, selectedId) {
102
- setSelectedItem(selectedId);
103
- onChange(selectedId);
104
- var selectedNode = findNodeByValue(treeData, selectedId);
105
- if (selectedNode) {
106
- setInputValue(selectedNode.label);
107
- setIsInputDisabled(true);
108
- }
109
- };
110
- var handleLabelClick = function (nodeValue) {
111
- setSelectedItem(nodeValue);
112
- onChange(nodeValue);
113
- var selectedNode = findNodeByValue(treeData, nodeValue);
114
- if (selectedNode) {
115
- setInputValue(selectedNode.label);
116
- setIsInputDisabled(true);
133
+ var handleSelectionChange = function (_event, itemIds) {
134
+ var newSelected = Array.isArray(itemIds)
135
+ ? itemIds
136
+ : itemIds
137
+ ? [itemIds]
138
+ : [];
139
+ setSelectedItems(newSelected);
140
+ if (multi) {
141
+ onChange(newSelected);
142
+ var labels = newSelected.map(function (val) { return findLabelByValue(treeData, val); });
143
+ setInputValue(labels.join(', '));
144
+ setIsInputDisabled(!!labels.length);
117
145
  }
118
- };
119
- var findNodeByValue = function (nodes, val) {
120
- for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
121
- var node = nodes_1[_i];
122
- if (node.value === val)
123
- return node;
124
- if (node.children) {
125
- var result = findNodeByValue(node.children, val);
126
- if (result)
127
- return result;
146
+ else {
147
+ var single = newSelected[0] || null;
148
+ onChange(single);
149
+ if (single) {
150
+ setInputValue(findLabelByValue(treeData, single));
151
+ setIsInputDisabled(true);
152
+ }
153
+ else {
154
+ setInputValue('');
155
+ setIsInputDisabled(false);
128
156
  }
129
157
  }
130
- return null;
131
- };
132
- var findLabelByValue = function (nodes, val) {
133
- var node = findNodeByValue(nodes, val);
134
- return node ? node.label : '';
135
158
  };
136
- var handleExpandedItemsChange = function (event, itemIds) {
137
- setExpandedItems(itemIds);
159
+ var handleLabelClick = function (val) {
160
+ var newSelected;
161
+ if (multi) {
162
+ newSelected = selectedItems.includes(val)
163
+ ? selectedItems.filter(function (v) { return v !== val; })
164
+ : __spreadArray(__spreadArray([], selectedItems, true), [val], false);
165
+ }
166
+ else {
167
+ newSelected = [val];
168
+ }
169
+ // simulate SyntheticEvent
170
+ handleSelectionChange({}, newSelected);
138
171
  };
139
172
  var handleReset = function () {
140
173
  setFilterTerm('');
141
- setSelectedItem(null);
142
- setExpandedItems([]);
174
+ setSelectedItems([]);
175
+ onChange(multi ? [] : null);
143
176
  setInputValue('');
144
177
  setIsInputDisabled(false);
145
- onChange(null);
178
+ setExpandedItems(getAllNodeIds(treeData));
179
+ };
180
+ var renderTree = function (nodes) {
181
+ return nodes.map(function (node) { return (react_1.default.createElement(TreeItem_1.TreeItem, { key: node.value, itemId: node.value, label: react_1.default.createElement("span", { onClick: function () { return handleLabelClick(node.value); }, style: { cursor: 'pointer' } }, node.label.trim() === '' ? 'Kök' : node.label) }, node.children ? renderTree(node.children) : null)); });
146
182
  };
147
183
  return (react_1.default.createElement("div", null,
148
184
  label && react_1.default.createElement("label", null, label),
149
185
  react_1.default.createElement(CustomInput_1.default, { id: "tree-search", value: inputValue || filterTerm, inputType: CustomInput_1.InputType.TEXT, disabled: isInputDisabled, placeholder: placeholder, buttonIcon: react_1.default.createElement(fa_1.FaTimes, null), buttonClass: "btn btn-danger bg-soft-danger", buttonOnClick: handleReset, onChange: function (e) { return setFilterTerm(e.target.value); } }),
150
- react_1.default.createElement(SimpleTreeView_1.SimpleTreeView, { checkboxSelection: true,
151
- // SimpleTreeView beklediği tip string olduğundan, dizi yerine selectedItem'ı direkt veriyoruz.
152
- selectedItems: selectedItem || '', expandedItems: expandedItems, onSelectedItemsChange: handleSelectionChange, onExpandedItemsChange: handleExpandedItemsChange }, renderTree(filteredNodes))));
186
+ react_1.default.createElement(SimpleTreeView_1.SimpleTreeView, { checkboxSelection: true, multiSelect: multi, selectedItems: selectedItems, expandedItems: expandedItems, onSelectedItemsChange: handleSelectionChange, onExpandedItemsChange: function (event, itemIds) {
187
+ var ids = Array.isArray(itemIds) ? itemIds : itemIds ? [itemIds] : [];
188
+ setExpandedItems(ids);
189
+ } }, renderTree(filteredNodes))));
153
190
  };
154
191
  exports.default = CustomTreeView;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import AlbinaForm from './components/AlbinaForm';
2
1
  import CustomButton from './components/CustomButton';
3
2
  import CustomCheckbox from './components/CustomCheckbox';
4
3
  import CustomDateTimePicker from './components/CustomDateTimePicker';
@@ -17,4 +16,4 @@ import CustomAutocompleteInput from './components/CustomAutocompleteInput';
17
16
  import CustomProgressBar from './components/CustomProgressBar';
18
17
  import CustomTimeline from './components/CustomTimeline';
19
18
  import CustomDatatable from './components/CustomDatatable';
20
- export { AlbinaForm, CustomButton, CustomCheckbox, CustomDateTimePicker, CustomDivider, CustomForm, CustomInput, CustomModal, CustomRadioButton, CustomRichTextbox, CustomSelect, CustomTab, CustomText, CustomTextarea, CustomTreeView, CustomAutocompleteInput, CustomProgressBar, CustomTimeline, CustomDatatable, };
19
+ export { CustomButton, CustomCheckbox, CustomDateTimePicker, CustomDivider, CustomForm, CustomInput, CustomModal, CustomRadioButton, CustomRichTextbox, CustomSelect, CustomTab, CustomText, CustomTextarea, CustomTreeView, CustomAutocompleteInput, CustomProgressBar, CustomTimeline, CustomDatatable, };
package/dist/index.js CHANGED
@@ -3,9 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CustomDatatable = exports.CustomTimeline = exports.CustomProgressBar = exports.CustomAutocompleteInput = exports.CustomTreeView = exports.CustomTextarea = exports.CustomText = exports.CustomTab = exports.CustomSelect = exports.CustomRichTextbox = exports.CustomRadioButton = exports.CustomModal = exports.CustomInput = exports.CustomForm = exports.CustomDivider = exports.CustomDateTimePicker = exports.CustomCheckbox = exports.CustomButton = exports.AlbinaForm = void 0;
7
- var AlbinaForm_1 = __importDefault(require("./components/AlbinaForm"));
8
- exports.AlbinaForm = AlbinaForm_1.default;
6
+ exports.CustomDatatable = exports.CustomTimeline = exports.CustomProgressBar = exports.CustomAutocompleteInput = exports.CustomTreeView = exports.CustomTextarea = exports.CustomText = exports.CustomTab = exports.CustomSelect = exports.CustomRichTextbox = exports.CustomRadioButton = exports.CustomModal = exports.CustomInput = exports.CustomForm = exports.CustomDivider = exports.CustomDateTimePicker = exports.CustomCheckbox = exports.CustomButton = void 0;
9
7
  var CustomButton_1 = __importDefault(require("./components/CustomButton"));
10
8
  exports.CustomButton = CustomButton_1.default;
11
9
  var CustomCheckbox_1 = __importDefault(require("./components/CustomCheckbox"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "albinasoft-ui-package",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {