@constructor-io/constructorio-ui-plp 1.6.1 → 1.6.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.
@@ -70,6 +70,7 @@ function CioPlpGrid(props) {
70
70
  react_1.default.createElement(Sort_1.default, Object.assign({ sortOptions: sort.sortOptions, isOpen: false }, sortConfigs)))),
71
71
  react_1.default.createElement("div", { className: 'cio-product-tiles-container' },
72
72
  react_1.default.createElement(MobileModal_1.default, { isOpen: isFilterOpen, setIsOpen: setIsFilterOpen },
73
+ isSearchPage && (react_1.default.createElement(Groups_1.default, Object.assign({ groups: data.response.groups }, groupsConfigs))),
73
74
  react_1.default.createElement(Filters_1.default, { facets: filters.facets })), (_e = (_d = data.response) === null || _d === void 0 ? void 0 : _d.results) === null || _e === void 0 ? void 0 :
74
75
  _e.map((item) => (react_1.default.createElement("div", { className: 'cio-product-tile', key: item.itemId },
75
76
  react_1.default.createElement(ProductCard_1.default, { key: item.itemId, item: item }))))),
@@ -16,6 +16,7 @@
16
16
  background: none;
17
17
  display: flex;
18
18
  flex-direction: row;
19
+ gap: 8px;
19
20
  width: 100%;
20
21
  justify-content: space-between;
21
22
  align-items: center;
@@ -25,6 +26,7 @@
25
26
  padding: 0 0 8px 0;
26
27
  border-bottom: 1px solid #e1e1e1;
27
28
  margin-bottom: 12px;
29
+ text-align: start;
28
30
  }
29
31
 
30
32
  .cio-see-all {
@@ -6,13 +6,15 @@ const classnames_1 = tslib_1.__importDefault(require("classnames"));
6
6
  const useGroups_1 = tslib_1.__importDefault(require("../../hooks/useGroups"));
7
7
  const FilterOptionListRow_1 = tslib_1.__importDefault(require("../Filters/FilterOptionListRow"));
8
8
  function Groups(props) {
9
- const { isCollapsed: isCollapsedDefault = false, title = 'Categories', children, groups } = props;
9
+ const { isCollapsed: isCollapsedDefault = false, title = 'Categories', children, groups, hideGroups, } = props;
10
10
  const useGroupsReturn = (0, useGroups_1.default)(props);
11
11
  const { optionsToRender, breadcrumbs, initialNumOptions, selectedGroupId, onOptionSelect, goToGroupFilter, isShowAll, setIsShowAll, } = useGroupsReturn;
12
12
  const [isCollapsed, setIsCollapsed] = (0, react_1.useState)(isCollapsedDefault);
13
13
  if (breadcrumbs.length === 0 && optionsToRender.length === 0)
14
14
  return null;
15
- return (react_1.default.createElement(react_1.default.Fragment, null, typeof children === 'function' ? (children(useGroupsReturn)) : (react_1.default.createElement(react_1.default.Fragment, null,
15
+ if (hideGroups)
16
+ return null;
17
+ return (react_1.default.createElement(react_1.default.Fragment, null, typeof children === 'function' ? (children(useGroupsReturn)) : (react_1.default.createElement("div", { className: 'cio-groups-container' },
16
18
  react_1.default.createElement("button", { className: 'cio-filter-header', type: 'button', onClick: () => setIsCollapsed(!isCollapsed) },
17
19
  title,
18
20
  react_1.default.createElement("i", { className: `cio-arrow ${isCollapsed ? 'cio-arrow-up' : 'cio-arrow-down'}` })),
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.6.1';
3
+ exports.default = '1.6.3';
@@ -66,6 +66,7 @@ export default function CioPlpGrid(props) {
66
66
  React.createElement(Sort, { sortOptions: sort.sortOptions, isOpen: false, ...sortConfigs }))),
67
67
  React.createElement("div", { className: 'cio-product-tiles-container' },
68
68
  React.createElement(MobileModal, { isOpen: isFilterOpen, setIsOpen: setIsFilterOpen },
69
+ isSearchPage && (React.createElement(Groups, { groups: data.response.groups, ...groupsConfigs })),
69
70
  React.createElement(Filters, { facets: filters.facets })),
70
71
  data.response?.results?.map((item) => (React.createElement("div", { className: 'cio-product-tile', key: item.itemId },
71
72
  React.createElement(ProductCard, { key: item.itemId, item: item }))))),
@@ -16,6 +16,7 @@
16
16
  background: none;
17
17
  display: flex;
18
18
  flex-direction: row;
19
+ gap: 8px;
19
20
  width: 100%;
20
21
  justify-content: space-between;
21
22
  align-items: center;
@@ -25,6 +26,7 @@
25
26
  padding: 0 0 8px 0;
26
27
  border-bottom: 1px solid #e1e1e1;
27
28
  margin-bottom: 12px;
29
+ text-align: start;
28
30
  }
29
31
 
30
32
  .cio-see-all {
@@ -3,13 +3,15 @@ import classNames from 'classnames';
3
3
  import useGroups from '../../hooks/useGroups';
4
4
  import FilterOptionListRow from '../Filters/FilterOptionListRow';
5
5
  export default function Groups(props) {
6
- const { isCollapsed: isCollapsedDefault = false, title = 'Categories', children, groups } = props;
6
+ const { isCollapsed: isCollapsedDefault = false, title = 'Categories', children, groups, hideGroups, } = props;
7
7
  const useGroupsReturn = useGroups(props);
8
8
  const { optionsToRender, breadcrumbs, initialNumOptions, selectedGroupId, onOptionSelect, goToGroupFilter, isShowAll, setIsShowAll, } = useGroupsReturn;
9
9
  const [isCollapsed, setIsCollapsed] = useState(isCollapsedDefault);
10
10
  if (breadcrumbs.length === 0 && optionsToRender.length === 0)
11
11
  return null;
12
- return (React.createElement(React.Fragment, null, typeof children === 'function' ? (children(useGroupsReturn)) : (React.createElement(React.Fragment, null,
12
+ if (hideGroups)
13
+ return null;
14
+ return (React.createElement(React.Fragment, null, typeof children === 'function' ? (children(useGroupsReturn)) : (React.createElement("div", { className: 'cio-groups-container' },
13
15
  React.createElement("button", { className: 'cio-filter-header', type: 'button', onClick: () => setIsCollapsed(!isCollapsed) },
14
16
  title,
15
17
  React.createElement("i", { className: `cio-arrow ${isCollapsed ? 'cio-arrow-up' : 'cio-arrow-down'}` })),
@@ -1 +1 @@
1
- export default '1.6.1';
1
+ export default '1.6.3';
@@ -23,7 +23,12 @@ export type CioPlpGridProps = {
23
23
  */
24
24
  filterConfigs?: Omit<UseFilterProps, 'facets'>;
25
25
  /**
26
- * Used to set the `initialNumOptions` to limit the number of options shown initially.
26
+ * Configuration options for the Groups component.
27
+ * - `initialNumOptions`: Number of group options to show initially (default: 5).
28
+ * Remaining options are hidden under "Show All" button.
29
+ * - `isCollapsed`: Whether the groups section starts collapsed (default: false).
30
+ * - `title`: Custom title for the groups section (default: "Categories").
31
+ * - `hideGroups`: Whether to hide the groups component entirely (default: false).
27
32
  */
28
33
  groupsConfigs?: Omit<GroupsProps, 'groups'>;
29
34
  };
@@ -1,9 +1,25 @@
1
1
  import React from 'react';
2
2
  import useGroups, { UseGroupProps } from '../../hooks/useGroups';
3
3
  import { IncludeRenderProps } from '../../types';
4
+ /**
5
+ * Props for the Groups component
6
+ */
4
7
  export interface GroupsProps extends UseGroupProps {
8
+ /**
9
+ * Initial collapsed state of the groups filter panel
10
+ * @default false
11
+ */
5
12
  isCollapsed?: boolean;
13
+ /**
14
+ * Title displayed in the groups filter header
15
+ * @default Categories
16
+ */
6
17
  title?: string;
18
+ /**
19
+ * Whether to hide the entire groups component
20
+ * @default false
21
+ */
22
+ hideGroups?: boolean;
7
23
  }
8
24
  export type GroupsWithRenderProps = IncludeRenderProps<GroupsProps, ReturnType<typeof useGroups>>;
9
25
  export default function Groups(props: GroupsWithRenderProps): React.JSX.Element | null;
@@ -4,7 +4,7 @@ import { UseFilterProps } from './useFilter';
4
4
  import { UseSortProps } from './useSort';
5
5
  import { UsePaginationProps } from './usePagination';
6
6
  import { UseBrowseResultsProps } from './useBrowseResults';
7
- import { UseGroupProps } from './useGroups';
7
+ import { GroupsProps } from '../components/Groups';
8
8
  export interface UseCioPlpHook extends PlpContextValue {
9
9
  }
10
10
  export type UseCioPlpProps = UseSearchResultsProps & UseBrowseResultsProps & {
@@ -21,9 +21,15 @@ export type UseCioPlpProps = UseSearchResultsProps & UseBrowseResultsProps & {
21
21
  */
22
22
  filterConfigs?: Omit<UseFilterProps, 'facets'>;
23
23
  /**
24
- * Used to set the `initialNumOptions` to limit the number of options shown initially.
24
+ * Configuration options for the Groups component.
25
+ * - `initialNumOptions`: Number of group options to show initially (default: 5).
26
+ * Remaining options are hidden under "Show All" button.
27
+ * - `isCollapsed`: Whether the groups section starts collapsed (default: false).
28
+ * - `title`: Custom title for the groups section (default: "Categories").
29
+ * - `hideGroups`: Whether to hide the groups component entirely (default: false).
30
+ * - `isHiddenGroupFn`: Function to determine if a group should be hidden (default: undefined).
25
31
  */
26
- groupsConfigs?: Omit<UseGroupProps, 'groups'>;
32
+ groupsConfigs?: Omit<GroupsProps, 'groups'>;
27
33
  };
28
34
  export default function useCioPlp(props?: UseCioPlpProps): {
29
35
  isSearchPage: boolean;
@@ -1,2 +1,2 @@
1
- declare const _default: "1.6.1";
1
+ declare const _default: "1.6.3";
2
2
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-ui-plp",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "Constructor PLP UI library for web applications",
5
5
  "author": "Constructor.io Corporation",
6
6
  "license": "MIT",