@collectionspace/cspace-public-browser 1.5.1

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.
Files changed (233) hide show
  1. package/LICENSE.md +71 -0
  2. package/README.md +38 -0
  3. package/dist/cspacePublicBrowser.js +4680 -0
  4. package/dist/cspacePublicBrowser.min.js +2 -0
  5. package/dist/cspacePublicBrowser.min.js.LICENSE.txt +56 -0
  6. package/images/check.svg +3 -0
  7. package/images/close.svg +3 -0
  8. package/images/collapse.svg +3 -0
  9. package/images/collapseActive.svg +3 -0
  10. package/images/expand.svg +3 -0
  11. package/images/expandActive.svg +3 -0
  12. package/images/filter.svg +4 -0
  13. package/images/hideLeft.svg +4 -0
  14. package/images/linkBack.svg +4 -0
  15. package/images/linkDown.svg +4 -0
  16. package/images/linkNext.svg +4 -0
  17. package/images/linkPrev.svg +4 -0
  18. package/images/openNew.svg +4 -0
  19. package/images/search.svg +4 -0
  20. package/images/select.svg +4 -0
  21. package/images/top.svg +1 -0
  22. package/lib/actions/detailActions.js +177 -0
  23. package/lib/actions/filterActions.js +16 -0
  24. package/lib/actions/mediaActions.js +63 -0
  25. package/lib/actions/prefsActions.js +84 -0
  26. package/lib/actions/searchActions.js +140 -0
  27. package/lib/actions/searchEntryFormActions.js +19 -0
  28. package/lib/components/App.js +24 -0
  29. package/lib/components/detail/DetailNavBar.js +98 -0
  30. package/lib/components/detail/DetailPanel.js +171 -0
  31. package/lib/components/detail/DetailPanelContainer.js +22 -0
  32. package/lib/components/detail/ExhibitionSection.js +54 -0
  33. package/lib/components/detail/FieldList.js +95 -0
  34. package/lib/components/detail/FieldValueList.js +30 -0
  35. package/lib/components/detail/ImageGallery.js +137 -0
  36. package/lib/components/detail/ImageGalleryContainer.js +19 -0
  37. package/lib/components/detail/InstitutionHoldingList.js +155 -0
  38. package/lib/components/detail/InstitutionHoldingListContainer.js +22 -0
  39. package/lib/components/detail/InstitutionIndex.js +53 -0
  40. package/lib/components/detail/InstitutionIndexContainer.js +15 -0
  41. package/lib/components/detail/InstitutionSection.js +44 -0
  42. package/lib/components/detail/InstitutionSectionContainer.js +15 -0
  43. package/lib/components/layout/Fixed.js +26 -0
  44. package/lib/components/layout/IconButton.js +41 -0
  45. package/lib/components/layout/Panel.js +56 -0
  46. package/lib/components/layout/PanelContainer.js +19 -0
  47. package/lib/components/layout/PanelTitle.js +38 -0
  48. package/lib/components/layout/ScrollTopButton.js +70 -0
  49. package/lib/components/layout/ToggleFilterPanelButton.js +42 -0
  50. package/lib/components/pages/DetailPage.js +93 -0
  51. package/lib/components/pages/DetailPageContainer.js +20 -0
  52. package/lib/components/pages/RootPage.js +41 -0
  53. package/lib/components/pages/SearchPage.js +130 -0
  54. package/lib/components/pages/SearchPageContainer.js +23 -0
  55. package/lib/components/search/entry/SearchEntryForm.js +74 -0
  56. package/lib/components/search/entry/SearchEntryFormContainer.js +20 -0
  57. package/lib/components/search/entry/SearchEntryPanel.js +30 -0
  58. package/lib/components/search/entry/SearchQueryInput.js +89 -0
  59. package/lib/components/search/entry/SearchSubmitButton.js +22 -0
  60. package/lib/components/search/entry/SortSelect.js +89 -0
  61. package/lib/components/search/entry/SortSelectContainer.js +15 -0
  62. package/lib/components/search/result/ClearSearchParamsLink.js +42 -0
  63. package/lib/components/search/result/Filter.js +186 -0
  64. package/lib/components/search/result/FilterContainer.js +22 -0
  65. package/lib/components/search/result/FilterGroup.js +72 -0
  66. package/lib/components/search/result/FilterList.js +48 -0
  67. package/lib/components/search/result/FilterPanel.js +115 -0
  68. package/lib/components/search/result/FilterPanelContainer.js +16 -0
  69. package/lib/components/search/result/FilterSearchInput.js +63 -0
  70. package/lib/components/search/result/RemoveSearchParamLink.js +66 -0
  71. package/lib/components/search/result/SearchError.js +29 -0
  72. package/lib/components/search/result/SearchLoadMore.js +36 -0
  73. package/lib/components/search/result/SearchParamList.js +41 -0
  74. package/lib/components/search/result/SearchPending.js +21 -0
  75. package/lib/components/search/result/SearchResultImage.js +227 -0
  76. package/lib/components/search/result/SearchResultList.js +119 -0
  77. package/lib/components/search/result/SearchResultPanel.js +139 -0
  78. package/lib/components/search/result/SearchResultPanelContainer.js +23 -0
  79. package/lib/components/search/result/SearchResultStats.js +39 -0
  80. package/lib/components/search/result/SearchResultTile.js +61 -0
  81. package/lib/config/anthro.js +123 -0
  82. package/lib/config/bonsai.js +50 -0
  83. package/lib/config/botgarden.js +10 -0
  84. package/lib/config/default.js +530 -0
  85. package/lib/config/fcart.js +36 -0
  86. package/lib/config/herbarium.js +10 -0
  87. package/lib/config/index.js +53 -0
  88. package/lib/config/lhmc.js +10 -0
  89. package/lib/config/materials.js +982 -0
  90. package/lib/config/publicart.js +10 -0
  91. package/lib/constants/actionCodes.js +46 -0
  92. package/lib/constants/ids.js +12 -0
  93. package/lib/helpers/bodyClassName.js +11 -0
  94. package/lib/helpers/esQueryHelpers.js +206 -0
  95. package/lib/helpers/formatHelpers.js +293 -0
  96. package/lib/helpers/searchDimensions.js +28 -0
  97. package/lib/helpers/urlHelpers.js +43 -0
  98. package/lib/index.js +53 -0
  99. package/lib/intl/index.js +16 -0
  100. package/lib/reducers/detailReducer.js +145 -0
  101. package/lib/reducers/filterReducer.js +22 -0
  102. package/lib/reducers/index.js +66 -0
  103. package/lib/reducers/mediaReducer.js +43 -0
  104. package/lib/reducers/prefsReducer.js +27 -0
  105. package/lib/reducers/searchEntryFormReducer.js +24 -0
  106. package/lib/reducers/searchReducer.js +88 -0
  107. package/package.json +118 -0
  108. package/src/actions/detailActions.js +231 -0
  109. package/src/actions/filterActions.js +10 -0
  110. package/src/actions/mediaActions.js +65 -0
  111. package/src/actions/prefsActions.js +95 -0
  112. package/src/actions/searchActions.js +188 -0
  113. package/src/actions/searchEntryFormActions.js +15 -0
  114. package/src/components/App.jsx +18 -0
  115. package/src/components/detail/DetailNavBar.jsx +132 -0
  116. package/src/components/detail/DetailPanel.jsx +215 -0
  117. package/src/components/detail/DetailPanelContainer.js +29 -0
  118. package/src/components/detail/ExhibitionSection.jsx +71 -0
  119. package/src/components/detail/FieldList.jsx +122 -0
  120. package/src/components/detail/FieldValueList.jsx +31 -0
  121. package/src/components/detail/ImageGallery.jsx +153 -0
  122. package/src/components/detail/ImageGalleryContainer.js +17 -0
  123. package/src/components/detail/InstitutionHoldingList.jsx +188 -0
  124. package/src/components/detail/InstitutionHoldingListContainer.js +29 -0
  125. package/src/components/detail/InstitutionIndex.jsx +57 -0
  126. package/src/components/detail/InstitutionIndexContainer.js +11 -0
  127. package/src/components/detail/InstitutionSection.jsx +48 -0
  128. package/src/components/detail/InstitutionSectionContainer.js +11 -0
  129. package/src/components/layout/Fixed.jsx +29 -0
  130. package/src/components/layout/IconButton.jsx +41 -0
  131. package/src/components/layout/Panel.jsx +60 -0
  132. package/src/components/layout/PanelContainer.js +20 -0
  133. package/src/components/layout/PanelTitle.jsx +43 -0
  134. package/src/components/layout/ScrollTopButton.jsx +76 -0
  135. package/src/components/layout/ToggleFilterPanelButton.jsx +43 -0
  136. package/src/components/pages/DetailPage.jsx +101 -0
  137. package/src/components/pages/DetailPageContainer.js +18 -0
  138. package/src/components/pages/RootPage.jsx +37 -0
  139. package/src/components/pages/SearchPage.jsx +160 -0
  140. package/src/components/pages/SearchPageContainer.js +21 -0
  141. package/src/components/search/entry/SearchEntryForm.jsx +82 -0
  142. package/src/components/search/entry/SearchEntryFormContainer.js +22 -0
  143. package/src/components/search/entry/SearchEntryPanel.jsx +28 -0
  144. package/src/components/search/entry/SearchQueryInput.jsx +95 -0
  145. package/src/components/search/entry/SearchSubmitButton.jsx +22 -0
  146. package/src/components/search/entry/SortSelect.jsx +104 -0
  147. package/src/components/search/entry/SortSelectContainer.js +12 -0
  148. package/src/components/search/result/ClearSearchParamsLink.jsx +43 -0
  149. package/src/components/search/result/Filter.jsx +226 -0
  150. package/src/components/search/result/FilterContainer.js +20 -0
  151. package/src/components/search/result/FilterGroup.jsx +83 -0
  152. package/src/components/search/result/FilterList.jsx +51 -0
  153. package/src/components/search/result/FilterPanel.jsx +143 -0
  154. package/src/components/search/result/FilterPanelContainer.js +16 -0
  155. package/src/components/search/result/FilterSearchInput.jsx +68 -0
  156. package/src/components/search/result/RemoveSearchParamLink.jsx +79 -0
  157. package/src/components/search/result/SearchError.jsx +30 -0
  158. package/src/components/search/result/SearchLoadMore.jsx +37 -0
  159. package/src/components/search/result/SearchParamList.jsx +47 -0
  160. package/src/components/search/result/SearchPending.jsx +19 -0
  161. package/src/components/search/result/SearchResultImage.jsx +275 -0
  162. package/src/components/search/result/SearchResultList.jsx +144 -0
  163. package/src/components/search/result/SearchResultPanel.jsx +169 -0
  164. package/src/components/search/result/SearchResultPanelContainer.js +31 -0
  165. package/src/components/search/result/SearchResultStats.jsx +38 -0
  166. package/src/components/search/result/SearchResultTile.jsx +70 -0
  167. package/src/config/anthro.js +153 -0
  168. package/src/config/bonsai.js +50 -0
  169. package/src/config/botgarden.js +3 -0
  170. package/src/config/default.js +604 -0
  171. package/src/config/fcart.js +38 -0
  172. package/src/config/herbarium.js +3 -0
  173. package/src/config/index.js +51 -0
  174. package/src/config/lhmc.js +3 -0
  175. package/src/config/materials.js +1173 -0
  176. package/src/config/publicart.js +3 -0
  177. package/src/constants/actionCodes.js +26 -0
  178. package/src/constants/ids.js +3 -0
  179. package/src/helpers/bodyClassName.js +5 -0
  180. package/src/helpers/esQueryHelpers.js +224 -0
  181. package/src/helpers/formatHelpers.jsx +361 -0
  182. package/src/helpers/searchDimensions.js +21 -0
  183. package/src/helpers/urlHelpers.js +49 -0
  184. package/src/index.jsx +59 -0
  185. package/src/intl/index.js +16 -0
  186. package/src/reducers/detailReducer.js +201 -0
  187. package/src/reducers/filterReducer.js +16 -0
  188. package/src/reducers/index.js +56 -0
  189. package/src/reducers/mediaReducer.js +44 -0
  190. package/src/reducers/prefsReducer.js +24 -0
  191. package/src/reducers/searchEntryFormReducer.js +19 -0
  192. package/src/reducers/searchReducer.js +118 -0
  193. package/styles/colors.css +7 -0
  194. package/styles/cspace/DetailNavBar.css +17 -0
  195. package/styles/cspace/DetailPage.css +3 -0
  196. package/styles/cspace/DetailPanel.css +69 -0
  197. package/styles/cspace/ExhibitionSection.css +9 -0
  198. package/styles/cspace/FieldList.css +15 -0
  199. package/styles/cspace/FieldListField.css +7 -0
  200. package/styles/cspace/FieldListGroup.css +27 -0
  201. package/styles/cspace/FieldValueList.css +19 -0
  202. package/styles/cspace/Filter.css +64 -0
  203. package/styles/cspace/FilterGroup.css +21 -0
  204. package/styles/cspace/FilterPanel.css +45 -0
  205. package/styles/cspace/FilterSearchInput.css +13 -0
  206. package/styles/cspace/Fixed.css +8 -0
  207. package/styles/cspace/IconButton.css +11 -0
  208. package/styles/cspace/ImageGallery.css +43 -0
  209. package/styles/cspace/InstitutionHoldingList.css +109 -0
  210. package/styles/cspace/InstitutionIndex.css +13 -0
  211. package/styles/cspace/InstitutionSection.css +4 -0
  212. package/styles/cspace/Link.css +39 -0
  213. package/styles/cspace/Panel.css +53 -0
  214. package/styles/cspace/PanelTitle.css +48 -0
  215. package/styles/cspace/RemoveSearchParamLink.css +15 -0
  216. package/styles/cspace/RootPage.css +60 -0
  217. package/styles/cspace/ScrollTopButton.css +32 -0
  218. package/styles/cspace/SearchEntryForm.css +4 -0
  219. package/styles/cspace/SearchEntryPanel.css +11 -0
  220. package/styles/cspace/SearchPage.css +2 -0
  221. package/styles/cspace/SearchParamLink.css +21 -0
  222. package/styles/cspace/SearchParamList.css +6 -0
  223. package/styles/cspace/SearchQueryInput.css +30 -0
  224. package/styles/cspace/SearchResultImage.css +29 -0
  225. package/styles/cspace/SearchResultList.css +10 -0
  226. package/styles/cspace/SearchResultPanel.css +31 -0
  227. package/styles/cspace/SearchResultStats.css +4 -0
  228. package/styles/cspace/SearchResultTile.css +67 -0
  229. package/styles/cspace/SearchStatus.css +12 -0
  230. package/styles/cspace/SearchSubmitButton.css +3 -0
  231. package/styles/cspace/SortSelect.css +19 -0
  232. package/styles/cspace/ToggleFilterPanelButton.css +44 -0
  233. package/styles/dimensions.css +9 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _immutable = _interopRequireDefault(require("immutable"));
10
+ var _bodyClassName = _interopRequireDefault(require("../../helpers/bodyClassName"));
11
+ var _ScrollTopButton = _interopRequireDefault(require("../layout/ScrollTopButton"));
12
+ var _DetailPanelContainer = _interopRequireDefault(require("../detail/DetailPanelContainer"));
13
+ var _DetailPage = _interopRequireDefault(require("../../../styles/cspace/DetailPage.css"));
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ /* global window */
18
+
19
+ const propTypes = {
20
+ location: _propTypes.default.shape({
21
+ search: _propTypes.default.string.isRequired,
22
+ state: _propTypes.default.shape({
23
+ index: _propTypes.default.number
24
+ })
25
+ }).isRequired,
26
+ match: _propTypes.default.shape({
27
+ params: _propTypes.default.shape({
28
+ csid: _propTypes.default.string
29
+ })
30
+ }).isRequired,
31
+ params: _propTypes.default.instanceOf(_immutable.default.Map),
32
+ onLeave: _propTypes.default.func,
33
+ onLocationChange: _propTypes.default.func
34
+ };
35
+ const defaultProps = {
36
+ onLeave: () => undefined,
37
+ onLocationChange: () => undefined,
38
+ params: undefined
39
+ };
40
+ class DetailPage extends _react.Component {
41
+ componentDidMount() {
42
+ window.document.body.classList.add((0, _bodyClassName.default)(_DetailPage.default.common));
43
+ if (window.scrollTo) {
44
+ window.scrollTo({
45
+ left: 0,
46
+ top: 0
47
+ });
48
+ }
49
+ this.handleLocationChange();
50
+ }
51
+ componentDidUpdate(prevProps) {
52
+ const {
53
+ location
54
+ } = this.props;
55
+ const {
56
+ location: prevLocation
57
+ } = prevProps;
58
+ if (location !== prevLocation) {
59
+ this.handleLocationChange();
60
+ }
61
+ }
62
+ componentWillUnmount() {
63
+ const {
64
+ onLeave
65
+ } = this.props;
66
+ window.document.body.classList.remove((0, _bodyClassName.default)(_DetailPage.default.common));
67
+ onLeave();
68
+ }
69
+ handleLocationChange() {
70
+ const {
71
+ location,
72
+ match,
73
+ onLocationChange
74
+ } = this.props;
75
+ onLocationChange(location, match);
76
+ }
77
+ render() {
78
+ const {
79
+ params
80
+ } = this.props;
81
+ if (!params) {
82
+ return null;
83
+ }
84
+ return /*#__PURE__*/_react.default.createElement("div", {
85
+ className: _DetailPage.default.common
86
+ }, /*#__PURE__*/_react.default.createElement(_DetailPanelContainer.default, {
87
+ params: params
88
+ }), /*#__PURE__*/_react.default.createElement(_ScrollTopButton.default, null));
89
+ }
90
+ }
91
+ exports.default = DetailPage;
92
+ DetailPage.propTypes = propTypes;
93
+ DetailPage.defaultProps = defaultProps;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _DetailPage = _interopRequireDefault(require("./DetailPage"));
9
+ var _detailActions = require("../../actions/detailActions");
10
+ var _reducers = require("../../reducers");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const mapStateToProps = state => ({
13
+ params: (0, _reducers.getDetailParams)(state)
14
+ });
15
+ const mapDispatchToProps = {
16
+ onLeave: _detailActions.clearDetail,
17
+ onLocationChange: _detailActions.setDetailParams
18
+ };
19
+ var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_DetailPage.default);
20
+ exports.default = _default;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = RootPage;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactIntl = require("react-intl");
9
+ var _reactRouter = require("react-router");
10
+ var _reactHelmet = _interopRequireDefault(require("react-helmet"));
11
+ var _DetailPageContainer = _interopRequireDefault(require("./DetailPageContainer"));
12
+ var _SearchPageContainer = _interopRequireDefault(require("./SearchPageContainer"));
13
+ var _config = _interopRequireDefault(require("../../config"));
14
+ var _RootPage = _interopRequireDefault(require("../../../styles/cspace/RootPage.css"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ const messages = (0, _reactIntl.defineMessages)({
17
+ title: {
18
+ "id": "RootPage.title",
19
+ "defaultMessage": "Collection Browser"
20
+ }
21
+ });
22
+ function RootPage() {
23
+ const intl = (0, _reactIntl.useIntl)();
24
+ const title = intl.formatMessage(messages.title);
25
+ const detailPath = _config.default.get('detailPath');
26
+ return /*#__PURE__*/_react.default.createElement("div", {
27
+ className: _RootPage.default.common
28
+ }, /*#__PURE__*/_react.default.createElement(_reactHelmet.default, {
29
+ defaultTitle: title,
30
+ titleTemplate: `%s | ${title}`
31
+ }, /*#__PURE__*/_react.default.createElement("meta", {
32
+ name: "viewport",
33
+ content: "width=device-width"
34
+ })), /*#__PURE__*/_react.default.createElement(_reactRouter.Switch, null, /*#__PURE__*/_react.default.createElement(_reactRouter.Route, {
35
+ path: "/search",
36
+ component: _SearchPageContainer.default
37
+ }), /*#__PURE__*/_react.default.createElement(_reactRouter.Route, {
38
+ path: `/${detailPath}/:csid`,
39
+ component: _DetailPageContainer.default
40
+ })));
41
+ }
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _reactHelmet = _interopRequireDefault(require("react-helmet"));
10
+ var _reactIntl = require("react-intl");
11
+ var _reactRouter = require("react-router");
12
+ var _immutable = _interopRequireDefault(require("immutable"));
13
+ var _bodyClassName = _interopRequireDefault(require("../../helpers/bodyClassName"));
14
+ var _Fixed = _interopRequireDefault(require("../layout/Fixed"));
15
+ var _FilterPanelContainer = _interopRequireDefault(require("../search/result/FilterPanelContainer"));
16
+ var _SearchEntryPanel = _interopRequireDefault(require("../search/entry/SearchEntryPanel"));
17
+ var _SearchResultPanelContainer = _interopRequireDefault(require("../search/result/SearchResultPanelContainer"));
18
+ var _ScrollTopButton = _interopRequireDefault(require("../layout/ScrollTopButton"));
19
+ var _ToggleFilterPanelButton = _interopRequireDefault(require("../layout/ToggleFilterPanelButton"));
20
+ var _ids = require("../../constants/ids");
21
+ var _SearchPage = _interopRequireDefault(require("../../../styles/cspace/SearchPage.css"));
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+ /* global window */
26
+
27
+ const propTypes = {
28
+ intl: _propTypes.default.shape({
29
+ formatMessage: _propTypes.default.func.isRequired
30
+ }).isRequired,
31
+ location: _propTypes.default.shape({
32
+ search: _propTypes.default.string
33
+ }).isRequired,
34
+ isFilterPanelExpanded: _propTypes.default.bool,
35
+ onLocationChange: _propTypes.default.func,
36
+ onTogglePanelButtonClick: _propTypes.default.func,
37
+ params: _propTypes.default.instanceOf(_immutable.default.Map)
38
+ };
39
+ const defaultProps = {
40
+ isFilterPanelExpanded: false,
41
+ onLocationChange: () => undefined,
42
+ onTogglePanelButtonClick: () => undefined,
43
+ params: undefined
44
+ };
45
+ const messages = (0, _reactIntl.defineMessages)({
46
+ title: {
47
+ "id": "SearchPage.title",
48
+ "defaultMessage": "Search"
49
+ }
50
+ });
51
+ class SearchPage extends _react.Component {
52
+ constructor() {
53
+ super();
54
+ this.handleFilterPanelApi = this.handleFilterPanelApi.bind(this);
55
+ this.handleSearchResultListHitsUpdated = this.handleSearchResultListHitsUpdated.bind(this);
56
+ this.handleToggleFilterPanelButtonClick = this.handleToggleFilterPanelButtonClick.bind(this);
57
+ }
58
+ componentDidMount() {
59
+ window.document.body.classList.add((0, _bodyClassName.default)(_SearchPage.default.common));
60
+ if (window.scrollTo) {
61
+ window.scrollTo({
62
+ left: 0,
63
+ top: 0
64
+ });
65
+ }
66
+ this.handleLocationChange();
67
+ }
68
+ componentDidUpdate(prevProps) {
69
+ const {
70
+ location
71
+ } = this.props;
72
+ const {
73
+ location: prevLocation
74
+ } = prevProps;
75
+ if (location !== prevLocation) {
76
+ this.handleLocationChange();
77
+ }
78
+ }
79
+ componentWillUnmount() {
80
+ window.document.body.classList.remove((0, _bodyClassName.default)(_SearchPage.default.common));
81
+ }
82
+ handleFilterPanelApi(api) {
83
+ this.filterPanelApi = api;
84
+ }
85
+ handleLocationChange() {
86
+ const {
87
+ location,
88
+ onLocationChange
89
+ } = this.props;
90
+ onLocationChange(location);
91
+ }
92
+ handleSearchResultListHitsUpdated() {
93
+ if (this.filterPanelApi) {
94
+ this.filterPanelApi.setHeight();
95
+ }
96
+ }
97
+ handleToggleFilterPanelButtonClick() {
98
+ const {
99
+ onTogglePanelButtonClick
100
+ } = this.props;
101
+ onTogglePanelButtonClick(_ids.FILTER_PANEL_ID);
102
+ }
103
+ render() {
104
+ const {
105
+ intl,
106
+ isFilterPanelExpanded,
107
+ params
108
+ } = this.props;
109
+ if (!params) {
110
+ return null;
111
+ }
112
+ const title = intl.formatMessage(messages.title);
113
+ return /*#__PURE__*/_react.default.createElement("div", {
114
+ className: _SearchPage.default.common
115
+ }, /*#__PURE__*/_react.default.createElement(_reactHelmet.default, null, /*#__PURE__*/_react.default.createElement("title", null, title)), /*#__PURE__*/_react.default.createElement(_Fixed.default, null, /*#__PURE__*/_react.default.createElement(_SearchEntryPanel.default, null), /*#__PURE__*/_react.default.createElement(_ToggleFilterPanelButton.default, {
116
+ isFilterPanelExpanded: isFilterPanelExpanded,
117
+ onClick: this.handleToggleFilterPanelButtonClick
118
+ }), /*#__PURE__*/_react.default.createElement(_FilterPanelContainer.default, {
119
+ api: this.handleFilterPanelApi,
120
+ isExpanded: isFilterPanelExpanded
121
+ })), /*#__PURE__*/_react.default.createElement(_SearchResultPanelContainer.default, {
122
+ params: params,
123
+ onHitsUpdated: this.handleSearchResultListHitsUpdated
124
+ }), /*#__PURE__*/_react.default.createElement(_ScrollTopButton.default, null));
125
+ }
126
+ }
127
+ SearchPage.propTypes = propTypes;
128
+ SearchPage.defaultProps = defaultProps;
129
+ var _default = (0, _reactIntl.injectIntl)((0, _reactRouter.withRouter)(SearchPage));
130
+ exports.default = _default;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _SearchPage = _interopRequireDefault(require("./SearchPage"));
9
+ var _prefsActions = require("../../actions/prefsActions");
10
+ var _searchActions = require("../../actions/searchActions");
11
+ var _ids = require("../../constants/ids");
12
+ var _reducers = require("../../reducers");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ const mapStateToProps = state => ({
15
+ isFilterPanelExpanded: (0, _reducers.isPanelExpanded)(state, _ids.FILTER_PANEL_ID),
16
+ params: (0, _reducers.getSearchParams)(state)
17
+ });
18
+ const mapDispatchToProps = {
19
+ onLocationChange: _searchActions.setSearchParams,
20
+ onTogglePanelButtonClick: _prefsActions.togglePanel
21
+ };
22
+ var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_SearchPage.default);
23
+ exports.default = _default;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _reactRouter = require("react-router");
10
+ var _immutable = _interopRequireDefault(require("immutable"));
11
+ var _SearchQueryInput = _interopRequireDefault(require("./SearchQueryInput"));
12
+ var _ids = require("../../../constants/ids");
13
+ var _SearchEntryForm = _interopRequireDefault(require("../../../../styles/cspace/SearchEntryForm.css"));
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ const propTypes = {
18
+ history: _propTypes.default.shape({
19
+ push: _propTypes.default.func
20
+ }).isRequired,
21
+ onCommit: _propTypes.default.func,
22
+ onSubmit: _propTypes.default.func,
23
+ params: _propTypes.default.instanceOf(_immutable.default.Map)
24
+ };
25
+ const defaultProps = {
26
+ onCommit: () => undefined,
27
+ onSubmit: () => undefined,
28
+ params: _immutable.default.Map()
29
+ };
30
+ class SearchEntryForm extends _react.Component {
31
+ constructor() {
32
+ super();
33
+ this.handleInputCommit = this.handleInputCommit.bind(this);
34
+ this.handleRef = this.handleRef.bind(this);
35
+ this.handleSubmit = this.handleSubmit.bind(this);
36
+ }
37
+ handleInputCommit(id, value) {
38
+ const {
39
+ onCommit
40
+ } = this.props;
41
+ onCommit(id, value);
42
+ }
43
+ handleRef(ref) {
44
+ this.domNode = ref;
45
+ }
46
+ handleSubmit(event) {
47
+ const {
48
+ history,
49
+ onSubmit
50
+ } = this.props;
51
+ event.preventDefault();
52
+ onSubmit(history);
53
+ }
54
+ render() {
55
+ const {
56
+ params
57
+ } = this.props;
58
+ return /*#__PURE__*/_react.default.createElement("form", {
59
+ className: _SearchEntryForm.default.common,
60
+ ref: this.handleRef,
61
+ role: "search",
62
+ onSubmit: this.handleSubmit
63
+ }, /*#__PURE__*/_react.default.createElement(_SearchQueryInput.default, {
64
+ id: _ids.SEARCH_QUERY_ID,
65
+ showSubmitButton: true,
66
+ value: params.get(_ids.SEARCH_QUERY_ID),
67
+ onCommit: this.handleInputCommit
68
+ }));
69
+ }
70
+ }
71
+ SearchEntryForm.propTypes = propTypes;
72
+ SearchEntryForm.defaultProps = defaultProps;
73
+ var _default = (0, _reactRouter.withRouter)(SearchEntryForm);
74
+ exports.default = _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _SearchEntryForm = _interopRequireDefault(require("./SearchEntryForm"));
9
+ var _reducers = require("../../../reducers");
10
+ var _searchEntryFormActions = require("../../../actions/searchEntryFormActions");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const mapStateToProps = state => ({
13
+ params: (0, _reducers.getSearchEntryFormParams)(state)
14
+ });
15
+ const mapDispatchToProps = {
16
+ onCommit: _searchEntryFormActions.setSearchEntryFormParam,
17
+ onSubmit: _searchEntryFormActions.applySearchEntryForm
18
+ };
19
+ var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_SearchEntryForm.default);
20
+ exports.default = _default;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = SearchEntryPanel;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _immutable = _interopRequireDefault(require("immutable"));
10
+ var _SearchEntryFormContainer = _interopRequireDefault(require("./SearchEntryFormContainer"));
11
+ var _SearchEntryPanel = _interopRequireDefault(require("../../../../styles/cspace/SearchEntryPanel.css"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const propTypes = {
14
+ params: _propTypes.default.instanceOf(_immutable.default.Map)
15
+ };
16
+ const defaultProps = {
17
+ params: undefined
18
+ };
19
+ function SearchEntryPanel(props) {
20
+ const {
21
+ params
22
+ } = props;
23
+ return /*#__PURE__*/_react.default.createElement("div", {
24
+ className: _SearchEntryPanel.default.common
25
+ }, /*#__PURE__*/_react.default.createElement(_SearchEntryFormContainer.default, {
26
+ params: params
27
+ }));
28
+ }
29
+ SearchEntryPanel.propTypes = propTypes;
30
+ SearchEntryPanel.defaultProps = defaultProps;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.messages = exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _reactIntl = require("react-intl");
10
+ var _SearchSubmitButton = _interopRequireDefault(require("./SearchSubmitButton"));
11
+ var _SearchQueryInput = _interopRequireDefault(require("../../../../styles/cspace/SearchQueryInput.css"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+ const propTypes = {
16
+ id: _propTypes.default.string.isRequired,
17
+ intl: _propTypes.default.shape({
18
+ formatMessage: _propTypes.default.func.isRequired
19
+ }).isRequired,
20
+ onCommit: _propTypes.default.func,
21
+ showSubmitButton: _propTypes.default.bool,
22
+ value: _propTypes.default.string
23
+ };
24
+ const defaultProps = {
25
+ onCommit: () => undefined,
26
+ showSubmitButton: false,
27
+ value: ''
28
+ };
29
+ const messages = (0, _reactIntl.defineMessages)({
30
+ label: {
31
+ "id": "searchQueryInput.label",
32
+ "defaultMessage": "Search collection"
33
+ },
34
+ placeholder: {
35
+ "id": "searchQueryInput.placeholder",
36
+ "defaultMessage": "Search collection"
37
+ },
38
+ shortLabel: {
39
+ "id": "searchQueryInput.shortLabel",
40
+ "defaultMessage": "Search"
41
+ }
42
+ });
43
+ exports.messages = messages;
44
+ class SearchQueryInput extends _react.Component {
45
+ constructor() {
46
+ super();
47
+ this.handleChange = this.handleChange.bind(this);
48
+ }
49
+ handleChange(event) {
50
+ const {
51
+ id,
52
+ onCommit
53
+ } = this.props;
54
+ onCommit(id, event.target.value);
55
+ }
56
+ commit() {
57
+ const {
58
+ id,
59
+ onCommit
60
+ } = this.props;
61
+ if (this.inputDomNode) {
62
+ onCommit(id, this.inputDomNode.value);
63
+ }
64
+ }
65
+ render() {
66
+ const {
67
+ id,
68
+ intl,
69
+ showSubmitButton,
70
+ value
71
+ } = this.props;
72
+ return /*#__PURE__*/_react.default.createElement("div", {
73
+ className: _SearchQueryInput.default.common
74
+ }, /*#__PURE__*/_react.default.createElement("input", {
75
+ "aria-label": intl.formatMessage(messages.label),
76
+ autoComplete: "off",
77
+ autoCorrect: "off",
78
+ name: id,
79
+ placeholder: intl.formatMessage(messages.placeholder),
80
+ type: "search",
81
+ value: value,
82
+ onChange: this.handleChange
83
+ }), showSubmitButton && /*#__PURE__*/_react.default.createElement(_SearchSubmitButton.default, null));
84
+ }
85
+ }
86
+ SearchQueryInput.propTypes = propTypes;
87
+ SearchQueryInput.defaultProps = defaultProps;
88
+ var _default = (0, _reactIntl.injectIntl)(SearchQueryInput);
89
+ exports.default = _default;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = SearchSubmitButton;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactIntl = require("react-intl");
9
+ var _SearchSubmitButton = _interopRequireDefault(require("../../../../styles/cspace/SearchSubmitButton.css"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const messages = (0, _reactIntl.defineMessages)({
12
+ submit: {
13
+ "id": "searchEntryForm.submit",
14
+ "defaultMessage": "Search"
15
+ }
16
+ });
17
+ function SearchSubmitButton() {
18
+ return /*#__PURE__*/_react.default.createElement("button", {
19
+ className: _SearchSubmitButton.default.common,
20
+ type: "submit"
21
+ }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, messages.submit));
22
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _reactRouter = require("react-router");
10
+ var _reactIntl = require("react-intl");
11
+ var _config = _interopRequireDefault(require("../../../config"));
12
+ var _SortSelect = _interopRequireDefault(require("../../../../styles/cspace/SortSelect.css"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ const propTypes = {
17
+ history: _propTypes.default.shape({
18
+ push: _propTypes.default.func
19
+ }).isRequired,
20
+ intl: _propTypes.default.shape({
21
+ formatMessage: _propTypes.default.func.isRequired
22
+ }).isRequired,
23
+ onCommit: _propTypes.default.func,
24
+ value: _propTypes.default.string
25
+ };
26
+ const defaultProps = {
27
+ onCommit: () => undefined,
28
+ value: _config.default.get('defaultSortOrder')
29
+ };
30
+ const messages = (0, _reactIntl.defineMessages)({
31
+ label: {
32
+ "id": "sortSelect.label",
33
+ "defaultMessage": "Sort results by"
34
+ },
35
+ bestmatch: {
36
+ "id": "sortSelect.bestmatch",
37
+ "defaultMessage": "Best match"
38
+ },
39
+ atoz: {
40
+ "id": "sortSelect.atoz",
41
+ "defaultMessage": "A to Z"
42
+ },
43
+ ztoa: {
44
+ "id": "sortSelect.ztoa",
45
+ "defaultMessage": "Z to A"
46
+ },
47
+ newest: {
48
+ "id": "sortSelect.newest",
49
+ "defaultMessage": "Newest"
50
+ },
51
+ oldest: {
52
+ "id": "sortSelect.oldest",
53
+ "defaultMessage": "Oldest"
54
+ }
55
+ });
56
+ class SortSelect extends _react.Component {
57
+ constructor() {
58
+ super();
59
+ this.handleChange = this.handleChange.bind(this);
60
+ }
61
+ handleChange(event) {
62
+ const {
63
+ history,
64
+ onCommit
65
+ } = this.props;
66
+ onCommit(history, event.target.value);
67
+ }
68
+ render() {
69
+ const {
70
+ intl,
71
+ value
72
+ } = this.props;
73
+ return /*#__PURE__*/_react.default.createElement("label", {
74
+ htmlFor: "sort-select"
75
+ }, "Sort by", ' ', /*#__PURE__*/_react.default.createElement("select", {
76
+ className: _SortSelect.default.common,
77
+ id: "sort-select",
78
+ value: value,
79
+ onChange: this.handleChange
80
+ }, ['bestmatch', 'atoz', 'ztoa', 'newest', 'oldest'].map(sortOrder => /*#__PURE__*/_react.default.createElement("option", {
81
+ key: sortOrder,
82
+ value: sortOrder
83
+ }, intl.formatMessage(messages[sortOrder])))));
84
+ }
85
+ }
86
+ SortSelect.propTypes = propTypes;
87
+ SortSelect.defaultProps = defaultProps;
88
+ var _default = (0, _reactRouter.withRouter)((0, _reactIntl.injectIntl)(SortSelect));
89
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _SortSelect = _interopRequireDefault(require("./SortSelect"));
9
+ var _searchActions = require("../../../actions/searchActions");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const mapDispatchToProps = {
12
+ onCommit: _searchActions.applySortOrder
13
+ };
14
+ var _default = (0, _reactRedux.connect)(undefined, mapDispatchToProps)(_SortSelect.default);
15
+ exports.default = _default;