@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,155 @@
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 _reactIntl = require("react-intl");
10
+ var _FieldList = _interopRequireDefault(require("./FieldList"));
11
+ var _ImageGalleryContainer = _interopRequireDefault(require("./ImageGalleryContainer"));
12
+ var _PanelTitle = _interopRequireDefault(require("../layout/PanelTitle"));
13
+ var _config = _interopRequireDefault(require("../../config"));
14
+ var _InstitutionHoldingList = _interopRequireDefault(require("../../../styles/cspace/InstitutionHoldingList.css"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ 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); }
17
+ 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; }
18
+ 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); } /* global window */
19
+ const messages = (0, _reactIntl.defineMessages)({
20
+ title: {
21
+ "id": "institutionHoldingList.title",
22
+ "defaultMessage": "Samples at {title}"
23
+ }
24
+ });
25
+ const propTypes = {
26
+ hits: _propTypes.default.arrayOf(_propTypes.default.shape({
27
+ _source: _propTypes.default.shape({
28
+ 'collectionspace_core:uri': _propTypes.default.string
29
+ })
30
+ })),
31
+ institutionConfig: _propTypes.default.shape({
32
+ title: _propTypes.default.string
33
+ }).isRequired,
34
+ institutionId: _propTypes.default.string.isRequired,
35
+ isExpanded: _propTypes.default.bool,
36
+ isSelected: _propTypes.default.bool,
37
+ expandPanel: _propTypes.default.func,
38
+ referenceValue: _propTypes.default.string.isRequired,
39
+ togglePanel: _propTypes.default.func
40
+ };
41
+ const defaultProps = {
42
+ hits: [],
43
+ isExpanded: false,
44
+ isSelected: false,
45
+ expandPanel: () => undefined,
46
+ togglePanel: () => undefined
47
+ };
48
+ const renderResult = data => {
49
+ const {
50
+ 'collectionspace_core:uri': uri
51
+ } = data;
52
+ return /*#__PURE__*/_react.default.createElement("li", {
53
+ key: uri
54
+ }, /*#__PURE__*/_react.default.createElement(_FieldList.default, {
55
+ config: _config.default.get('institutionHoldings').detailFields,
56
+ data: data
57
+ }));
58
+ };
59
+ class InstitutionHoldingList extends _react.Component {
60
+ constructor() {
61
+ super();
62
+ this.ref = /*#__PURE__*/_react.default.createRef();
63
+ }
64
+ componentDidMount() {
65
+ const {
66
+ isSelected
67
+ } = this.props;
68
+ if (isSelected) {
69
+ this.focus();
70
+ }
71
+ }
72
+ componentDidUpdate(prevProps) {
73
+ const {
74
+ isSelected: prevIsSelected
75
+ } = prevProps;
76
+ const {
77
+ isSelected
78
+ } = this.props;
79
+ if (isSelected && !prevIsSelected) {
80
+ this.focus();
81
+ }
82
+ }
83
+ focus() {
84
+ const {
85
+ expandPanel
86
+ } = this.props;
87
+ const domNode = this.ref.current;
88
+ if (domNode) {
89
+ window.setTimeout(() => {
90
+ expandPanel();
91
+ domNode.scrollIntoView();
92
+ }, 0);
93
+ }
94
+ }
95
+ renderContent() {
96
+ const {
97
+ hits,
98
+ institutionId,
99
+ isExpanded,
100
+ referenceValue
101
+ } = this.props;
102
+ if (isExpanded) {
103
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_ImageGalleryContainer.default, {
104
+ institutionId: institutionId,
105
+ referenceValue: referenceValue
106
+ }), /*#__PURE__*/_react.default.createElement("ul", null, hits.map(hit => renderResult(hit._source))));
107
+ }
108
+ return null;
109
+ }
110
+ renderTitle() {
111
+ const {
112
+ hits,
113
+ institutionConfig,
114
+ isExpanded,
115
+ togglePanel
116
+ } = this.props;
117
+ const {
118
+ title
119
+ } = institutionConfig;
120
+ const formattedTitle = /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage
121
+ // eslint-disable-next-line react/jsx-props-no-spreading
122
+ , _extends({}, messages.title, {
123
+ tagName: "h2",
124
+ values: {
125
+ title,
126
+ count: hits.length
127
+ }
128
+ }));
129
+ return /*#__PURE__*/_react.default.createElement(_PanelTitle.default, {
130
+ isExpanded: isExpanded,
131
+ title: formattedTitle,
132
+ onClick: togglePanel
133
+ });
134
+ }
135
+ render() {
136
+ const {
137
+ hits
138
+ } = this.props;
139
+ if (hits.length === 0) {
140
+ return null;
141
+ }
142
+ const {
143
+ institutionId,
144
+ isExpanded
145
+ } = this.props;
146
+ return /*#__PURE__*/_react.default.createElement("section", {
147
+ className: isExpanded ? _InstitutionHoldingList.default.expanded : _InstitutionHoldingList.default.collapsed,
148
+ id: institutionId,
149
+ ref: this.ref
150
+ }, this.renderTitle(), this.renderContent());
151
+ }
152
+ }
153
+ exports.default = InstitutionHoldingList;
154
+ InstitutionHoldingList.propTypes = propTypes;
155
+ InstitutionHoldingList.defaultProps = defaultProps;
@@ -0,0 +1,22 @@
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 _InstitutionHoldingList = _interopRequireDefault(require("./InstitutionHoldingList"));
9
+ var _prefsActions = require("../../actions/prefsActions");
10
+ var _reducers = require("../../reducers");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const panelId = institutionId => `SampleList-${institutionId}`;
13
+ const mapStateToProps = (state, ownProps) => ({
14
+ hits: (0, _reducers.getDetailInstitutionHits)(state, ownProps.institutionId),
15
+ isExpanded: (0, _reducers.isPanelExpanded)(state, panelId(ownProps.institutionId))
16
+ });
17
+ const mapDispatchToProps = (dispatch, ownProps) => ({
18
+ expandPanel: () => dispatch((0, _prefsActions.expandPanel)(panelId(ownProps.institutionId))),
19
+ togglePanel: () => dispatch((0, _prefsActions.togglePanel)(panelId(ownProps.institutionId)))
20
+ });
21
+ var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_InstitutionHoldingList.default);
22
+ exports.default = _default;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = InstitutionIndex;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _immutable = _interopRequireDefault(require("immutable"));
10
+ var _get = _interopRequireDefault(require("lodash/get"));
11
+ var _reactIntl = require("react-intl");
12
+ var _config = _interopRequireDefault(require("../../config"));
13
+ var _Link = _interopRequireDefault(require("../../../styles/cspace/Link.css"));
14
+ var _InstitutionIndex = _interopRequireDefault(require("../../../styles/cspace/InstitutionIndex.css"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ 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); }
17
+ const messages = (0, _reactIntl.defineMessages)({
18
+ label: {
19
+ "id": "institutionIndex.label",
20
+ "defaultMessage": "Holdings at {title}"
21
+ }
22
+ });
23
+ const propTypes = {
24
+ holdingInstitutions: _propTypes.default.instanceOf(_immutable.default.Set).isRequired
25
+ };
26
+ function InstitutionIndex(props) {
27
+ const {
28
+ holdingInstitutions
29
+ } = props;
30
+ const institutions = _config.default.get('institutions');
31
+ const links = holdingInstitutions.map(institutionId => {
32
+ const title = (0, _get.default)(institutions, [institutionId, 'title']);
33
+ return /*#__PURE__*/_react.default.createElement("li", {
34
+ key: institutionId
35
+ }, /*#__PURE__*/_react.default.createElement("a", {
36
+ className: _Link.default.hash,
37
+ href: `#${institutionId}`
38
+ }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage
39
+ // eslint-disable-next-line react/jsx-props-no-spreading
40
+ , _extends({}, messages.label, {
41
+ values: {
42
+ title
43
+ }
44
+ }))));
45
+ });
46
+ if (links.size === 0) {
47
+ return null;
48
+ }
49
+ return /*#__PURE__*/_react.default.createElement("nav", {
50
+ className: _InstitutionIndex.default.common
51
+ }, /*#__PURE__*/_react.default.createElement("ul", null, links));
52
+ }
53
+ InstitutionIndex.propTypes = propTypes;
@@ -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 _InstitutionIndex = _interopRequireDefault(require("./InstitutionIndex"));
9
+ var _reducers = require("../../reducers");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const mapStateToProps = state => ({
12
+ holdingInstitutions: (0, _reducers.getDetailHoldingInstitutions)(state)
13
+ });
14
+ var _default = (0, _reactRedux.connect)(mapStateToProps)(_InstitutionIndex.default);
15
+ exports.default = _default;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = InstitutionSection;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _immutable = _interopRequireDefault(require("immutable"));
10
+ var _InstitutionHoldingListContainer = _interopRequireDefault(require("./InstitutionHoldingListContainer"));
11
+ var _InstitutionSection = _interopRequireDefault(require("../../../styles/cspace/InstitutionSection.css"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const propTypes = {
14
+ config: _propTypes.default.objectOf(_propTypes.default.object).isRequired,
15
+ holdingInstitutions: _propTypes.default.instanceOf(_immutable.default.Set).isRequired,
16
+ referenceValue: _propTypes.default.string.isRequired,
17
+ selectedInstitutionId: _propTypes.default.string
18
+ };
19
+ const defaultProps = {
20
+ selectedInstitutionId: undefined
21
+ };
22
+ function InstitutionSection(props) {
23
+ const {
24
+ config,
25
+ holdingInstitutions,
26
+ referenceValue,
27
+ selectedInstitutionId
28
+ } = props;
29
+ if (!holdingInstitutions || holdingInstitutions.size === 0) {
30
+ return null;
31
+ }
32
+ const institutions = holdingInstitutions.map(institutionId => /*#__PURE__*/_react.default.createElement(_InstitutionHoldingListContainer.default, {
33
+ institutionConfig: config[institutionId],
34
+ institutionId: institutionId,
35
+ isSelected: institutionId === selectedInstitutionId,
36
+ key: institutionId,
37
+ referenceValue: referenceValue
38
+ }));
39
+ return /*#__PURE__*/_react.default.createElement("section", {
40
+ className: _InstitutionSection.default.common
41
+ }, institutions);
42
+ }
43
+ InstitutionSection.propTypes = propTypes;
44
+ InstitutionSection.defaultProps = defaultProps;
@@ -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 _InstitutionSection = _interopRequireDefault(require("./InstitutionSection"));
9
+ var _reducers = require("../../reducers");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const mapStateToProps = state => ({
12
+ holdingInstitutions: (0, _reducers.getDetailHoldingInstitutions)(state)
13
+ });
14
+ var _default = (0, _reactRedux.connect)(mapStateToProps)(_InstitutionSection.default);
15
+ exports.default = _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Fixed;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Fixed = _interopRequireDefault(require("../../../styles/cspace/Fixed.css"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const propTypes = {
12
+ children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.arrayOf(_propTypes.default.element)])
13
+ };
14
+ const defaultProps = {
15
+ children: undefined
16
+ };
17
+ function Fixed(props) {
18
+ const {
19
+ children
20
+ } = props;
21
+ return /*#__PURE__*/_react.default.createElement("div", {
22
+ className: _Fixed.default.common
23
+ }, children);
24
+ }
25
+ Fixed.propTypes = propTypes;
26
+ Fixed.defaultProps = defaultProps;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = IconButton;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _reactIntl = require("react-intl");
11
+ var _IconButton = _interopRequireDefault(require("../../../styles/cspace/IconButton.css"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ 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); }
14
+ const propTypes = {
15
+ className: _propTypes.default.string,
16
+ labelMessage: _propTypes.default.shape({
17
+ id: _propTypes.default.string.isRequired,
18
+ defaultMessage: _propTypes.default.string.isRequired
19
+ }).isRequired,
20
+ onClick: _propTypes.default.func
21
+ };
22
+ const defaultProps = {
23
+ className: undefined,
24
+ onClick: undefined
25
+ };
26
+ function IconButton(props) {
27
+ const {
28
+ className,
29
+ labelMessage,
30
+ onClick
31
+ } = props;
32
+ return /*#__PURE__*/_react.default.createElement("button", {
33
+ className: (0, _classnames.default)(className, _IconButton.default.common),
34
+ type: "button",
35
+ onClick: onClick
36
+ }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _extends({}, labelMessage, {
37
+ tagName: "span"
38
+ })));
39
+ }
40
+ IconButton.propTypes = propTypes;
41
+ IconButton.defaultProps = defaultProps;
@@ -0,0 +1,56 @@
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 _Panel = _interopRequireDefault(require("../../../styles/cspace/Panel.css"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ 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); }
12
+ 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; }
13
+ const propTypes = {
14
+ id: _propTypes.default.string.isRequired,
15
+ children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.arrayOf(_propTypes.default.element)]),
16
+ title: _propTypes.default.element,
17
+ isExpanded: _propTypes.default.bool,
18
+ onHeaderClick: _propTypes.default.func
19
+ };
20
+ const defaultProps = {
21
+ children: undefined,
22
+ isExpanded: false,
23
+ onHeaderClick: () => undefined,
24
+ title: undefined
25
+ };
26
+ class Panel extends _react.Component {
27
+ constructor() {
28
+ super();
29
+ this.handleHeaderButtonClick = this.handleHeaderButtonClick.bind(this);
30
+ }
31
+ handleHeaderButtonClick() {
32
+ const {
33
+ id,
34
+ onHeaderClick
35
+ } = this.props;
36
+ onHeaderClick(id);
37
+ }
38
+ render() {
39
+ const {
40
+ children,
41
+ isExpanded,
42
+ title
43
+ } = this.props;
44
+ const className = isExpanded ? _Panel.default.expanded : _Panel.default.collapsed;
45
+ return /*#__PURE__*/_react.default.createElement("div", {
46
+ className: className
47
+ }, /*#__PURE__*/_react.default.createElement("header", null, /*#__PURE__*/_react.default.createElement("button", {
48
+ onClick: this.handleHeaderButtonClick,
49
+ "aria-expanded": isExpanded,
50
+ type: "button"
51
+ }, title)), isExpanded ? children : undefined);
52
+ }
53
+ }
54
+ exports.default = Panel;
55
+ Panel.propTypes = propTypes;
56
+ Panel.defaultProps = defaultProps;
@@ -0,0 +1,19 @@
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 _Panel = _interopRequireDefault(require("./Panel"));
9
+ var _reducers = require("../../reducers");
10
+ var _prefsActions = require("../../actions/prefsActions");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const mapStateToProps = (state, ownProps) => ({
13
+ isExpanded: (0, _reducers.isPanelExpanded)(state, ownProps.id)
14
+ });
15
+ const mapDispatchToProps = {
16
+ onHeaderClick: _prefsActions.togglePanel
17
+ };
18
+ var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_Panel.default);
19
+ exports.default = _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = PanelTitle;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _PanelTitle = _interopRequireDefault(require("../../../styles/cspace/PanelTitle.css"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ 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); }
12
+ const propTypes = {
13
+ isExpanded: _propTypes.default.bool,
14
+ styles: _propTypes.default.shape({
15
+ expanded: _propTypes.default.string,
16
+ collapsed: _propTypes.default.string
17
+ }),
18
+ title: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.element]).isRequired
19
+ };
20
+ const defaultProps = {
21
+ styles: _PanelTitle.default,
22
+ isExpanded: false
23
+ };
24
+ function PanelTitle(props) {
25
+ const {
26
+ isExpanded,
27
+ styles,
28
+ title,
29
+ ...remainingProps
30
+ } = props;
31
+ return /*#__PURE__*/_react.default.createElement("button", _extends({
32
+ className: isExpanded ? styles.expanded : styles.collapsed,
33
+ type: "button"
34
+ // eslint-disable-next-line react/jsx-props-no-spreading
35
+ }, remainingProps), /*#__PURE__*/_react.default.createElement("div", null, title));
36
+ }
37
+ PanelTitle.propTypes = propTypes;
38
+ PanelTitle.defaultProps = defaultProps;
@@ -0,0 +1,70 @@
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 _reactIntl = require("react-intl");
9
+ var _IconButton = _interopRequireDefault(require("./IconButton"));
10
+ var _ScrollTopButton = _interopRequireDefault(require("../../../styles/cspace/ScrollTopButton.css"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ 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); }
13
+ 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; }
14
+ /* global window */
15
+
16
+ const messages = (0, _reactIntl.defineMessages)({
17
+ label: {
18
+ "id": "scrollTopButton.label",
19
+ "defaultMessage": "Back to top"
20
+ }
21
+ });
22
+ const scrollTop = () => {
23
+ if (window.scrollTo) {
24
+ window.scrollTo({
25
+ left: 0,
26
+ top: 0
27
+ });
28
+ }
29
+ };
30
+ class ScrollTopButton extends _react.Component {
31
+ constructor() {
32
+ super();
33
+ this.handleScroll = this.handleScroll.bind(this);
34
+ this.state = {
35
+ visible: false
36
+ };
37
+ }
38
+ componentDidMount() {
39
+ window.addEventListener('scroll', this.handleScroll);
40
+ this.setVisibility();
41
+ }
42
+ componentWillUnmount() {
43
+ window.removeEventListener('scroll', this.handleScroll);
44
+ }
45
+ handleScroll() {
46
+ this.setVisibility();
47
+ }
48
+ setVisibility() {
49
+ const {
50
+ visible
51
+ } = this.state;
52
+ const nextVisible = window.document.scrollingElement.scrollTop > 0;
53
+ if (visible !== nextVisible) {
54
+ this.setState({
55
+ visible: nextVisible
56
+ });
57
+ }
58
+ }
59
+ render() {
60
+ const {
61
+ visible
62
+ } = this.state;
63
+ return /*#__PURE__*/_react.default.createElement(_IconButton.default, {
64
+ className: visible ? _ScrollTopButton.default.common : _ScrollTopButton.default.hidden,
65
+ labelMessage: messages.label,
66
+ onClick: scrollTop
67
+ });
68
+ }
69
+ }
70
+ exports.default = ScrollTopButton;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ToggleFilterPanelButton;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _reactIntl = require("react-intl");
10
+ var _IconButton = _interopRequireDefault(require("./IconButton"));
11
+ var _ToggleFilterPanelButton = _interopRequireDefault(require("../../../styles/cspace/ToggleFilterPanelButton.css"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const propTypes = {
14
+ isFilterPanelExpanded: _propTypes.default.bool,
15
+ onClick: _propTypes.default.func.isRequired
16
+ };
17
+ const defaultProps = {
18
+ isFilterPanelExpanded: false
19
+ };
20
+ const messages = (0, _reactIntl.defineMessages)({
21
+ hideLabel: {
22
+ "id": "toggleFilterPanelButton.hide.label",
23
+ "defaultMessage": "Hide filters"
24
+ },
25
+ showLabel: {
26
+ "id": "toggleFilterPanelButton.show.label",
27
+ "defaultMessage": "Show filters"
28
+ }
29
+ });
30
+ function ToggleFilterPanelButton(props) {
31
+ const {
32
+ isFilterPanelExpanded,
33
+ onClick
34
+ } = props;
35
+ return /*#__PURE__*/_react.default.createElement(_IconButton.default, {
36
+ className: isFilterPanelExpanded ? _ToggleFilterPanelButton.default.expanded : _ToggleFilterPanelButton.default.collapsed,
37
+ labelMessage: isFilterPanelExpanded ? messages.hideLabel : messages.showLabel,
38
+ onClick: onClick
39
+ });
40
+ }
41
+ ToggleFilterPanelButton.propTypes = propTypes;
42
+ ToggleFilterPanelButton.defaultProps = defaultProps;