@elastic/react-search-ui
Version:
A React library for building search experiences
106 lines (91 loc) • 10.3 kB
JavaScript
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
import _inherits from "@babel/runtime/helpers/inherits";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
import PropTypes from "prop-types";
import { Component } from "react";
import { withSearch } from "..";
import { Sorting } from "@elastic/react-search-ui-views";
import { SortOption } from "../types";
function findSortOption(sortOptions, sortString) {
var _sortString$split = sortString.split("|||"),
_sortString$split2 = _slicedToArray(_sortString$split, 2),
value = _sortString$split2[0],
direction = _sortString$split2[1];
return sortOptions.find(function (option) {
return option.value === value && option.direction === direction;
});
}
function formatValue(sortField, sortDirection) {
return "".concat(sortField, "|||").concat(sortDirection);
}
function formatSelectOption(sortOption) {
return {
label: sortOption.name,
value: formatValue(sortOption.value, sortOption.direction)
};
}
export var SortingContainer =
/*#__PURE__*/
function (_Component) {
_inherits(SortingContainer, _Component);
function SortingContainer() {
_classCallCheck(this, SortingContainer);
return _possibleConstructorReturn(this, _getPrototypeOf(SortingContainer).apply(this, arguments));
}
_createClass(SortingContainer, [{
key: "render",
value: function render() {
var _this$props = this.props,
className = _this$props.className,
label = _this$props.label,
setSort = _this$props.setSort,
sortDirection = _this$props.sortDirection,
sortField = _this$props.sortField,
sortOptions = _this$props.sortOptions,
view = _this$props.view,
rest = _objectWithoutProperties(_this$props, ["className", "label", "setSort", "sortDirection", "sortField", "sortOptions", "view"]);
var View = view || Sorting;
return View(_objectSpread({
className: className,
label: label,
onChange: function onChange(o) {
var sortOption = findSortOption(sortOptions, o);
setSort(sortOption.value, sortOption.direction);
},
options: sortOptions.map(formatSelectOption),
value: formatValue(sortField, sortDirection)
}, rest));
}
}]);
return SortingContainer;
}(Component);
_defineProperty(SortingContainer, "propTypes", {
// Props
className: PropTypes.string,
label: PropTypes.string,
sortOptions: PropTypes.arrayOf(SortOption).isRequired,
view: PropTypes.func,
// State
sortDirection: PropTypes.oneOf(["asc", "desc", ""]).isRequired,
sortField: PropTypes.string.isRequired,
// Actions
setSort: PropTypes.func.isRequired
});
export default withSearch(function (_ref) {
var sortDirection = _ref.sortDirection,
sortField = _ref.sortField,
setSort = _ref.setSort;
return {
sortDirection: sortDirection,
sortField: sortField,
setSort: setSort
};
})(SortingContainer);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250YWluZXJzL1NvcnRpbmcuanMiXSwibmFtZXMiOlsiUHJvcFR5cGVzIiwiQ29tcG9uZW50Iiwid2l0aFNlYXJjaCIsIlNvcnRpbmciLCJTb3J0T3B0aW9uIiwiZmluZFNvcnRPcHRpb24iLCJzb3J0T3B0aW9ucyIsInNvcnRTdHJpbmciLCJzcGxpdCIsInZhbHVlIiwiZGlyZWN0aW9uIiwiZmluZCIsIm9wdGlvbiIsImZvcm1hdFZhbHVlIiwic29ydEZpZWxkIiwic29ydERpcmVjdGlvbiIsImZvcm1hdFNlbGVjdE9wdGlvbiIsInNvcnRPcHRpb24iLCJsYWJlbCIsIm5hbWUiLCJTb3J0aW5nQ29udGFpbmVyIiwicHJvcHMiLCJjbGFzc05hbWUiLCJzZXRTb3J0IiwidmlldyIsInJlc3QiLCJWaWV3Iiwib25DaGFuZ2UiLCJvIiwib3B0aW9ucyIsIm1hcCIsInN0cmluZyIsImFycmF5T2YiLCJpc1JlcXVpcmVkIiwiZnVuYyIsIm9uZU9mIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsU0FBUCxNQUFzQixZQUF0QjtBQUNBLFNBQVNDLFNBQVQsUUFBMEIsT0FBMUI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLElBQTNCO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixnQ0FBeEI7QUFFQSxTQUFTQyxVQUFULFFBQTJCLFVBQTNCOztBQUVBLFNBQVNDLGNBQVQsQ0FBd0JDLFdBQXhCLEVBQXFDQyxVQUFyQyxFQUFpRDtBQUFBLDBCQUNwQkEsVUFBVSxDQUFDQyxLQUFYLENBQWlCLEtBQWpCLENBRG9CO0FBQUE7QUFBQSxNQUN4Q0MsS0FEd0M7QUFBQSxNQUNqQ0MsU0FEaUM7O0FBRS9DLFNBQU9KLFdBQVcsQ0FBQ0ssSUFBWixDQUNMLFVBQUFDLE1BQU07QUFBQSxXQUFJQSxNQUFNLENBQUNILEtBQVAsS0FBaUJBLEtBQWpCLElBQTBCRyxNQUFNLENBQUNGLFNBQVAsS0FBcUJBLFNBQW5EO0FBQUEsR0FERCxDQUFQO0FBR0Q7O0FBRUQsU0FBU0csV0FBVCxDQUFxQkMsU0FBckIsRUFBZ0NDLGFBQWhDLEVBQStDO0FBQzdDLG1CQUFVRCxTQUFWLGdCQUF5QkMsYUFBekI7QUFDRDs7QUFFRCxTQUFTQyxrQkFBVCxDQUE0QkMsVUFBNUIsRUFBd0M7QUFDdEMsU0FBTztBQUNMQyxJQUFBQSxLQUFLLEVBQUVELFVBQVUsQ0FBQ0UsSUFEYjtBQUVMVixJQUFBQSxLQUFLLEVBQUVJLFdBQVcsQ0FBQ0ksVUFBVSxDQUFDUixLQUFaLEVBQW1CUSxVQUFVLENBQUNQLFNBQTlCO0FBRmIsR0FBUDtBQUlEOztBQUNELFdBQWFVLGdCQUFiO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsNkJBY1c7QUFBQSx3QkFVSCxLQUFLQyxLQVZGO0FBQUEsVUFFTEMsU0FGSyxlQUVMQSxTQUZLO0FBQUEsVUFHTEosS0FISyxlQUdMQSxLQUhLO0FBQUEsVUFJTEssT0FKSyxlQUlMQSxPQUpLO0FBQUEsVUFLTFIsYUFMSyxlQUtMQSxhQUxLO0FBQUEsVUFNTEQsU0FOSyxlQU1MQSxTQU5LO0FBQUEsVUFPTFIsV0FQSyxlQU9MQSxXQVBLO0FBQUEsVUFRTGtCLElBUkssZUFRTEEsSUFSSztBQUFBLFVBU0ZDLElBVEU7O0FBWVAsVUFBTUMsSUFBSSxHQUFHRixJQUFJLElBQUlyQixPQUFyQjtBQUVBLGFBQU91QixJQUFJO0FBQ1RKLFFBQUFBLFNBQVMsRUFBVEEsU0FEUztBQUVUSixRQUFBQSxLQUFLLEVBQUxBLEtBRlM7QUFHVFMsUUFBQUEsUUFBUSxFQUFFLGtCQUFBQyxDQUFDLEVBQUk7QUFDYixjQUFNWCxVQUFVLEdBQUdaLGNBQWMsQ0FBQ0MsV0FBRCxFQUFjc0IsQ0FBZCxDQUFqQztBQUNBTCxVQUFBQSxPQUFPLENBQUNOLFVBQVUsQ0FBQ1IsS0FBWixFQUFtQlEsVUFBVSxDQUFDUCxTQUE5QixDQUFQO0FBQ0QsU0FOUTtBQU9UbUIsUUFBQUEsT0FBTyxFQUFFdkIsV0FBVyxDQUFDd0IsR0FBWixDQUFnQmQsa0JBQWhCLENBUEE7QUFRVFAsUUFBQUEsS0FBSyxFQUFFSSxXQUFXLENBQUNDLFNBQUQsRUFBWUMsYUFBWjtBQVJULFNBU05VLElBVE0sRUFBWDtBQVdEO0FBdkNIOztBQUFBO0FBQUEsRUFBc0N4QixTQUF0Qzs7Z0JBQWFtQixnQixlQUNRO0FBQ2pCO0FBQ0FFLEVBQUFBLFNBQVMsRUFBRXRCLFNBQVMsQ0FBQytCLE1BRko7QUFHakJiLEVBQUFBLEtBQUssRUFBRWxCLFNBQVMsQ0FBQytCLE1BSEE7QUFJakJ6QixFQUFBQSxXQUFXLEVBQUVOLFNBQVMsQ0FBQ2dDLE9BQVYsQ0FBa0I1QixVQUFsQixFQUE4QjZCLFVBSjFCO0FBS2pCVCxFQUFBQSxJQUFJLEVBQUV4QixTQUFTLENBQUNrQyxJQUxDO0FBTWpCO0FBQ0FuQixFQUFBQSxhQUFhLEVBQUVmLFNBQVMsQ0FBQ21DLEtBQVYsQ0FBZ0IsQ0FBQyxLQUFELEVBQVEsTUFBUixFQUFnQixFQUFoQixDQUFoQixFQUFxQ0YsVUFQbkM7QUFRakJuQixFQUFBQSxTQUFTLEVBQUVkLFNBQVMsQ0FBQytCLE1BQVYsQ0FBaUJFLFVBUlg7QUFTakI7QUFDQVYsRUFBQUEsT0FBTyxFQUFFdkIsU0FBUyxDQUFDa0MsSUFBVixDQUFlRDtBQVZQLEM7O0FBeUNyQixlQUFlL0IsVUFBVSxDQUFDO0FBQUEsTUFBR2EsYUFBSCxRQUFHQSxhQUFIO0FBQUEsTUFBa0JELFNBQWxCLFFBQWtCQSxTQUFsQjtBQUFBLE1BQTZCUyxPQUE3QixRQUE2QkEsT0FBN0I7QUFBQSxTQUE0QztBQUNwRVIsSUFBQUEsYUFBYSxFQUFiQSxhQURvRTtBQUVwRUQsSUFBQUEsU0FBUyxFQUFUQSxTQUZvRTtBQUdwRVMsSUFBQUEsT0FBTyxFQUFQQTtBQUhvRSxHQUE1QztBQUFBLENBQUQsQ0FBVixDQUlYSCxnQkFKVyxDQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB3aXRoU2VhcmNoIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBTb3J0aW5nIH0gZnJvbSBcIkBlbGFzdGljL3JlYWN0LXNlYXJjaC11aS12aWV3c1wiO1xuXG5pbXBvcnQgeyBTb3J0T3B0aW9uIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIGZpbmRTb3J0T3B0aW9uKHNvcnRPcHRpb25zLCBzb3J0U3RyaW5nKSB7XG4gIGNvbnN0IFt2YWx1ZSwgZGlyZWN0aW9uXSA9IHNvcnRTdHJpbmcuc3BsaXQoXCJ8fHxcIik7XG4gIHJldHVybiBzb3J0T3B0aW9ucy5maW5kKFxuICAgIG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlICYmIG9wdGlvbi5kaXJlY3Rpb24gPT09IGRpcmVjdGlvblxuICApO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZShzb3J0RmllbGQsIHNvcnREaXJlY3Rpb24pIHtcbiAgcmV0dXJuIGAke3NvcnRGaWVsZH18fHwke3NvcnREaXJlY3Rpb259YDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0U2VsZWN0T3B0aW9uKHNvcnRPcHRpb24pIHtcbiAgcmV0dXJuIHtcbiAgICBsYWJlbDogc29ydE9wdGlvbi5uYW1lLFxuICAgIHZhbHVlOiBmb3JtYXRWYWx1ZShzb3J0T3B0aW9uLnZhbHVlLCBzb3J0T3B0aW9uLmRpcmVjdGlvbilcbiAgfTtcbn1cbmV4cG9ydCBjbGFzcyBTb3J0aW5nQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAvLyBQcm9wc1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzb3J0T3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoU29ydE9wdGlvbikuaXNSZXF1aXJlZCxcbiAgICB2aWV3OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvLyBTdGF0ZVxuICAgIHNvcnREaXJlY3Rpb246IFByb3BUeXBlcy5vbmVPZihbXCJhc2NcIiwgXCJkZXNjXCIsIFwiXCJdKS5pc1JlcXVpcmVkLFxuICAgIHNvcnRGaWVsZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8vIEFjdGlvbnNcbiAgICBzZXRTb3J0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGxhYmVsLFxuICAgICAgc2V0U29ydCxcbiAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICBzb3J0RmllbGQsXG4gICAgICBzb3J0T3B0aW9ucyxcbiAgICAgIHZpZXcsXG4gICAgICAuLi5yZXN0XG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBWaWV3ID0gdmlldyB8fCBTb3J0aW5nO1xuXG4gICAgcmV0dXJuIFZpZXcoe1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgbGFiZWwsXG4gICAgICBvbkNoYW5nZTogbyA9PiB7XG4gICAgICAgIGNvbnN0IHNvcnRPcHRpb24gPSBmaW5kU29ydE9wdGlvbihzb3J0T3B0aW9ucywgbyk7XG4gICAgICAgIHNldFNvcnQoc29ydE9wdGlvbi52YWx1ZSwgc29ydE9wdGlvbi5kaXJlY3Rpb24pO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHNvcnRPcHRpb25zLm1hcChmb3JtYXRTZWxlY3RPcHRpb24pLFxuICAgICAgdmFsdWU6IGZvcm1hdFZhbHVlKHNvcnRGaWVsZCwgc29ydERpcmVjdGlvbiksXG4gICAgICAuLi5yZXN0XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFNlYXJjaCgoeyBzb3J0RGlyZWN0aW9uLCBzb3J0RmllbGQsIHNldFNvcnQgfSkgPT4gKHtcbiAgc29ydERpcmVjdGlvbixcbiAgc29ydEZpZWxkLFxuICBzZXRTb3J0XG59KSkoU29ydGluZ0NvbnRhaW5lcik7XG4iXX0=