albinasoft-ui-package 1.0.22 → 1.0.25

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.
@@ -0,0 +1,38 @@
1
+ .progress-bar-container {
2
+ margin-bottom: 30px;
3
+ padding: 10px;
4
+ width: 100%;
5
+ }
6
+
7
+ .step-item {
8
+ cursor: pointer;
9
+ display: flex;
10
+ align-items: center;
11
+ flex-direction: column;
12
+ position: relative;
13
+ z-index: 1;
14
+ }
15
+
16
+ .step-circle {
17
+ width: 30px;
18
+ height: 30px;
19
+ border-radius: 50%;
20
+ color: #fff;
21
+ display: flex;
22
+ justify-content: center;
23
+ align-items: center;
24
+ font-weight: bold;
25
+ margin-bottom: 10px;
26
+ }
27
+
28
+ .step-label {
29
+ font-size: 14px;
30
+ font-weight: bold;
31
+ }
32
+
33
+ .step-line {
34
+ flex: 1;
35
+ height: 4px;
36
+ margin: 0 10px;
37
+ }
38
+
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import "@css/ProgressBar.css";
3
+ interface ProgressBarProps {
4
+ activeStep: number;
5
+ stepLabels: string[];
6
+ onStepClick: (step: number) => void;
7
+ }
8
+ declare const ProgressBar: React.FC<ProgressBarProps>;
9
+ export default ProgressBar;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = __importDefault(require("react"));
7
+ require("@css/ProgressBar.css");
8
+ var ProgressBar = function (_a) {
9
+ var activeStep = _a.activeStep, stepLabels = _a.stepLabels, onStepClick = _a.onStepClick;
10
+ return (react_1.default.createElement("div", { className: "progress-bar-container" },
11
+ react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", position: "relative" } }, stepLabels.map(function (label, index) {
12
+ var currentStep = index + 1;
13
+ var isActive = activeStep >= currentStep;
14
+ var isCompleted = activeStep > currentStep;
15
+ return (react_1.default.createElement(react_1.default.Fragment, { key: label },
16
+ react_1.default.createElement("div", { onClick: function () { return onStepClick(currentStep); }, className: "step-item", style: {
17
+ cursor: activeStep === currentStep ? "default" : "pointer",
18
+ zIndex: isActive ? 2 : 1,
19
+ } },
20
+ react_1.default.createElement("div", { className: "step-circle", style: {
21
+ backgroundColor: isCompleted
22
+ ? "#4caf50"
23
+ : isActive
24
+ ? "#ffa500"
25
+ : "#ccc",
26
+ border: isActive ? "2px solid #4caf50" : "none",
27
+ } }, currentStep),
28
+ react_1.default.createElement("span", { className: "step-label", style: {
29
+ color: isCompleted
30
+ ? "#4caf50"
31
+ : isActive
32
+ ? "#ffa500"
33
+ : "#ccc",
34
+ } }, label)),
35
+ index < stepLabels.length - 1 && (react_1.default.createElement("div", { className: "step-line", style: {
36
+ backgroundColor: activeStep > currentStep ? "#4caf50" : "#ddd",
37
+ } }))));
38
+ }))));
39
+ };
40
+ exports.default = ProgressBar;
@@ -4,6 +4,7 @@ interface CustomTreeViewProps {
4
4
  label?: string;
5
5
  value: string;
6
6
  treeData: TreeNode[];
7
+ placeholder?: string;
7
8
  onChange: (selected: string) => void;
8
9
  }
9
10
  export interface TreeNode {
@@ -52,17 +52,19 @@ require("react-checkbox-tree/lib/react-checkbox-tree.css");
52
52
  var fa_1 = require("react-icons/fa");
53
53
  var CustomInput_1 = __importStar(require("./CustomInput"));
54
54
  var CustomTreeView = function (_a) {
55
- var label = _a.label, value = _a.value, treeData = _a.treeData, onChange = _a.onChange;
56
- var _b = (0, react_1.useState)(value ? [value] : []), checked = _b[0], setChecked = _b[1];
57
- var _c = (0, react_1.useState)([]), expanded = _c[0], setExpanded = _c[1];
58
- var _d = (0, react_1.useState)(''), filterTerm = _d[0], setFilterTerm = _d[1];
59
- var _e = (0, react_1.useState)(treeData), filteredTreeData = _e[0], setFilteredTreeData = _e[1];
60
- var _f = (0, react_1.useState)([]), selectedPath = _f[0], setSelectedPath = _f[1]; // 🔥 Seçilen path
61
- // 🚀 Recursive function to add `showCheckbox` only for leaf nodes
55
+ 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;
56
+ var _c = (0, react_1.useState)(value ? [value] : []), checked = _c[0], setChecked = _c[1];
57
+ var _d = (0, react_1.useState)([]), expanded = _d[0], setExpanded = _d[1];
58
+ var _e = (0, react_1.useState)(''), filterTerm = _e[0], setFilterTerm = _e[1];
59
+ var _f = (0, react_1.useState)(treeData), filteredTreeData = _f[0], setFilteredTreeData = _f[1];
60
+ var _g = (0, react_1.useState)([]), selectedPath = _g[0], setSelectedPath = _g[1];
61
+ var _h = (0, react_1.useState)(''), inputValue = _h[0], setInputValue = _h[1];
62
+ var _j = (0, react_1.useState)(false), isInputDisabled = _j[0], setIsInputDisabled = _j[1];
63
+ // Recursive function to add `showCheckbox` only for leaf nodes
62
64
  var markLeafCheckboxOnly = function (nodes) {
63
65
  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 })); });
64
66
  };
65
- // 🚀 Parent Path'i Bulma (recursive)
67
+ // Parent Path'i Bulma (recursive)
66
68
  var findParentPath = function (nodes, targetValue, path) {
67
69
  if (path === void 0) { path = []; }
68
70
  for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
@@ -79,11 +81,11 @@ var CustomTreeView = function (_a) {
79
81
  }
80
82
  return null;
81
83
  };
82
- // 🚀 Filtreleme fonksiyonu (path'leri de genişletiyoruz)
84
+ // Filtreleme fonksiyonu (path'leri de genişletiyoruz)
83
85
  var filterTreeData = function (nodes, searchTerm) {
84
86
  var pathsToExpand = [];
85
87
  var filteredNodes = nodes.map(function (node) {
86
- var nodeMatches = node.label.toLowerCase().includes(searchTerm.toLowerCase());
88
+ var nodeMatches = node.label.toLocaleLowerCase('tr-TR').includes(searchTerm.toLocaleLowerCase('tr-TR'));
87
89
  var children = node.children ? filterTreeData(node.children, searchTerm) : { filteredNodes: [], pathsToExpand: [] };
88
90
  var childMatches = children.filteredNodes.length > 0;
89
91
  if (nodeMatches || childMatches) {
@@ -94,7 +96,21 @@ var CustomTreeView = function (_a) {
94
96
  }).filter(Boolean);
95
97
  return { filteredNodes: filteredNodes, pathsToExpand: pathsToExpand };
96
98
  };
97
- // 🚀 Filtreleme işlemi
99
+ // Belirtilen value'ya karşılık gelen leaf'in label'ını bulur (recursive)
100
+ var findLeafLabel = function (nodes, targetValue) {
101
+ for (var _i = 0, nodes_2 = nodes; _i < nodes_2.length; _i++) {
102
+ var node = nodes_2[_i];
103
+ if (node.value === targetValue)
104
+ return node.label;
105
+ if (node.children) {
106
+ var result = findLeafLabel(node.children, targetValue);
107
+ if (result)
108
+ return result;
109
+ }
110
+ }
111
+ return null;
112
+ };
113
+ // Filtreleme işlemi
98
114
  (0, react_1.useEffect)(function () {
99
115
  if (filterTerm.trim() === '') {
100
116
  setFilteredTreeData(treeData);
@@ -106,7 +122,7 @@ var CustomTreeView = function (_a) {
106
122
  setExpanded(Array.from(new Set(__spreadArray(__spreadArray([], pathsToExpand, true), selectedPath, true)))); // 🔥 Genişletilecek tüm path'leri belirle
107
123
  }
108
124
  }, [filterTerm, treeData, selectedPath]);
109
- // 🚀 Kullanıcı bir leaf seçtiğinde, o leaf'in parent'larını genişlet
125
+ // Kullanıcı bir leaf seçtiğinde, o leaf'in parent'larını genişlet
110
126
  var handleCheck = function (checkedNodes) {
111
127
  var newlySelected = checkedNodes.find(function (node) { return !checked.includes(node); });
112
128
  var selectedLeaf = newlySelected || '';
@@ -117,13 +133,23 @@ var CustomTreeView = function (_a) {
117
133
  setSelectedPath(parentPath); // 🔥 Kalıcı olarak bu path'i hatırla
118
134
  setExpanded(parentPath); // 🔥 Yalnızca bu leaf'in parent path'i açık kalacak
119
135
  }
136
+ var selectedLabel = findLeafLabel(treeData, selectedLeaf) || '';
137
+ setInputValue(selectedLabel);
138
+ setIsInputDisabled(true);
120
139
  }
121
- setFilterTerm(''); // 🔥 Arama kutusunu temizle
140
+ setFilterTerm('');
122
141
  onChange(selectedLeaf);
123
142
  };
143
+ var handleReset = function () {
144
+ setFilterTerm('');
145
+ setChecked([]);
146
+ setExpanded([]);
147
+ setInputValue('');
148
+ setIsInputDisabled(false);
149
+ };
124
150
  return (react_1.default.createElement("div", null,
125
151
  label && react_1.default.createElement("label", null, label),
126
- react_1.default.createElement(CustomInput_1.default, { id: "tree-search", value: filterTerm, inputType: CustomInput_1.InputType.TEXT, placeholder: "Ara...", onChange: function (e) { return setFilterTerm(e.target.value); } }),
152
+ 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); } }),
127
153
  react_1.default.createElement(react_checkbox_tree_1.default, { nodes: markLeafCheckboxOnly(filteredTreeData), checked: checked, expanded: expanded, onCheck: handleCheck, onExpand: setExpanded, icons: {
128
154
  check: react_1.default.createElement(fa_1.FaCheckSquare, { color: "#4caf50" }),
129
155
  uncheck: react_1.default.createElement(fa_1.FaSquare, { color: "currentColor" }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "albinasoft-ui-package",
3
- "version": "1.0.22",
3
+ "version": "1.0.25",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {