instantsearch.js 4.54.1 → 4.56.0
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/cjs/components/Breadcrumb/Breadcrumb.js +2 -2
- package/cjs/components/Hits/Hits.js +16 -7
- package/cjs/components/InfiniteHits/InfiniteHits.js +13 -2
- package/cjs/components/RangeInput/RangeInput.js +22 -11
- package/cjs/components/RefinementList/RefinementList.js +34 -52
- package/cjs/components/Slider/Rheostat.js +163 -249
- package/cjs/connectors/autocomplete/connectAutocomplete.js +1 -1
- package/cjs/connectors/geo-search/connectGeoSearch.js +1 -1
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +1 -1
- package/cjs/connectors/hits/connectHits.js +1 -1
- package/cjs/connectors/infinite-hits/connectInfiniteHits.js +55 -32
- package/cjs/connectors/menu/connectMenu.js +1 -1
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +1 -1
- package/cjs/connectors/rating-menu/connectRatingMenu.js +7 -3
- package/cjs/connectors/refinement-list/connectRefinementList.js +1 -1
- package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +14 -4
- package/cjs/helpers/insights.js +3 -4
- package/cjs/lib/InstantSearch.js +20 -6
- package/cjs/lib/insights/listener.js +43 -36
- package/cjs/lib/routers/history.js +55 -1
- package/cjs/lib/stateMappings/simple.js +1 -0
- package/cjs/lib/stateMappings/singleIndex.js +1 -0
- package/cjs/lib/utils/createSendEventForFacet.js +12 -2
- package/cjs/lib/utils/createSendEventForHits.js +34 -11
- package/cjs/lib/utils/render-args.js +3 -2
- package/cjs/lib/version.js +1 -1
- package/cjs/middlewares/createInsightsMiddleware.js +135 -33
- package/cjs/middlewares/createMetadataMiddleware.js +17 -5
- package/cjs/middlewares/createRouterMiddleware.js +5 -1
- package/cjs/widgets/hits/hits.js +1 -2
- package/cjs/widgets/hits-per-page/hits-per-page.js +3 -1
- package/cjs/widgets/index/index.js +8 -8
- package/cjs/widgets/infinite-hits/infinite-hits.js +1 -2
- package/dist/instantsearch.development.d.ts +143 -84
- package/dist/instantsearch.development.js +770 -584
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +143 -84
- package/dist/instantsearch.production.min.d.ts +143 -84
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Breadcrumb/Breadcrumb.d.ts +2 -2
- package/es/components/Breadcrumb/Breadcrumb.js +2 -2
- package/es/components/GeoSearchControls/GeoSearchButton.d.ts +1 -1
- package/es/components/GeoSearchControls/GeoSearchControls.d.ts +3 -3
- package/es/components/GeoSearchControls/GeoSearchToggle.d.ts +1 -1
- package/es/components/Hits/Hits.d.ts +5 -5
- package/es/components/Hits/Hits.js +15 -5
- package/es/components/InfiniteHits/InfiniteHits.d.ts +3 -2
- package/es/components/InfiniteHits/InfiniteHits.js +13 -2
- package/es/components/Pagination/Pagination.d.ts +2 -2
- package/es/components/RangeInput/RangeInput.d.ts +7 -4
- package/es/components/RangeInput/RangeInput.js +22 -11
- package/es/components/RefinementList/RefinementList.d.ts +0 -1
- package/es/components/RefinementList/RefinementList.js +34 -52
- package/es/components/RelevantSort/RelevantSort.d.ts +1 -1
- package/es/components/Selector/Selector.d.ts +2 -2
- package/es/components/Slider/Rheostat.d.ts +23 -17
- package/es/components/Slider/Rheostat.js +163 -249
- package/es/components/Slider/Slider.d.ts +1 -1
- package/es/connectors/autocomplete/connectAutocomplete.js +1 -1
- package/es/connectors/current-refinements/connectCurrentRefinements.d.ts +2 -2
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.d.ts +2 -2
- package/es/connectors/geo-search/connectGeoSearch.d.ts +7 -7
- package/es/connectors/geo-search/connectGeoSearch.js +1 -1
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +1 -1
- package/es/connectors/hits/connectHits.js +1 -1
- package/es/connectors/infinite-hits/connectInfiniteHits.js +56 -33
- package/es/connectors/menu/connectMenu.d.ts +2 -2
- package/es/connectors/menu/connectMenu.js +1 -1
- package/es/connectors/numeric-menu/connectNumericMenu.js +1 -1
- package/es/connectors/pagination/connectPagination.d.ts +1 -1
- package/es/connectors/range/connectRange.d.ts +3 -3
- package/es/connectors/rating-menu/connectRatingMenu.js +7 -3
- package/es/connectors/refinement-list/connectRefinementList.d.ts +3 -3
- package/es/connectors/refinement-list/connectRefinementList.js +1 -1
- package/es/connectors/relevant-sort/connectRelevantSort.d.ts +1 -1
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +13 -3
- package/es/helpers/insights.d.ts +2 -1
- package/es/helpers/insights.js +3 -3
- package/es/lib/InstantSearch.d.ts +24 -14
- package/es/lib/InstantSearch.js +21 -7
- package/es/lib/insights/listener.d.ts +10 -6
- package/es/lib/insights/listener.js +42 -36
- package/es/lib/routers/history.d.ts +3 -2
- package/es/lib/routers/history.js +56 -2
- package/es/lib/stateMappings/simple.js +1 -0
- package/es/lib/stateMappings/singleIndex.js +1 -0
- package/es/lib/utils/createSendEventForFacet.js +12 -2
- package/es/lib/utils/createSendEventForHits.d.ts +8 -0
- package/es/lib/utils/createSendEventForHits.js +33 -11
- package/es/lib/utils/defer.d.ts +2 -2
- package/es/lib/utils/render-args.js +3 -2
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/middlewares/createInsightsMiddleware.d.ts +12 -12
- package/es/middlewares/createInsightsMiddleware.js +136 -34
- package/es/middlewares/createMetadataMiddleware.d.ts +3 -1
- package/es/middlewares/createMetadataMiddleware.js +17 -5
- package/es/middlewares/createRouterMiddleware.js +5 -1
- package/es/types/insights.d.ts +19 -1
- package/es/types/middleware.d.ts +22 -6
- package/es/types/router.d.ts +15 -7
- package/es/types/widget.d.ts +1 -1
- package/es/widgets/dynamic-widgets/dynamic-widgets.d.ts +2 -2
- package/es/widgets/geo-search/createHTMLMarker.d.ts +1 -1
- package/es/widgets/geo-search/geo-search.d.ts +1 -1
- package/es/widgets/hits/hits.js +2 -3
- package/es/widgets/hits-per-page/hits-per-page.js +3 -1
- package/es/widgets/index/index.d.ts +20 -20
- package/es/widgets/index/index.js +8 -8
- package/es/widgets/infinite-hits/infinite-hits.js +2 -3
- package/es/widgets/panel/panel.d.ts +2 -2
- package/es/widgets/range-slider/range-slider.d.ts +1 -1
- package/package.json +7 -7
|
@@ -26,10 +26,10 @@ var Breadcrumb = function Breadcrumb(_ref) {
|
|
|
26
26
|
rootTagName: "a",
|
|
27
27
|
rootProps: {
|
|
28
28
|
className: cssClasses.link,
|
|
29
|
-
href: createURL(
|
|
29
|
+
href: createURL(null),
|
|
30
30
|
onClick: function onClick(event) {
|
|
31
31
|
event.preventDefault();
|
|
32
|
-
refine(
|
|
32
|
+
refine(null);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}))), items.map(function (item, idx) {
|
|
@@ -4,9 +4,10 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default =
|
|
7
|
+
exports.default = Hits;
|
|
8
8
|
var _uiComponentsShared = require("@algolia/ui-components-shared");
|
|
9
9
|
var _preact = require("preact");
|
|
10
|
+
var _listener = require("../../lib/insights/listener");
|
|
10
11
|
var _utils = require("../../lib/utils");
|
|
11
12
|
var _Template = _interopRequireDefault(require("../Template/Template"));
|
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -16,18 +17,24 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
16
17
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
17
18
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
18
19
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
19
|
-
|
|
20
|
+
function Hits(_ref) {
|
|
20
21
|
var results = _ref.results,
|
|
21
22
|
hits = _ref.hits,
|
|
23
|
+
insights = _ref.insights,
|
|
22
24
|
bindEvent = _ref.bindEvent,
|
|
23
25
|
sendEvent = _ref.sendEvent,
|
|
24
26
|
cssClasses = _ref.cssClasses,
|
|
25
27
|
templateProps = _ref.templateProps;
|
|
28
|
+
var handleInsightsClick = (0, _listener.createInsightsEventHandler)({
|
|
29
|
+
insights: insights,
|
|
30
|
+
sendEvent: sendEvent
|
|
31
|
+
});
|
|
26
32
|
if (results.hits.length === 0) {
|
|
27
33
|
return (0, _preact.h)(_Template.default, _extends({}, templateProps, {
|
|
28
34
|
templateKey: "empty",
|
|
29
35
|
rootProps: {
|
|
30
|
-
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot)
|
|
36
|
+
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot),
|
|
37
|
+
onClick: handleInsightsClick
|
|
31
38
|
},
|
|
32
39
|
data: results
|
|
33
40
|
}));
|
|
@@ -41,7 +48,11 @@ var Hits = function Hits(_ref) {
|
|
|
41
48
|
templateKey: "item",
|
|
42
49
|
rootTagName: "li",
|
|
43
50
|
rootProps: {
|
|
44
|
-
className: cssClasses.item
|
|
51
|
+
className: cssClasses.item,
|
|
52
|
+
onClick: function onClick(event) {
|
|
53
|
+
handleInsightsClick(event);
|
|
54
|
+
sendEvent('click:internal', hit, 'Hit Clicked');
|
|
55
|
+
}
|
|
45
56
|
},
|
|
46
57
|
key: hit.objectID,
|
|
47
58
|
data: _objectSpread(_objectSpread({}, hit), {}, {
|
|
@@ -54,6 +65,4 @@ var Hits = function Hits(_ref) {
|
|
|
54
65
|
sendEvent: sendEvent
|
|
55
66
|
}));
|
|
56
67
|
})));
|
|
57
|
-
}
|
|
58
|
-
var _default = Hits;
|
|
59
|
-
exports.default = _default;
|
|
68
|
+
}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _uiComponentsShared = require("@algolia/ui-components-shared");
|
|
9
9
|
var _preact = require("preact");
|
|
10
|
+
var _listener = require("../../lib/insights/listener");
|
|
10
11
|
var _utils = require("../../lib/utils");
|
|
11
12
|
var _Template = _interopRequireDefault(require("../Template/Template"));
|
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -19,6 +20,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
19
20
|
var InfiniteHits = function InfiniteHits(_ref) {
|
|
20
21
|
var results = _ref.results,
|
|
21
22
|
hits = _ref.hits,
|
|
23
|
+
insights = _ref.insights,
|
|
22
24
|
bindEvent = _ref.bindEvent,
|
|
23
25
|
sendEvent = _ref.sendEvent,
|
|
24
26
|
hasShowPrevious = _ref.hasShowPrevious,
|
|
@@ -28,11 +30,16 @@ var InfiniteHits = function InfiniteHits(_ref) {
|
|
|
28
30
|
isLastPage = _ref.isLastPage,
|
|
29
31
|
cssClasses = _ref.cssClasses,
|
|
30
32
|
templateProps = _ref.templateProps;
|
|
33
|
+
var handleInsightsClick = (0, _listener.createInsightsEventHandler)({
|
|
34
|
+
insights: insights,
|
|
35
|
+
sendEvent: sendEvent
|
|
36
|
+
});
|
|
31
37
|
if (results.hits.length === 0) {
|
|
32
38
|
return (0, _preact.h)(_Template.default, _extends({}, templateProps, {
|
|
33
39
|
templateKey: "empty",
|
|
34
40
|
rootProps: {
|
|
35
|
-
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot)
|
|
41
|
+
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot),
|
|
42
|
+
onClick: handleInsightsClick
|
|
36
43
|
},
|
|
37
44
|
data: results
|
|
38
45
|
}));
|
|
@@ -54,7 +61,11 @@ var InfiniteHits = function InfiniteHits(_ref) {
|
|
|
54
61
|
templateKey: "item",
|
|
55
62
|
rootTagName: "li",
|
|
56
63
|
rootProps: {
|
|
57
|
-
className: cssClasses.item
|
|
64
|
+
className: cssClasses.item,
|
|
65
|
+
onClick: function onClick(event) {
|
|
66
|
+
handleInsightsClick(event);
|
|
67
|
+
sendEvent('click:internal', hit, 'Hit Clicked');
|
|
68
|
+
}
|
|
58
69
|
},
|
|
59
70
|
key: hit.objectID,
|
|
60
71
|
data: _objectSpread(_objectSpread({}, hit), {}, {
|
|
@@ -23,10 +23,17 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
23
23
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
24
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
25
25
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
26
|
+
// Strips leading `0` from a positive number value
|
|
27
|
+
function stripLeadingZeroFromInput(value) {
|
|
28
|
+
return value.replace(/^(0+)\d/, function (part) {
|
|
29
|
+
return Number(part).toString();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
26
32
|
var RangeInput = /*#__PURE__*/function (_Component) {
|
|
27
33
|
_inherits(RangeInput, _Component);
|
|
28
34
|
var _super = _createSuper(RangeInput);
|
|
29
35
|
function RangeInput() {
|
|
36
|
+
var _this$props$values$mi, _this$props$values$ma;
|
|
30
37
|
var _this;
|
|
31
38
|
_classCallCheck(this, RangeInput);
|
|
32
39
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
@@ -34,36 +41,40 @@ var RangeInput = /*#__PURE__*/function (_Component) {
|
|
|
34
41
|
}
|
|
35
42
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
36
43
|
_defineProperty(_assertThisInitialized(_this), "state", {
|
|
37
|
-
min: _this.props.values.min,
|
|
38
|
-
max: _this.props.values.max
|
|
44
|
+
min: (_this$props$values$mi = _this.props.values.min) === null || _this$props$values$mi === void 0 ? void 0 : _this$props$values$mi.toString(),
|
|
45
|
+
max: (_this$props$values$ma = _this.props.values.max) === null || _this$props$values$ma === void 0 ? void 0 : _this$props$values$ma.toString()
|
|
39
46
|
});
|
|
40
47
|
_defineProperty(_assertThisInitialized(_this), "onInput", function (key) {
|
|
41
48
|
return function (event) {
|
|
42
49
|
var _ref = event.currentTarget,
|
|
43
50
|
value = _ref.value;
|
|
44
|
-
_this.setState(_defineProperty({}, key,
|
|
51
|
+
_this.setState(_defineProperty({}, key, value));
|
|
45
52
|
};
|
|
46
53
|
});
|
|
47
54
|
_defineProperty(_assertThisInitialized(_this), "onSubmit", function (event) {
|
|
48
55
|
event.preventDefault();
|
|
49
|
-
_this
|
|
56
|
+
var _this$state = _this.state,
|
|
57
|
+
min = _this$state.min,
|
|
58
|
+
max = _this$state.max;
|
|
59
|
+
_this.props.refine([min ? Number(min) : undefined, max ? Number(max) : undefined]);
|
|
50
60
|
});
|
|
51
61
|
return _this;
|
|
52
62
|
}
|
|
53
63
|
_createClass(RangeInput, [{
|
|
54
64
|
key: "componentWillReceiveProps",
|
|
55
65
|
value: function componentWillReceiveProps(nextProps) {
|
|
66
|
+
var _nextProps$values$min, _nextProps$values$max;
|
|
56
67
|
this.setState({
|
|
57
|
-
min: nextProps.values.min,
|
|
58
|
-
max: nextProps.values.max
|
|
68
|
+
min: (_nextProps$values$min = nextProps.values.min) === null || _nextProps$values$min === void 0 ? void 0 : _nextProps$values$min.toString(),
|
|
69
|
+
max: (_nextProps$values$max = nextProps.values.max) === null || _nextProps$values$max === void 0 ? void 0 : _nextProps$values$max.toString()
|
|
59
70
|
});
|
|
60
71
|
}
|
|
61
72
|
}, {
|
|
62
73
|
key: "render",
|
|
63
74
|
value: function render() {
|
|
64
|
-
var _this$
|
|
65
|
-
minValue = _this$
|
|
66
|
-
maxValue = _this$
|
|
75
|
+
var _this$state2 = this.state,
|
|
76
|
+
minValue = _this$state2.min,
|
|
77
|
+
maxValue = _this$state2.max;
|
|
67
78
|
var _this$props = this.props,
|
|
68
79
|
min = _this$props.min,
|
|
69
80
|
max = _this$props.max,
|
|
@@ -86,7 +97,7 @@ var RangeInput = /*#__PURE__*/function (_Component) {
|
|
|
86
97
|
min: min,
|
|
87
98
|
max: max,
|
|
88
99
|
step: step,
|
|
89
|
-
value: minValue !== null && minValue !== void 0 ? minValue : '',
|
|
100
|
+
value: stripLeadingZeroFromInput(minValue !== null && minValue !== void 0 ? minValue : ''),
|
|
90
101
|
onInput: this.onInput('min'),
|
|
91
102
|
placeholder: min === null || min === void 0 ? void 0 : min.toString(),
|
|
92
103
|
disabled: isDisabled
|
|
@@ -104,7 +115,7 @@ var RangeInput = /*#__PURE__*/function (_Component) {
|
|
|
104
115
|
min: min,
|
|
105
116
|
max: max,
|
|
106
117
|
step: step,
|
|
107
|
-
value: maxValue !== null && maxValue !== void 0 ? maxValue : '',
|
|
118
|
+
value: stripLeadingZeroFromInput(maxValue !== null && maxValue !== void 0 ? maxValue : ''),
|
|
108
119
|
onInput: this.onInput('max'),
|
|
109
120
|
placeholder: max === null || max === void 0 ? void 0 : max.toString(),
|
|
110
121
|
disabled: isDisabled
|
|
@@ -41,49 +41,36 @@ function isHierarchicalMenuItem(facetValue) {
|
|
|
41
41
|
var RefinementList = /*#__PURE__*/function (_Component) {
|
|
42
42
|
_inherits(RefinementList, _Component);
|
|
43
43
|
var _super = _createSuper(RefinementList);
|
|
44
|
-
function RefinementList(
|
|
44
|
+
function RefinementList() {
|
|
45
45
|
var _this;
|
|
46
46
|
_classCallCheck(this, RefinementList);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
_this.handleItemClick = _this.handleItemClick.bind(_assertThisInitialized(_this));
|
|
50
|
-
return _this;
|
|
51
|
-
}
|
|
52
|
-
_createClass(RefinementList, [{
|
|
53
|
-
key: "shouldComponentUpdate",
|
|
54
|
-
value: function shouldComponentUpdate(nextProps) {
|
|
55
|
-
var areFacetValuesDifferent = !(0, _utils.isEqual)(this.props.facetValues, nextProps.facetValues);
|
|
56
|
-
return areFacetValuesDifferent;
|
|
47
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
48
|
+
args[_key] = arguments[_key];
|
|
57
49
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this.props.toggleRefinement(facetValueToRefine);
|
|
62
|
-
}
|
|
63
|
-
}, {
|
|
64
|
-
key: "_generateFacetItem",
|
|
65
|
-
value: function _generateFacetItem(facetValue) {
|
|
50
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
51
|
+
_defineProperty(_assertThisInitialized(_this), "searchBox", (0, _preact.createRef)());
|
|
52
|
+
_defineProperty(_assertThisInitialized(_this), "_generateFacetItem", function (facetValue) {
|
|
66
53
|
var subItems;
|
|
67
54
|
if (isHierarchicalMenuItem(facetValue) && Array.isArray(facetValue.data) && facetValue.data.length > 0) {
|
|
68
|
-
var _this$props$cssClasse =
|
|
55
|
+
var _this$props$cssClasse = _this.props.cssClasses,
|
|
69
56
|
root = _this$props$cssClasse.root,
|
|
70
57
|
cssClasses = _objectWithoutProperties(_this$props$cssClasse, _excluded);
|
|
71
|
-
subItems = (0, _preact.h)(RefinementList, _extends({},
|
|
58
|
+
subItems = (0, _preact.h)(RefinementList, _extends({}, _this.props, {
|
|
72
59
|
// We want to keep `root` required for external usage but not for the
|
|
73
60
|
// sub items.
|
|
74
61
|
cssClasses: cssClasses,
|
|
75
|
-
depth:
|
|
62
|
+
depth: _this.props.depth + 1,
|
|
76
63
|
facetValues: facetValue.data,
|
|
77
64
|
showMore: false,
|
|
78
|
-
className:
|
|
65
|
+
className: _this.props.cssClasses.childList
|
|
79
66
|
}));
|
|
80
67
|
}
|
|
81
|
-
var url =
|
|
68
|
+
var url = _this.props.createURL(facetValue.value);
|
|
82
69
|
var templateData = _objectSpread(_objectSpread({}, facetValue), {}, {
|
|
83
70
|
url: url,
|
|
84
|
-
attribute:
|
|
85
|
-
cssClasses:
|
|
86
|
-
isFromSearch:
|
|
71
|
+
attribute: _this.props.attribute,
|
|
72
|
+
cssClasses: _this.props.cssClasses,
|
|
73
|
+
isFromSearch: _this.props.isFromSearch
|
|
87
74
|
});
|
|
88
75
|
var key = facetValue.value;
|
|
89
76
|
if (facetValue.isRefined !== undefined) {
|
|
@@ -92,38 +79,20 @@ var RefinementList = /*#__PURE__*/function (_Component) {
|
|
|
92
79
|
if (facetValue.count !== undefined) {
|
|
93
80
|
key += "/".concat(facetValue.count);
|
|
94
81
|
}
|
|
95
|
-
var refinementListItemClassName = (0, _uiComponentsShared.cx)(
|
|
82
|
+
var refinementListItemClassName = (0, _uiComponentsShared.cx)(_this.props.cssClasses.item, facetValue.isRefined && _this.props.cssClasses.selectedItem, !facetValue.count && _this.props.cssClasses.disabledItem, Boolean(isHierarchicalMenuItem(facetValue) && Array.isArray(facetValue.data) && facetValue.data.length > 0) && _this.props.cssClasses.parentItem);
|
|
96
83
|
return (0, _preact.h)(_RefinementListItem.default, {
|
|
97
84
|
templateKey: "item",
|
|
98
85
|
key: key,
|
|
99
86
|
facetValueToRefine: facetValue.value,
|
|
100
|
-
handleClick:
|
|
87
|
+
handleClick: _this.handleItemClick,
|
|
101
88
|
isRefined: facetValue.isRefined,
|
|
102
89
|
className: refinementListItemClassName,
|
|
103
90
|
subItems: subItems,
|
|
104
91
|
templateData: templateData,
|
|
105
|
-
templateProps:
|
|
92
|
+
templateProps: _this.props.templateProps
|
|
106
93
|
});
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Click events on DOM tree like LABEL > INPUT will result in two click events
|
|
110
|
-
// instead of one.
|
|
111
|
-
// No matter the framework, see https://www.google.com/search?q=click+label+twice
|
|
112
|
-
//
|
|
113
|
-
// Thus making it hard to distinguish activation from deactivation because both click events
|
|
114
|
-
// are very close. Debounce is a solution but hacky.
|
|
115
|
-
//
|
|
116
|
-
// So the code here checks if the click was done on or in a LABEL. If this LABEL
|
|
117
|
-
// has a checkbox inside, we ignore the first click event because we will get another one.
|
|
118
|
-
//
|
|
119
|
-
// We also check if the click was done inside a link and then e.preventDefault() because we already
|
|
120
|
-
// handle the url
|
|
121
|
-
//
|
|
122
|
-
// Finally, we always stop propagation of the event to avoid multiple levels RefinementLists to fail: click
|
|
123
|
-
// on child would click on parent also
|
|
124
|
-
}, {
|
|
125
|
-
key: "handleItemClick",
|
|
126
|
-
value: function handleItemClick(_ref) {
|
|
94
|
+
});
|
|
95
|
+
_defineProperty(_assertThisInitialized(_this), "handleItemClick", function (_ref) {
|
|
127
96
|
var facetValueToRefine = _ref.facetValueToRefine,
|
|
128
97
|
isRefined = _ref.isRefined,
|
|
129
98
|
originalEvent = _ref.originalEvent;
|
|
@@ -140,7 +109,7 @@ var RefinementList = /*#__PURE__*/function (_Component) {
|
|
|
140
109
|
return;
|
|
141
110
|
}
|
|
142
111
|
if (originalEvent.target.tagName === 'INPUT') {
|
|
143
|
-
|
|
112
|
+
_this.refine(facetValueToRefine);
|
|
144
113
|
return;
|
|
145
114
|
}
|
|
146
115
|
var parent = originalEvent.target;
|
|
@@ -154,7 +123,20 @@ var RefinementList = /*#__PURE__*/function (_Component) {
|
|
|
154
123
|
parent = parent.parentNode;
|
|
155
124
|
}
|
|
156
125
|
originalEvent.stopPropagation();
|
|
157
|
-
|
|
126
|
+
_this.refine(facetValueToRefine);
|
|
127
|
+
});
|
|
128
|
+
return _this;
|
|
129
|
+
}
|
|
130
|
+
_createClass(RefinementList, [{
|
|
131
|
+
key: "shouldComponentUpdate",
|
|
132
|
+
value: function shouldComponentUpdate(nextProps) {
|
|
133
|
+
var areFacetValuesDifferent = !(0, _utils.isEqual)(this.props.facetValues, nextProps.facetValues);
|
|
134
|
+
return areFacetValuesDifferent;
|
|
135
|
+
}
|
|
136
|
+
}, {
|
|
137
|
+
key: "refine",
|
|
138
|
+
value: function refine(facetValueToRefine) {
|
|
139
|
+
this.props.toggleRefinement(facetValueToRefine);
|
|
158
140
|
}
|
|
159
141
|
}, {
|
|
160
142
|
key: "componentWillReceiveProps",
|