@synerise/ds-cascader 0.5.25 → 0.5.26

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.5.26](https://github.com/Synerise/synerise-design/compare/@synerise/ds-cascader@0.5.25...@synerise/ds-cascader@0.5.26) (2024-11-28)
7
+
8
+ **Note:** Version bump only for package @synerise/ds-cascader
9
+
10
+
11
+
12
+
13
+
6
14
  ## [0.5.25](https://github.com/Synerise/synerise-design/compare/@synerise/ds-cascader@0.5.24...@synerise/ds-cascader@0.5.25) (2024-11-21)
7
15
 
8
16
  **Note:** Version bump only for package @synerise/ds-cascader
package/dist/Cascader.js CHANGED
@@ -13,50 +13,39 @@ var BREADCRUMB_ITEM_HEIGHT = 50;
13
13
  var CATEGORY_ITEM_HEIGHT = 32;
14
14
  export var Cascader = function Cascader(_ref) {
15
15
  var _categoriesContainer$;
16
-
17
16
  var rootCategory = _ref.rootCategory,
18
- searchClearTooltip = _ref.searchClearTooltip,
19
- searchInputPlaceholder = _ref.searchInputPlaceholder,
20
- onCategorySelect = _ref.onCategorySelect,
21
- categorySuffix = _ref.categorySuffix,
22
- maxHeight = _ref.maxHeight,
23
- contentStyles = _ref.contentStyles,
24
- selectedCategoriesIds = _ref.selectedCategoriesIds;
25
-
17
+ searchClearTooltip = _ref.searchClearTooltip,
18
+ searchInputPlaceholder = _ref.searchInputPlaceholder,
19
+ onCategorySelect = _ref.onCategorySelect,
20
+ categorySuffix = _ref.categorySuffix,
21
+ maxHeight = _ref.maxHeight,
22
+ contentStyles = _ref.contentStyles,
23
+ selectedCategoriesIds = _ref.selectedCategoriesIds;
26
24
  var _useState = useState(''),
27
- searchQuery = _useState[0],
28
- setSearchQuery = _useState[1];
29
-
25
+ searchQuery = _useState[0],
26
+ setSearchQuery = _useState[1];
30
27
  var _useState2 = useState(rootCategory),
31
- activeCategory = _useState2[0],
32
- setActiveCategory = _useState2[1];
33
-
28
+ activeCategory = _useState2[0],
29
+ setActiveCategory = _useState2[1];
34
30
  var _useState3 = useState([]),
35
- paths = _useState3[0],
36
- setPaths = _useState3[1];
37
-
31
+ paths = _useState3[0],
32
+ setPaths = _useState3[1];
38
33
  var _useState4 = useState([]),
39
- filteredPaths = _useState4[0],
40
- setFilteredPaths = _useState4[1];
41
-
34
+ filteredPaths = _useState4[0],
35
+ setFilteredPaths = _useState4[1];
42
36
  var _useState5 = useState([]),
43
- enteredCategories = _useState5[0],
44
- setEnteredCategories = _useState5[1];
45
-
37
+ enteredCategories = _useState5[0],
38
+ setEnteredCategories = _useState5[1];
46
39
  var _useState6 = useState(0),
47
- scrollTop = _useState6[0],
48
- setScrollTop = _useState6[1];
49
-
40
+ scrollTop = _useState6[0],
41
+ setScrollTop = _useState6[1];
50
42
  var _useState7 = useState(selectedCategoriesIds || []),
51
- selectedIds = _useState7[0],
52
- setSelectedIds = _useState7[1];
53
-
43
+ selectedIds = _useState7[0],
44
+ setSelectedIds = _useState7[1];
54
45
  var searchResultsContainer = useRef();
55
46
  var categoriesContainer = useRef();
56
-
57
47
  var _useResize = useResize(searchResultsContainer),
58
- height = _useResize.height;
59
-
48
+ height = _useResize.height;
60
49
  var previousCategory = enteredCategories[enteredCategories.length - 2];
61
50
  var isSearching = !!paths && searchQuery.length > 0;
62
51
  var categoriesMaxHeight = maxHeight ? Math.floor((maxHeight - Number(categoriesContainer == null || (_categoriesContainer$ = categoriesContainer.current) == null ? void 0 : _categoriesContainer$.offsetTop)) / CATEGORY_ITEM_HEIGHT) * CATEGORY_ITEM_HEIGHT + VERTICAL_PADDING_OFFSET : undefined;
@@ -66,7 +55,6 @@ export var Cascader = function Cascader(_ref) {
66
55
  useEffect(function () {
67
56
  var allPaths = getAllPaths(rootCategory, []);
68
57
  setPaths(allPaths);
69
-
70
58
  if (activeCategory.id === rootCategory.id || !activeCategory.id) {
71
59
  setActiveCategory(rootCategory);
72
60
  }
@@ -74,11 +62,9 @@ export var Cascader = function Cascader(_ref) {
74
62
  useEffect(function () {
75
63
  setSelectedIds(selectedCategoriesIds);
76
64
  }, [selectedCategoriesIds]);
77
-
78
65
  var onItemSelect = function onItemSelect(item) {
79
66
  var newSelectedList;
80
67
  var itemAlreadySelected = selectedIds.indexOf(item.id) !== -1;
81
-
82
68
  if (!itemAlreadySelected) {
83
69
  newSelectedList = [].concat(selectedIds, [item.id]);
84
70
  onCategorySelect && onCategorySelect(item, true);
@@ -88,10 +74,8 @@ export var Cascader = function Cascader(_ref) {
88
74
  });
89
75
  onCategorySelect && onCategorySelect(item, false);
90
76
  }
91
-
92
77
  setSelectedIds([].concat(newSelectedList));
93
78
  };
94
-
95
79
  var onCategoryClick = function onCategoryClick(category) {
96
80
  var entered = {
97
81
  id: category.id,
@@ -100,7 +84,6 @@ export var Cascader = function Cascader(_ref) {
100
84
  };
101
85
  var updatedEnteredCategories = [].concat(enteredCategories, [entered]);
102
86
  var hasMoreCategories = hasNestedCategories(category);
103
-
104
87
  if (hasMoreCategories) {
105
88
  setActiveCategory(category);
106
89
  setEnteredCategories(updatedEnteredCategories);
@@ -108,27 +91,22 @@ export var Cascader = function Cascader(_ref) {
108
91
  onItemSelect(category);
109
92
  }
110
93
  };
111
-
112
94
  var onPathClick = useCallback(function (pathName) {
113
95
  var chosenCategory = enteredCategories.find(function (enteredCategory) {
114
96
  return enteredCategory.name === pathName;
115
97
  });
116
98
  var updatedEnteredCategories;
117
-
118
99
  if (chosenCategory) {
119
100
  updatedEnteredCategories = enteredCategories.slice(0, enteredCategories.indexOf(chosenCategory) + 1);
120
101
  }
121
-
122
102
  if (chosenCategory != null && chosenCategory.id) {
123
103
  var nextActiveCategory = searchCategoryWithId(rootCategory, chosenCategory.id);
124
-
125
104
  if (nextActiveCategory) {
126
105
  setActiveCategory(nextActiveCategory);
127
106
  }
128
107
  } else {
129
108
  setActiveCategory(rootCategory);
130
109
  }
131
-
132
110
  setEnteredCategories(updatedEnteredCategories || []);
133
111
  }, [rootCategory, enteredCategories]);
134
112
  var onHomeIconClick = useCallback(function () {
@@ -141,12 +119,10 @@ export var Cascader = function Cascader(_ref) {
141
119
  setFilteredPaths(filtered);
142
120
  } else setFilteredPaths([]);
143
121
  }, [paths]);
144
-
145
122
  var handleBreadCrumbClick = function handleBreadCrumbClick(breadcrumb) {
146
123
  var selectedCategory = searchCategoryWithId(rootCategory, breadcrumb == null ? void 0 : breadcrumb.id);
147
124
  selectedCategory ? onItemSelect(selectedCategory) : onItemSelect(breadcrumb);
148
125
  };
149
-
150
126
  var backActionVisible = useMemo(function () {
151
127
  return !searchQuery && !!previousCategory && !!previousCategory.name && enteredCategories.length > 1;
152
128
  }, [enteredCategories.length, previousCategory, searchQuery]);
@@ -5,7 +5,7 @@ import * as S from './BackAction.styles';
5
5
  import { DividerContainer } from '../../Cascader.styles';
6
6
  export var BackAction = function BackAction(_ref) {
7
7
  var label = _ref.label,
8
- onClick = _ref.onClick;
8
+ onClick = _ref.onClick;
9
9
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(S.BackActionWrapper, null, /*#__PURE__*/React.createElement(S.ContentWrapper, {
10
10
  onClick: onClick
11
11
  }, /*#__PURE__*/React.createElement(S.IconWrapper, null, /*#__PURE__*/React.createElement(Icon, {
@@ -3,8 +3,8 @@ import Icon from '@synerise/ds-icon';
3
3
  import * as S from './BottomAction.styles';
4
4
  export var BottomAction = function BottomAction(_ref) {
5
5
  var onClickAction = _ref.onClickAction,
6
- children = _ref.children,
7
- icon = _ref.icon;
6
+ children = _ref.children,
7
+ icon = _ref.icon;
8
8
  return /*#__PURE__*/React.createElement(S.BottomAction, {
9
9
  onClick: onClickAction
10
10
  }, icon && /*#__PURE__*/React.createElement(S.IconWrapper, null, /*#__PURE__*/React.createElement(Icon, {
@@ -6,27 +6,25 @@ import * as S from './Breadcrumb.styles';
6
6
  import { shouldHaveArrowPlaceholder, shouldRenderArrow, isOverflown, attachActiveClassName } from './utils';
7
7
  export var Breadcrumb = function Breadcrumb(_ref) {
8
8
  var path = _ref.path,
9
- disabled = _ref.disabled,
10
- highlight = _ref.highlight,
11
- description = _ref.description,
12
- onPathClick = _ref.onPathClick,
13
- compact = _ref.compact,
14
- startWithArrow = _ref.startWithArrow,
15
- gradientOverlap = _ref.gradientOverlap,
16
- highlightActivePath = _ref.highlightActivePath,
17
- className = _ref.className,
18
- prefixel = _ref.prefixel,
19
- style = _ref.style;
9
+ disabled = _ref.disabled,
10
+ highlight = _ref.highlight,
11
+ description = _ref.description,
12
+ onPathClick = _ref.onPathClick,
13
+ compact = _ref.compact,
14
+ startWithArrow = _ref.startWithArrow,
15
+ gradientOverlap = _ref.gradientOverlap,
16
+ highlightActivePath = _ref.highlightActivePath,
17
+ className = _ref.className,
18
+ prefixel = _ref.prefixel,
19
+ style = _ref.style;
20
20
  var pathToDisplay = useMemo(function () {
21
21
  var breadcrumbsArray = [].concat(path);
22
22
  return compact ? breadcrumbsArray.reverse() : breadcrumbsArray;
23
23
  }, [compact, path]);
24
24
  var contentRef = useRef(null);
25
-
26
25
  var _useState = useState(false),
27
- gradient = _useState[0],
28
- setGradient = _useState[1];
29
-
26
+ gradient = _useState[0],
27
+ setGradient = _useState[1];
30
28
  useEffect(function () {
31
29
  var shouldRenderGradientOverlap = gradientOverlap && isOverflown(contentRef);
32
30
  setGradient(!!shouldRenderGradientOverlap);
@@ -35,7 +33,6 @@ export var Breadcrumb = function Breadcrumb(_ref) {
35
33
  if (description && typeof description === 'string' && highlight) {
36
34
  return renderWithHighlight(description, highlight, 'search-highlight', 'search-highlight');
37
35
  }
38
-
39
36
  return description;
40
37
  }, [description, highlight]);
41
38
  return /*#__PURE__*/React.createElement(S.Breadcrumb, {
@@ -2,27 +2,22 @@ export var attachActiveClassName = function attachActiveClassName(index, highlig
2
2
  if (compact) {
3
3
  return highlightActivePath && index === 0 ? 'active' : '';
4
4
  }
5
-
6
5
  return highlightActivePath && index === path.length - 1 ? 'active' : '';
7
6
  };
8
7
  export var shouldRenderArrow = function shouldRenderArrow(breadCrumbPath, index, startWithArrow) {
9
8
  if (!breadCrumbPath || !breadCrumbPath.length) {
10
9
  return false;
11
10
  }
12
-
13
11
  var nextBreadcrumb = breadCrumbPath[index + 1];
14
-
15
12
  if (!nextBreadcrumb) {
16
13
  return startWithArrow;
17
14
  }
18
-
19
15
  return true;
20
16
  };
21
17
  export var shouldHaveArrowPlaceholder = function shouldHaveArrowPlaceholder(index, path, compact, startWithArrow) {
22
18
  if (compact) {
23
19
  return startWithArrow || index < path.length - 1 && path.length > 1;
24
20
  }
25
-
26
21
  return startWithArrow || path.length > 1 || index > 0;
27
22
  };
28
23
  export var isOverflown = function isOverflown(elementRef) {
@@ -30,6 +25,5 @@ export var isOverflown = function isOverflown(elementRef) {
30
25
  var element = elementRef.current;
31
26
  return element.scrollWidth > element.clientWidth;
32
27
  }
33
-
34
28
  return false;
35
29
  };
@@ -5,12 +5,12 @@ var DEFAULT_VISIBLE_ROWS = 6;
5
5
  var DEFAULT_ROW_HEIGHT = 50;
6
6
  export var BreadcrumbsList = function BreadcrumbsList(_ref) {
7
7
  var paths = _ref.paths,
8
- highlight = _ref.highlight,
9
- width = _ref.width,
10
- visibleRows = _ref.visibleRows,
11
- onBreadCrumbClick = _ref.onBreadCrumbClick,
12
- rowHeight = _ref.rowHeight,
13
- scrollTop = _ref.scrollTop;
8
+ highlight = _ref.highlight,
9
+ width = _ref.width,
10
+ visibleRows = _ref.visibleRows,
11
+ onBreadCrumbClick = _ref.onBreadCrumbClick,
12
+ rowHeight = _ref.rowHeight,
13
+ scrollTop = _ref.scrollTop;
14
14
  var listPropsObject = {
15
15
  scrollTop: scrollTop
16
16
  };
@@ -10,10 +10,10 @@ var CategoriesSuffix = styled.div.withConfig({
10
10
  })([""]);
11
11
  export var CategoriesList = function CategoriesList(_ref) {
12
12
  var rootCategory = _ref.rootCategory,
13
- onCategoryClick = _ref.onCategoryClick,
14
- suffixel = _ref.suffixel,
15
- onSuffixelClick = _ref.onSuffixelClick,
16
- selectedIds = _ref.selectedIds;
13
+ onCategoryClick = _ref.onCategoryClick,
14
+ suffixel = _ref.suffixel,
15
+ onSuffixelClick = _ref.onSuffixelClick,
16
+ selectedIds = _ref.selectedIds;
17
17
  var onCategoryClickHandler = useCallback(function (item) {
18
18
  onCategoryClick && onCategoryClick(item);
19
19
  }, [onCategoryClick]);
@@ -21,7 +21,6 @@ export var CategoriesList = function CategoriesList(_ref) {
21
21
  event.stopPropagation();
22
22
  onSuffixelClick && onSuffixelClick(item);
23
23
  }, [onSuffixelClick]);
24
-
25
24
  var renderSuffix = function renderSuffix(item) {
26
25
  return /*#__PURE__*/React.createElement(CategoriesSuffix, {
27
26
  onClick: function onClick(event) {
@@ -32,10 +31,8 @@ export var CategoriesList = function CategoriesList(_ref) {
32
31
  component: /*#__PURE__*/React.createElement(CheckS, null)
33
32
  }) : suffixel);
34
33
  };
35
-
36
34
  return /*#__PURE__*/React.createElement(React.Fragment, null, Object.keys(rootCategory).filter(function (key) {
37
35
  var _rootCategory$key;
38
-
39
36
  return (_rootCategory$key = rootCategory[key]) == null ? void 0 : _rootCategory$key.name;
40
37
  }).map(function (key) {
41
38
  var item = rootCategory[key];
@@ -7,12 +7,11 @@ import { BackAction } from '../BackAction/BackAction';
7
7
  import { Breadcrumb } from '../Breadcrumb/Breadcrumb';
8
8
  export var Navigation = function Navigation(_ref) {
9
9
  var backActionVisible = _ref.backActionVisible,
10
- onHomeIconClick = _ref.onHomeIconClick,
11
- onPathClick = _ref.onPathClick,
12
- activeCategory = _ref.activeCategory,
13
- previousCategory = _ref.previousCategory,
14
- breadcrumbVisible = _ref.breadcrumbVisible;
15
-
10
+ onHomeIconClick = _ref.onHomeIconClick,
11
+ onPathClick = _ref.onPathClick,
12
+ activeCategory = _ref.activeCategory,
13
+ previousCategory = _ref.previousCategory,
14
+ breadcrumbVisible = _ref.breadcrumbVisible;
16
15
  var renderBreadcrumbs = function renderBreadcrumbs() {
17
16
  return breadcrumbVisible && activeCategory ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Breadcrumb, {
18
17
  path: activeCategory.path,
@@ -30,7 +29,6 @@ export var Navigation = function Navigation(_ref) {
30
29
  dashed: true
31
30
  }))) : null;
32
31
  };
33
-
34
32
  var renderBackAction = function renderBackAction() {
35
33
  return backActionVisible && previousCategory ? /*#__PURE__*/React.createElement(BackAction, {
36
34
  label: previousCategory.name,
@@ -39,7 +37,6 @@ export var Navigation = function Navigation(_ref) {
39
37
  }
40
38
  }) : null;
41
39
  };
42
-
43
40
  return /*#__PURE__*/React.createElement(React.Fragment, null, renderBreadcrumbs(), renderBackAction());
44
41
  };
45
42
  export default Navigation;
package/dist/utils.js CHANGED
@@ -2,49 +2,38 @@ export var searchCategoryWithId = function searchCategoryWithId(category, id) {
2
2
  if (id === undefined) {
3
3
  return undefined;
4
4
  }
5
-
6
5
  if (category.id === id) {
7
6
  return category;
8
7
  }
9
-
10
8
  var result, property;
11
9
  var keys = Object.keys(category);
12
-
13
10
  for (var i = 0; i < keys.length; i += 1) {
14
11
  property = keys[i];
15
-
16
12
  if (Object.prototype.hasOwnProperty.call(category, property) && typeof category[property] === 'object') {
17
13
  result = searchCategoryWithId(category[property], id);
18
-
19
14
  if (result) {
20
15
  return result;
21
16
  }
22
17
  }
23
18
  }
24
-
25
19
  return result;
26
20
  };
27
21
  export var getAllPaths = function getAllPaths(category, resultsArray) {
28
22
  var results = resultsArray || [];
29
-
30
23
  if (category.path && category.path.length > 0) {
31
24
  results.push({
32
25
  path: category.path,
33
26
  id: category.id
34
27
  });
35
28
  }
36
-
37
29
  var property;
38
30
  var keys = Object.keys(category);
39
-
40
31
  for (var i = 0; i < keys.length; i += 1) {
41
32
  property = keys[i];
42
-
43
33
  if (Object.prototype.hasOwnProperty.call(category, property) && typeof category[property] === 'object') {
44
34
  results = getAllPaths(category[property], results);
45
35
  }
46
36
  }
47
-
48
37
  return results && results.length > 0 ? results : undefined;
49
38
  };
50
39
  export var filterPaths = function filterPaths(paths, searchQuery) {
@@ -59,14 +48,11 @@ export var filterPaths = function filterPaths(paths, searchQuery) {
59
48
  export var hasNestedCategories = function hasNestedCategories(category) {
60
49
  var property;
61
50
  var keys = Object.keys(category);
62
-
63
51
  for (var i = 0; i < keys.length; i += 1) {
64
52
  property = keys[i];
65
-
66
53
  if (Object.prototype.hasOwnProperty.call(category, property) && typeof category[property] === 'object' && Object.prototype.toString.call(category[property]) === '[object Object]') {
67
54
  return true;
68
55
  }
69
56
  }
70
-
71
57
  return false;
72
58
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-cascader",
3
- "version": "0.5.25",
3
+ "version": "0.5.26",
4
4
  "description": "Cascader UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -34,12 +34,12 @@
34
34
  ],
35
35
  "types": "dist/index.d.ts",
36
36
  "dependencies": {
37
- "@synerise/ds-divider": "^0.7.15",
38
- "@synerise/ds-icon": "^0.67.0",
39
- "@synerise/ds-list-item": "^0.4.19",
40
- "@synerise/ds-scrollbar": "^0.11.19",
41
- "@synerise/ds-search": "^0.9.19",
42
- "@synerise/ds-search-bar": "^0.7.2",
37
+ "@synerise/ds-divider": "^0.7.16",
38
+ "@synerise/ds-icon": "^0.67.1",
39
+ "@synerise/ds-list-item": "^0.5.0",
40
+ "@synerise/ds-scrollbar": "^0.11.20",
41
+ "@synerise/ds-search": "^0.9.20",
42
+ "@synerise/ds-search-bar": "^0.7.3",
43
43
  "@synerise/ds-utils": "^0.31.2"
44
44
  },
45
45
  "peerDependencies": {
@@ -47,5 +47,5 @@
47
47
  "react": ">=16.9.0 <= 17.0.2",
48
48
  "styled-components": "5.0.1"
49
49
  },
50
- "gitHead": "05f083c767e2cec3c2f91c9475aee89852a77d6c"
50
+ "gitHead": "4a56ee7ef816c22341ce704154dc7aa65b7d1dcc"
51
51
  }