pixelize-design-library 2.1.63 → 2.1.64

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.
@@ -225,7 +225,7 @@ var SearchSelect = function (_a) {
225
225
  (isMultiple || inputValue || !selectedValues.length || !isMultiple) && (react_1.default.createElement(react_2.Input, { ref: inputRef, variant: "unstyled", flex: "1", minW: "5rem", value: inputValue, onChange: function (e) { return setInputValue(e.target.value); }, onFocus: function () {
226
226
  setFocused(true);
227
227
  setIsOpen(true);
228
- }, onBlur: function () { return setFocused(false); }, placeholder: placeholder })),
228
+ }, onBlur: function () { return setFocused(false); }, placeholder: selectedValues.length ? "" : placeholder })),
229
229
  react_1.default.createElement(react_2.Box, { ml: "auto", display: "flex", alignItems: "center", gap: 1 },
230
230
  isRemoveAllIcon && selectedValues.length > 0 && (react_1.default.createElement(ToolTip_1.default, { placement: "top", label: "Remove All", hasArrow: true, bg: theme.colors.gray[600], color: theme.colors.white, fontSize: "0.75rem" },
231
231
  react_1.default.createElement(react_2.IconButton, { icon: react_1.default.createElement(lucide_react_1.X, { size: 12, color: theme.colors.black }), "aria-label": "Clear all", variant: "ghost", size: "sm", onClick: handleClearAll, sx: {
@@ -54,20 +54,19 @@ var lucide_react_1 = require("lucide-react");
54
54
  var ManageColumns = function (_a) {
55
55
  var columns = _a.columns, childInputMethodsRef = _a.childInputMethodsRef;
56
56
  var theme = (0, useCustomTheme_1.useCustomTheme)();
57
- var _b = (0, react_1.useState)(columns.map(function (o) { return (__assign(__assign({}, o), { isHidden: !o.isHidden })); })), items = _b[0], setItems = _b[1];
57
+ // keep isHidden as it is (true = hidden, false = visible)
58
+ var _b = (0, react_1.useState)(columns), items = _b[0], setItems = _b[1];
58
59
  var _c = (0, react_1.useState)(""), searchTerm = _c[0], setSearchTerm = _c[1];
59
60
  var _d = (0, react_1.useState)(null), draggedItemIndex = _d[0], setDraggedItemIndex = _d[1];
60
61
  var _e = (0, react_1.useState)(null), error = _e[0], setError = _e[1];
61
62
  (0, react_1.useImperativeHandle)(childInputMethodsRef, function () {
62
63
  return {
63
64
  getManageColumnsData: function () {
64
- return items.map(function (o) { return (__assign(__assign({}, o), { isHidden: !o.isHidden })); });
65
+ return items;
65
66
  },
66
67
  };
67
68
  }, [items]);
68
- var handleDragStart = function (index) {
69
- setDraggedItemIndex(index);
70
- };
69
+ var handleDragStart = function (index) { return setDraggedItemIndex(index); };
71
70
  var handleDragOver = function (e, index) {
72
71
  e.preventDefault();
73
72
  if (draggedItemIndex === null || draggedItemIndex === index)
@@ -79,13 +78,12 @@ var ManageColumns = function (_a) {
79
78
  setDraggedItemIndex(index);
80
79
  setItems(newItems);
81
80
  };
82
- var handleDragEnd = function () {
83
- setDraggedItemIndex(null);
84
- };
81
+ var handleDragEnd = function () { return setDraggedItemIndex(null); };
82
+ // ✅ Prevent unchecking last visible column
85
83
  var toggleCheckbox = function (index) {
86
84
  var newItems = __spreadArray([], items, true);
87
- var visibleCount = newItems.filter(function (i) { return i.isHidden; }).length;
88
- if (visibleCount === 1 && newItems[index].isHidden) {
85
+ var visibleCount = newItems.filter(function (i) { return !i.isHidden; }).length; // count visible
86
+ if (!newItems[index].isHidden && visibleCount === 1) {
89
87
  setError("At least one column must remain visible.");
90
88
  return;
91
89
  }
@@ -96,21 +94,28 @@ var ManageColumns = function (_a) {
96
94
  var filteredItems = items.filter(function (item) {
97
95
  return item.label.toString().toLowerCase().includes(searchTerm.toLowerCase());
98
96
  });
97
+ // ✅ Select all logic
98
+ var allChecked = items.every(function (item) { return !item.isHidden; });
99
+ var someChecked = items.some(function (item) { return !item.isHidden; }) && !allChecked;
100
+ var handleSelectAll = function () {
101
+ if (allChecked) {
102
+ // if all visible → keep first visible, hide rest
103
+ setItems(items.map(function (item, i) { return (__assign(__assign({}, item), { isHidden: i === 0 ? false : true })); }));
104
+ setError("At least one column must remain visible.");
105
+ }
106
+ else {
107
+ // make all visible
108
+ setItems(items.map(function (item) { return (__assign(__assign({}, item), { isHidden: false })); }));
109
+ setError(null);
110
+ }
111
+ };
99
112
  return (react_1.default.createElement(react_2.Box, { mt: "5" },
100
113
  react_1.default.createElement(react_2.Input, { placeholder: "Search", mb: "4", value: searchTerm, onChange: function (e) { return setSearchTerm(e.target.value); } }),
101
114
  !searchTerm.length && (react_1.default.createElement(react_2.Flex, { align: "center", mb: "2" },
102
- react_1.default.createElement(Checkbox_1.default, { label: "Select all", isChecked: items.every(function (item) { return item.isHidden; }), onChange: function () {
103
- var allChecked = items.every(function (item) { return item.isHidden; });
104
- if (allChecked) {
105
- setError("At least one column must remain visible.");
106
- return;
107
- }
108
- setItems(items.map(function (item) { return (__assign(__assign({}, item), { isHidden: !allChecked })); }));
109
- setError(null);
110
- } }))),
111
- react_1.default.createElement(react_2.List, { spacing: "2" }, filteredItems.length > 0 ? (filteredItems.map(function (item, index) { return (react_1.default.createElement(react_2.ListItem, { key: item.id, draggable: true, onDragStart: function () { return handleDragStart(index); }, onDragOver: function (e) { return handleDragOver(e, index); }, onDragEnd: handleDragEnd, bg: theme.colors.gray[50], display: "flex", alignItems: "center", borderRadius: "md", border: "1px solid", borderColor: "gray.200", cursor: "grab", position: "relative", fontSize: 14 },
115
+ react_1.default.createElement(Checkbox_1.default, { label: "Select all", isChecked: allChecked, isIndeterminate: someChecked, onChange: handleSelectAll }))),
116
+ react_1.default.createElement(react_2.List, { spacing: "2" }, filteredItems.length > 0 ? (filteredItems.map(function (item, index) { return (react_1.default.createElement(react_2.ListItem, { key: item.id, draggable: true, onDragStart: function () { return handleDragStart(index); }, onDragOver: function (e) { return handleDragOver(e, index); }, onDragEnd: handleDragEnd, bg: theme.colors.gray[50], display: "flex", alignItems: "center", borderRadius: "md", border: "1px solid", borderColor: "gray.200", cursor: "grab", position: "relative", fontSize: 14, px: "2", py: "1" },
112
117
  react_1.default.createElement(react_2.IconButton, { "aria-label": "Drag", icon: react_1.default.createElement(lucide_react_1.GripVertical, null), variant: "ghost", cursor: "grab", mr: "1" }),
113
- react_1.default.createElement(Checkbox_1.default, { isChecked: item.isHidden, label: String(item.label), onChange: function () { return toggleCheckbox(index); }, sx: { marginRight: "4" } }))); })) : (react_1.default.createElement(react_2.Text, { color: "gray.500", textAlign: "center" }, "No items found"))),
118
+ react_1.default.createElement(Checkbox_1.default, { isChecked: !item.isHidden, label: String(item.label), onChange: function () { return toggleCheckbox(index); }, sx: { marginRight: "4" } }))); })) : (react_1.default.createElement(react_2.Text, { color: "gray.500", textAlign: "center" }, "No items found"))),
114
119
  error && (react_1.default.createElement(react_2.Text, { color: "red.500", mt: "3", fontSize: "sm" }, error))));
115
120
  };
116
121
  exports.default = ManageColumns;