@constructor-io/constructorio-ui-plp 1.8.1 → 1.8.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.
@@ -16,7 +16,7 @@ function FilterGroup(props) {
16
16
  react_1.default.createElement("button", { className: 'cio-filter-header', type: 'button', onClick: toggleIsCollapsed },
17
17
  facet.displayName,
18
18
  react_1.default.createElement("i", { className: `cio-arrow ${isCollapsed ? 'cio-arrow-up' : 'cio-arrow-down'}` })),
19
- (0, utils_1.isMultipleOrBucketedFacet)(facet) && (react_1.default.createElement(FilterOptionsList_1.default, { isCollapsed: isCollapsed, multipleFacet: facet, modifyRequestMultipleFilter: onFilterSelect(facet.name), initialNumOptions: initialNumOptions })),
19
+ ((0, utils_1.isMultipleOrBucketedFacet)(facet) || (0, utils_1.isSingleFacet)(facet)) && (react_1.default.createElement(FilterOptionsList_1.default, { isCollapsed: isCollapsed, facet: facet, modifyRequestMultipleFilter: onFilterSelect(facet.name), initialNumOptions: initialNumOptions })),
20
20
  (0, utils_1.isRangeFacet)(facet) && (react_1.default.createElement(FilterRangeSlider_1.default, { isCollapsed: isCollapsed, rangedFacet: facet, modifyRequestRangeFilter: onFilterSelect(facet.name), sliderStep: (facetSliderSteps === null || facetSliderSteps === void 0 ? void 0 : facetSliderSteps[facet.name]) || sliderStep }))));
21
21
  }
22
22
  exports.default = FilterGroup;
@@ -4,15 +4,16 @@ const tslib_1 = require("tslib");
4
4
  const react_1 = require("react");
5
5
  const useOptionsList_1 = tslib_1.__importDefault(require("../../hooks/useOptionsList"));
6
6
  function useFilterOptionsList(props) {
7
- const { multipleFacet: facet, initialNumOptions, modifyRequestMultipleFilter, isCollapsed, } = props;
7
+ const { initialNumOptions, modifyRequestMultipleFilter, isCollapsed } = props;
8
+ const facet = 'facet' in props ? props.facet : props.multipleFacet;
8
9
  const { isShowAll, setIsShowAll, optionsToRender, setOptionsToRender } = (0, useOptionsList_1.default)({
9
10
  options: facet.options,
10
11
  initialNumOptions,
11
12
  });
12
13
  const [selectedOptionMap, setSelectedOptionMap] = (0, react_1.useState)({});
13
14
  const onOptionSelect = (optionValue) => {
14
- const newMap = Object.assign({}, selectedOptionMap);
15
- newMap[optionValue] = !newMap[optionValue];
15
+ const newMap = facet.type === 'multiple' ? Object.assign({}, selectedOptionMap) : {};
16
+ newMap[optionValue] = !selectedOptionMap[optionValue];
16
17
  const selectedOptions = Object.keys(newMap).filter((key) => newMap[key]);
17
18
  setSelectedOptionMap(newMap);
18
19
  modifyRequestMultipleFilter(selectedOptions.length ? selectedOptions : null);
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.8.1';
3
+ exports.default = '1.8.3';
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react';
2
- import { isMultipleOrBucketedFacet, isRangeFacet } from '../../utils';
2
+ import { isMultipleOrBucketedFacet, isRangeFacet, isSingleFacet } from '../../utils';
3
3
  import FilterOptionsList from './FilterOptionsList';
4
4
  import FilterRangeSlider from './FilterRangeSlider';
5
5
  export default function FilterGroup(props) {
@@ -13,6 +13,6 @@ export default function FilterGroup(props) {
13
13
  React.createElement("button", { className: 'cio-filter-header', type: 'button', onClick: toggleIsCollapsed },
14
14
  facet.displayName,
15
15
  React.createElement("i", { className: `cio-arrow ${isCollapsed ? 'cio-arrow-up' : 'cio-arrow-down'}` })),
16
- isMultipleOrBucketedFacet(facet) && (React.createElement(FilterOptionsList, { isCollapsed: isCollapsed, multipleFacet: facet, modifyRequestMultipleFilter: onFilterSelect(facet.name), initialNumOptions: initialNumOptions })),
16
+ (isMultipleOrBucketedFacet(facet) || isSingleFacet(facet)) && (React.createElement(FilterOptionsList, { isCollapsed: isCollapsed, facet: facet, modifyRequestMultipleFilter: onFilterSelect(facet.name), initialNumOptions: initialNumOptions })),
17
17
  isRangeFacet(facet) && (React.createElement(FilterRangeSlider, { isCollapsed: isCollapsed, rangedFacet: facet, modifyRequestRangeFilter: onFilterSelect(facet.name), sliderStep: facetSliderSteps?.[facet.name] || sliderStep }))));
18
18
  }
@@ -1,15 +1,16 @@
1
1
  import { useEffect, useState } from 'react';
2
2
  import useOptionsList from '../../hooks/useOptionsList';
3
3
  export default function useFilterOptionsList(props) {
4
- const { multipleFacet: facet, initialNumOptions, modifyRequestMultipleFilter, isCollapsed, } = props;
4
+ const { initialNumOptions, modifyRequestMultipleFilter, isCollapsed } = props;
5
+ const facet = 'facet' in props ? props.facet : props.multipleFacet;
5
6
  const { isShowAll, setIsShowAll, optionsToRender, setOptionsToRender } = useOptionsList({
6
7
  options: facet.options,
7
8
  initialNumOptions,
8
9
  });
9
10
  const [selectedOptionMap, setSelectedOptionMap] = useState({});
10
11
  const onOptionSelect = (optionValue) => {
11
- const newMap = { ...selectedOptionMap };
12
- newMap[optionValue] = !newMap[optionValue];
12
+ const newMap = facet.type === 'multiple' ? { ...selectedOptionMap } : {};
13
+ newMap[optionValue] = !selectedOptionMap[optionValue];
13
14
  const selectedOptions = Object.keys(newMap).filter((key) => newMap[key]);
14
15
  setSelectedOptionMap(newMap);
15
16
  modifyRequestMultipleFilter(selectedOptions.length ? selectedOptions : null);
@@ -1 +1 @@
1
- export default '1.8.1';
1
+ export default '1.8.3';
@@ -1,12 +1,19 @@
1
- import { PlpMultipleFacet } from '../../types';
2
- export interface UseFilterOptionsListProps {
3
- multipleFacet: PlpMultipleFacet;
1
+ import { PlpMultipleFacet, PlpSingleFacet } from '../../types';
2
+ interface UseFilterOptionsListPropsBase {
4
3
  modifyRequestMultipleFilter: (selectedOptions: Array<string> | null) => void;
5
4
  initialNumOptions: number;
6
5
  isCollapsed: boolean;
7
6
  }
7
+ interface UseFilterOptionsListPropsLegacy extends UseFilterOptionsListPropsBase {
8
+ /** @deprecated Use `facet` instead */
9
+ multipleFacet: PlpMultipleFacet | PlpSingleFacet;
10
+ }
11
+ interface UseFilterOptionsListPropsNew extends UseFilterOptionsListPropsBase {
12
+ facet: PlpMultipleFacet | PlpSingleFacet;
13
+ }
14
+ export type UseFilterOptionsListProps = UseFilterOptionsListPropsLegacy | UseFilterOptionsListPropsNew;
8
15
  export default function useFilterOptionsList(props: UseFilterOptionsListProps): {
9
- facet: PlpMultipleFacet;
16
+ facet: PlpMultipleFacet | PlpSingleFacet;
10
17
  initialNumOptions: number;
11
18
  modifyRequestMultipleFilter: (selectedOptions: string[] | null) => void;
12
19
  isCollapsed: boolean;
@@ -18,3 +25,4 @@ export default function useFilterOptionsList(props: UseFilterOptionsListProps):
18
25
  setSelectedOptionMap: import("react").Dispatch<import("react").SetStateAction<{}>>;
19
26
  onOptionSelect: (optionValue: string) => void;
20
27
  };
28
+ export {};
@@ -1,2 +1,2 @@
1
- declare const _default: "1.8.1";
1
+ declare const _default: "1.8.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.8.1",
3
+ "version": "1.8.3",
4
4
  "description": "Constructor PLP UI library for web applications",
5
5
  "author": "Constructor.io Corporation",
6
6
  "license": "MIT",