@urbanos/react-discovery-ui 2.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +118 -0
- package/lib/ReactDiscoveryUI.js +103 -0
- package/lib/ReactDiscoveryUI.scss +13 -0
- package/lib/assets/arrow.svg +6 -0
- package/lib/assets/blk-database.svg +48 -0
- package/lib/assets/chart.svg +1 -0
- package/lib/assets/down.png +0 -0
- package/lib/assets/down.svg +1 -0
- package/lib/assets/folder_icon.png +0 -0
- package/lib/assets/folder_icon.svg +1 -0
- package/lib/assets/ic_arrow.svg +15 -0
- package/lib/assets/loadingicon.svg +57 -0
- package/lib/assets/no_image.png +0 -0
- package/lib/assets/plus.png +0 -0
- package/lib/assets/plus.svg +1 -0
- package/lib/assets/user.svg +1 -0
- package/lib/auth/auth0-client-provider.js +37 -0
- package/lib/auth/auth0-client-provider.test.js +33 -0
- package/lib/auth/auth0-wrapper.js +155 -0
- package/lib/auth/auth0-wrapper.test.js +100 -0
- package/lib/components/auth0-login-zone/auth0-login-zone.js +147 -0
- package/lib/components/auth0-login-zone/auth0-login-zone.test.js +177 -0
- package/lib/components/auth0-login-zone/index.js +9 -0
- package/lib/components/code-editor/code-editor.css +173 -0
- package/lib/components/code-editor/code-editor.js +64 -0
- package/lib/components/code-editor/index.js +9 -0
- package/lib/components/collapsable-box/collapsable-box.js +81 -0
- package/lib/components/collapsable-box/collapsable-box.scss +39 -0
- package/lib/components/collapsable-box/collapsable-box.test.js +87 -0
- package/lib/components/collapsable-box/index.js +9 -0
- package/lib/components/data-card/data-card.js +63 -0
- package/lib/components/data-card/data-card.scss +93 -0
- package/lib/components/data-card/data-card.test.js +74 -0
- package/lib/components/data-card/index.js +9 -0
- package/lib/components/data-view/data-view.js +194 -0
- package/lib/components/data-view/data-view.scss +39 -0
- package/lib/components/data-view/data-view.test.js +155 -0
- package/lib/components/data-view/index.js +9 -0
- package/lib/components/dataset-api-doc/api-example.js +120 -0
- package/lib/components/dataset-api-doc/api-example.scss +84 -0
- package/lib/components/dataset-api-doc/api-example.test.js +88 -0
- package/lib/components/dataset-api-doc/dataset-api-doc.js +117 -0
- package/lib/components/dataset-api-doc/dataset-api-doc.scss +8 -0
- package/lib/components/dataset-api-doc/dataset-api-doc.test.js +42 -0
- package/lib/components/dataset-api-doc/index.js +9 -0
- package/lib/components/dataset-details/dataset-details.js +64 -0
- package/lib/components/dataset-details/dataset-details.scss +58 -0
- package/lib/components/dataset-details/dataset-details.test.js +38 -0
- package/lib/components/dataset-details/index.js +9 -0
- package/lib/components/dataset-dictionary/dataset-dictionary.js +127 -0
- package/lib/components/dataset-dictionary/dataset-dictionary.scss +42 -0
- package/lib/components/dataset-dictionary/dataset-dictionary.test.js +286 -0
- package/lib/components/dataset-dictionary/index.js +9 -0
- package/lib/components/dataset-list/dataset-list.js +22 -0
- package/lib/components/dataset-list/dataset-list.scss +9 -0
- package/lib/components/dataset-list/dataset-list.test.js +16 -0
- package/lib/components/dataset-list/index.js +9 -0
- package/lib/components/dataset-metadata/dataset-metadata.js +169 -0
- package/lib/components/dataset-metadata/dataset-metadata.scss +34 -0
- package/lib/components/dataset-metadata/dataset-metadata.test.js +24 -0
- package/lib/components/dataset-metadata/index.js +9 -0
- package/lib/components/dataset-preview/connector.js +26 -0
- package/lib/components/dataset-preview/dataset-preview.js +58 -0
- package/lib/components/dataset-preview/dataset-preview.scss +24 -0
- package/lib/components/dataset-preview/dataset-preview.test.js +34 -0
- package/lib/components/dataset-preview/index.js +9 -0
- package/lib/components/dataset-quality/dataset-quality.js +56 -0
- package/lib/components/dataset-quality/dataset-quality.scss +24 -0
- package/lib/components/dataset-quality/dataset-quality.test.js +34 -0
- package/lib/components/dataset-quality/index.js +9 -0
- package/lib/components/dataset-recommendations/connector.js +24 -0
- package/lib/components/dataset-recommendations/dataset-recommendations.js +47 -0
- package/lib/components/dataset-recommendations/dataset-recommendations.scss +17 -0
- package/lib/components/dataset-recommendations/dataset-recommendations.test.js +37 -0
- package/lib/components/dataset-recommendations/index.js +9 -0
- package/lib/components/detail-toggle-icon/detail-toggle-icon.js +41 -0
- package/lib/components/detail-toggle-icon/detail-toggle-icon.scss +13 -0
- package/lib/components/detail-toggle-icon/detail-toggle-icon.test.js +20 -0
- package/lib/components/detail-toggle-icon/index.js +9 -0
- package/lib/components/facet-list/facet-list.js +47 -0
- package/lib/components/facet-list/facet-list.scss +19 -0
- package/lib/components/facet-list/facet-list.test.js +94 -0
- package/lib/components/facet-list/index.js +9 -0
- package/lib/components/facet-sidebar/facet-sidebar.js +101 -0
- package/lib/components/facet-sidebar/facet-sidebar.scss +129 -0
- package/lib/components/facet-sidebar/facet-sidebar.test.js +93 -0
- package/lib/components/facet-sidebar/index.js +9 -0
- package/lib/components/generic-elements/alert-component/alert-component.js +51 -0
- package/lib/components/generic-elements/alert-component/alert-component.scss +26 -0
- package/lib/components/generic-elements/alert-component/alert-component.test.js +26 -0
- package/lib/components/generic-elements/alert-component/index.js +9 -0
- package/lib/components/generic-elements/arrow-button/arrow-button.js +30 -0
- package/lib/components/generic-elements/arrow-button/index.js +9 -0
- package/lib/components/generic-elements/auto-anchoring-popover/index.js +61 -0
- package/lib/components/generic-elements/back-button/back-button.js +14 -0
- package/lib/components/generic-elements/back-button/back-button.scss +14 -0
- package/lib/components/generic-elements/back-button/index.js +9 -0
- package/lib/components/generic-elements/call-to-action-button/call-to-action-button.js +118 -0
- package/lib/components/generic-elements/call-to-action-button/call-to-action-button.scss +19 -0
- package/lib/components/generic-elements/call-to-action-button/call-to-action-button.test.js +68 -0
- package/lib/components/generic-elements/call-to-action-button/index.js +9 -0
- package/lib/components/generic-elements/chart-icon/index.js +23 -0
- package/lib/components/generic-elements/checkbox/checkbox.js +50 -0
- package/lib/components/generic-elements/checkbox/checkbox.scss +44 -0
- package/lib/components/generic-elements/checkbox/checkbox.test.js +71 -0
- package/lib/components/generic-elements/checkbox/index.js +9 -0
- package/lib/components/generic-elements/error-component/error-component.js +21 -0
- package/lib/components/generic-elements/error-component/error-component.scss +16 -0
- package/lib/components/generic-elements/error-component/error-component.test.js +12 -0
- package/lib/components/generic-elements/error-component/index.js +9 -0
- package/lib/components/generic-elements/folder-icon/index.js +23 -0
- package/lib/components/generic-elements/generated-link/generated-link.js +25 -0
- package/lib/components/generic-elements/generated-link/index.js +13 -0
- package/lib/components/generic-elements/loading-element/index.js +9 -0
- package/lib/components/generic-elements/loading-element/loading-element.js +22 -0
- package/lib/components/generic-elements/loading-element/loading-element.scss +6 -0
- package/lib/components/generic-elements/loading-element/loading-element.test.js +11 -0
- package/lib/components/generic-elements/paginator/index.js +9 -0
- package/lib/components/generic-elements/paginator/paginator.js +84 -0
- package/lib/components/generic-elements/paginator/paginator.scss +38 -0
- package/lib/components/generic-elements/paginator/paginator.test.js +140 -0
- package/lib/components/generic-elements/plus-icon/index.js +21 -0
- package/lib/components/generic-elements/save-indicator/index.js +9 -0
- package/lib/components/generic-elements/save-indicator/save-indicator.js +39 -0
- package/lib/components/generic-elements/save-indicator/save-indicator.scss +31 -0
- package/lib/components/generic-elements/save-indicator/save-indicator.test.js +89 -0
- package/lib/components/generic-elements/search/index.js +9 -0
- package/lib/components/generic-elements/search/search.js +93 -0
- package/lib/components/generic-elements/search/search.scss +90 -0
- package/lib/components/generic-elements/search/search.test.js +41 -0
- package/lib/components/generic-elements/select/index.js +9 -0
- package/lib/components/generic-elements/select/select.js +44 -0
- package/lib/components/generic-elements/select/select.scss +22 -0
- package/lib/components/generic-elements/select/select.test.js +34 -0
- package/lib/components/generic-elements/share-link/index.js +9 -0
- package/lib/components/generic-elements/share-link/share-link.js +23 -0
- package/lib/components/generic-elements/share-link/share-link.scss +17 -0
- package/lib/components/generic-elements/share-link/share-link.test.js +28 -0
- package/lib/components/generic-elements/sql-icon/index.js +20 -0
- package/lib/components/generic-elements/tab-button/index.js +9 -0
- package/lib/components/generic-elements/tab-button/tab-button.js +25 -0
- package/lib/components/generic-elements/tab-button/tab-button.scss +27 -0
- package/lib/components/generic-elements/visualize-button/index.js +9 -0
- package/lib/components/generic-elements/visualize-button/visualize-button.js +37 -0
- package/lib/components/generic-elements/visualize-button/visualize-button.scss +14 -0
- package/lib/components/login-zone/connector.js +25 -0
- package/lib/components/login-zone/index.js +9 -0
- package/lib/components/login-zone/login-svgs-and-text.js +39 -0
- package/lib/components/login-zone/login-zone.js +21 -0
- package/lib/components/login-zone/login-zone.scss +115 -0
- package/lib/components/login-zone/login-zone.test.js +17 -0
- package/lib/components/login-zone/login.js +48 -0
- package/lib/components/login-zone/logout.js +39 -0
- package/lib/components/network-loading-element/connector.js +17 -0
- package/lib/components/network-loading-element/index.js +9 -0
- package/lib/components/network-loading-element/network-loading-element.js +23 -0
- package/lib/components/network-loading-element/network-loading-element.scss +21 -0
- package/lib/components/network-loading-element/network-loading-element.test.js +34 -0
- package/lib/components/organization/index.js +9 -0
- package/lib/components/organization/organization.js +27 -0
- package/lib/components/organization/organization.scss +32 -0
- package/lib/components/protected-route/protected-route.js +101 -0
- package/lib/components/protected-route/protected-route.scss +4 -0
- package/lib/components/protected-route/protected-route.test.js +63 -0
- package/lib/components/query-form/index.js +9 -0
- package/lib/components/query-form/query-form.js +262 -0
- package/lib/components/query-form/query-form.scss +167 -0
- package/lib/components/query-form/query-form.test.js +248 -0
- package/lib/components/recommendation-list/index.js +9 -0
- package/lib/components/recommendation-list/recommendation-list.js +72 -0
- package/lib/components/recommendation-list/recommendation-list.scss +61 -0
- package/lib/components/recommendation-list/recommendation-list.test.js +38 -0
- package/lib/components/remote-toggle/__snapshots__/remote-toggle.test.js.snap +3 -0
- package/lib/components/remote-toggle/index.js +13 -0
- package/lib/components/remote-toggle/remote-toggle.js +35 -0
- package/lib/components/remote-toggle/remote-toggle.scss +0 -0
- package/lib/components/remote-toggle/remote-toggle.test.js +10 -0
- package/lib/components/share/index.js +9 -0
- package/lib/components/share/share.js +109 -0
- package/lib/components/share/share.scss +66 -0
- package/lib/components/streaming-api-doc/index.js +9 -0
- package/lib/components/streaming-api-doc/streaming-api-doc.js +76 -0
- package/lib/components/streaming-api-doc/streaming-api-doc.scss +23 -0
- package/lib/components/streaming-api-doc/streaming-api-doc.test.js +24 -0
- package/lib/components/tooltip/index.js +9 -0
- package/lib/components/tooltip/tooltip.js +17 -0
- package/lib/components/tooltip/tooltip.scss +16 -0
- package/lib/components/tooltip/tooltip.test.js +19 -0
- package/lib/components/visualization-list-menu-item/index.js +9 -0
- package/lib/components/visualization-list-menu-item/visualization-list-menu-item.js +53 -0
- package/lib/components/visualization-list-menu-item/visualization-list-menu-item.scss +21 -0
- package/lib/components/visualization-list-menu-item/visualization-list-menu-item.test.js +42 -0
- package/lib/components/visualization-save-menu-item/index.js +9 -0
- package/lib/components/visualization-save-menu-item/visualization-save-menu-item.js +101 -0
- package/lib/components/visualization-save-menu-item/visualization-save-menu-item.scss +37 -0
- package/lib/components/visualization-save-menu-item/visualization-save-menu-item.test.js +185 -0
- package/lib/components/visualizations/geojson/connector.js +29 -0
- package/lib/components/visualizations/geojson/geojson-visualization.js +151 -0
- package/lib/components/visualizations/geojson/geojson-visualization.scss +24 -0
- package/lib/components/visualizations/geojson/geojson-visualization.test.js +238 -0
- package/lib/components/visualizations/geojson/index.js +9 -0
- package/lib/pages/apikey-view/apiKey-view.test.js +204 -0
- package/lib/pages/apikey-view/apikey-view.js +166 -0
- package/lib/pages/apikey-view/apikey-view.scss +340 -0
- package/lib/pages/apikey-view/connector.js +31 -0
- package/lib/pages/apikey-view/index.js +9 -0
- package/lib/pages/chart-view/chart-view.js +92 -0
- package/lib/pages/chart-view/chart-view.scss +35 -0
- package/lib/pages/chart-view/chart-view.test.js +206 -0
- package/lib/pages/chart-view/connector.js +30 -0
- package/lib/pages/chart-view/index.js +9 -0
- package/lib/pages/dataset-detail-view/connector.js +38 -0
- package/lib/pages/dataset-detail-view/dataset-detail-view-connector.test.js +42 -0
- package/lib/pages/dataset-detail-view/dataset-detail-view.js +99 -0
- package/lib/pages/dataset-detail-view/dataset-detail-view.scss +190 -0
- package/lib/pages/dataset-detail-view/dataset-detail-view.test.js +305 -0
- package/lib/pages/dataset-detail-view/index.js +9 -0
- package/lib/pages/dataset-list-view/connector.js +30 -0
- package/lib/pages/dataset-list-view/dataset-list-view.js +132 -0
- package/lib/pages/dataset-list-view/dataset-list-view.scss +242 -0
- package/lib/pages/dataset-list-view/dataset-list-view.test.js +162 -0
- package/lib/pages/dataset-list-view/index.js +9 -0
- package/lib/pages/dataset-view/connector.js +55 -0
- package/lib/pages/dataset-view/dataset-view-connector.test.js +78 -0
- package/lib/pages/dataset-view/dataset-view.js +175 -0
- package/lib/pages/dataset-view/dataset-view.scss +95 -0
- package/lib/pages/dataset-view/dataset-view.test.js +157 -0
- package/lib/pages/dataset-view/index.js +9 -0
- package/lib/pages/login-view/connector.js +25 -0
- package/lib/pages/login-view/index.js +9 -0
- package/lib/pages/login-view/login-view.js +83 -0
- package/lib/pages/login-view/login-view.scss +62 -0
- package/lib/pages/login-view/login-view.test.js +23 -0
- package/lib/pages/oauth-error-view/index.js +9 -0
- package/lib/pages/oauth-error-view/oauth-error-view.js +25 -0
- package/lib/pages/oauth-error-view/oauth-error-view.scss +13 -0
- package/lib/pages/oauth-error-view/oauth-error-view.test.js +13 -0
- package/lib/pages/oauth-view/connector.js +22 -0
- package/lib/pages/oauth-view/index.js +9 -0
- package/lib/pages/oauth-view/oauth-view.js +124 -0
- package/lib/pages/oauth-view/oauth-view.scss +7 -0
- package/lib/pages/oauth-view/oauth-view.test.js +195 -0
- package/lib/pages/query-view/connector.js +40 -0
- package/lib/pages/query-view/index.js +9 -0
- package/lib/pages/query-view/query-view.js +80 -0
- package/lib/pages/query-view/query-view.scss +39 -0
- package/lib/pages/query-view/query-view.test.js +104 -0
- package/lib/pages/user-profile-view/connector.js +39 -0
- package/lib/pages/user-profile-view/index.js +9 -0
- package/lib/pages/user-profile-view/user-profile-view.js +154 -0
- package/lib/pages/user-profile-view/user-profile-view.scss +81 -0
- package/lib/pages/user-profile-view/user-profile-view.test.js +129 -0
- package/lib/pages/visualization-view/connector.js +52 -0
- package/lib/pages/visualization-view/index.js +9 -0
- package/lib/pages/visualization-view/visualization-view-connector.test.js +62 -0
- package/lib/pages/visualization-view/visualization-view.js +128 -0
- package/lib/pages/visualization-view/visualization-view.scss +115 -0
- package/lib/pages/visualization-view/visualization-view.test.js +188 -0
- package/lib/routes.js +18 -0
- package/lib/search-params/search-params-manager.js +171 -0
- package/lib/search-params/search-params-manager.test.js +490 -0
- package/lib/store/actions.js +428 -0
- package/lib/store/dataset-selectors.js +47 -0
- package/lib/store/dataset-selectors.test.js +154 -0
- package/lib/store/query-selectors.js +53 -0
- package/lib/store/query-selectors.test.js +153 -0
- package/lib/store/reducers/index.js +20 -0
- package/lib/store/reducers/query-reducer.js +52 -0
- package/lib/store/reducers/query-reducer.test.js +89 -0
- package/lib/store/reducers/reducers.js +196 -0
- package/lib/store/reducers/reducers.test.js +309 -0
- package/lib/store/reducers/visualization-reducer.js +167 -0
- package/lib/store/reducers/visualization-reducer.test.js +426 -0
- package/lib/store/sagas/api-invoker.js +79 -0
- package/lib/store/sagas/api-invoker.test.js +139 -0
- package/lib/store/sagas/apiKey-saga.js +81 -0
- package/lib/store/sagas/apiKey-saga.test.js +57 -0
- package/lib/store/sagas/dataset-download-saga.js +43 -0
- package/lib/store/sagas/dataset-list-saga.js +49 -0
- package/lib/store/sagas/dataset-list-saga.test.js +72 -0
- package/lib/store/sagas/dataset-preview-saga.js +44 -0
- package/lib/store/sagas/dataset-query-saga.js +43 -0
- package/lib/store/sagas/dataset-recommendation-saga.js +40 -0
- package/lib/store/sagas/dataset-saga.js +50 -0
- package/lib/store/sagas/freestyle-query-saga.js +127 -0
- package/lib/store/sagas/freestyle-query-saga.test.js +145 -0
- package/lib/store/sagas/index.js +44 -0
- package/lib/store/sagas/login-saga.js +85 -0
- package/lib/store/sagas/login-saga.test.js +84 -0
- package/lib/store/sagas/logout-saga.js +96 -0
- package/lib/store/sagas/oauth-saga.js +78 -0
- package/lib/store/sagas/oauth-saga.test.js +51 -0
- package/lib/store/sagas/process-login-saga.js +62 -0
- package/lib/store/sagas/process-login-saga.test.js +83 -0
- package/lib/store/sagas/visualization-saga.js +371 -0
- package/lib/store/sagas/visualization-saga.test.js +388 -0
- package/lib/store/selectors.js +83 -0
- package/lib/store/visualization-selectors.js +85 -0
- package/lib/store/visualization-selectors.test.js +195 -0
- package/lib/styles/mixins.scss +117 -0
- package/lib/styles/variables.scss +41 -0
- package/lib/utils/file-type-utils.js +18 -0
- package/lib/utils/file-type-utils.test.js +29 -0
- package/lib/utils/geojson-utils.js +70 -0
- package/lib/utils/geojson-utils.test.js +129 -0
- package/lib/utils/http-clients.js +218 -0
- package/lib/utils/http-clients.test.js +88 -0
- package/lib/utils/index.js +34 -0
- package/lib/utils/modified-date-string-builder.js +29 -0
- package/lib/utils/modified-date-string-builder.test.js +93 -0
- package/lib/utils/query-string-builder.js +38 -0
- package/lib/utils/query-string-builder.test.js +33 -0
- package/lib/utils/recommendation-utils.js +12 -0
- package/lib/utils/recommendation-utils.test.js +9 -0
- package/package.json +172 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.CallToActionButton = CallToActionButton;
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
require("./call-to-action-button.scss");
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _reactModal = _interopRequireDefault(require("react-modal"));
|
|
12
|
+
var _httpClients = require("../../../utils/http-clients");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
function _regeneratorRuntime() { "use strict"; var r = _regenerator(), e = r.m(_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { throw: 1, return: 2, break: 3, continue: 3 }; function a(r) { var e, t; return function (n) { e || (e = { stop: function stop() { return t(n.a, 2); }, catch: function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, _regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new _OverloadYield(r, e); }, AsyncIterator: _regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u); }, keys: _regeneratorKeys, values: _regeneratorValues }; })(); }
|
|
15
|
+
function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); }
|
|
16
|
+
function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
|
|
17
|
+
function _regeneratorAsync(n, e, r, t, o) { var a = _regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function (n) { return n.done ? n.value : a.next(); }); }
|
|
18
|
+
function _regeneratorAsyncGen(r, e, t, o, n) { return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise); }
|
|
19
|
+
function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) { n("next", t, i, f); }, function (t) { n("throw", t, i, f); }) : e.resolve(u).then(function (t) { c.value = t, i(c); }, function (t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (_regeneratorDefine2(_regeneratorAsyncIterator.prototype), _regeneratorDefine2(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { return this; })), _regeneratorDefine2(this, "_invoke", function (t, o, i) { function f() { return new e(function (e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); }
|
|
20
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
21
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
22
|
+
function _OverloadYield(e, d) { this.v = e, this.k = d; }
|
|
23
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
24
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
25
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
26
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
27
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
28
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
29
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
30
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
31
|
+
var customStyles = {
|
|
32
|
+
content: {
|
|
33
|
+
top: '50%',
|
|
34
|
+
left: '50%',
|
|
35
|
+
right: 'auto',
|
|
36
|
+
bottom: 'auto',
|
|
37
|
+
marginRight: '-50%',
|
|
38
|
+
transform: 'translate(-50%, -50%)'
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
function CallToActionButton(_ref) {
|
|
42
|
+
var url = _ref.url,
|
|
43
|
+
format = _ref.format,
|
|
44
|
+
sourceType = _ref.sourceType,
|
|
45
|
+
sourceUrl = _ref.sourceUrl;
|
|
46
|
+
var _useState = (0, _react.useState)(false),
|
|
47
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
48
|
+
modalIsOpen = _useState2[0],
|
|
49
|
+
setIsOpen = _useState2[1];
|
|
50
|
+
var isRemote = sourceType && sourceType == 'remote';
|
|
51
|
+
_reactModal.default.setAppElement('*');
|
|
52
|
+
var openModal = function openModal() {
|
|
53
|
+
setIsOpen(true);
|
|
54
|
+
};
|
|
55
|
+
var closeModal = function closeModal() {
|
|
56
|
+
setIsOpen(false);
|
|
57
|
+
};
|
|
58
|
+
var handleAction = /*#__PURE__*/function () {
|
|
59
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
60
|
+
var result, downloadUrl;
|
|
61
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
62
|
+
while (1) switch (_context.prev = _context.next) {
|
|
63
|
+
case 0:
|
|
64
|
+
if (!isRemote) {
|
|
65
|
+
_context.next = 4;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
openModal();
|
|
69
|
+
_context.next = 9;
|
|
70
|
+
break;
|
|
71
|
+
case 4:
|
|
72
|
+
_context.next = 6;
|
|
73
|
+
return _httpClients.AuthenticatedHTTPClient.get(url);
|
|
74
|
+
case 6:
|
|
75
|
+
result = _context.sent;
|
|
76
|
+
downloadUrl = result.data + '&_format=' + format;
|
|
77
|
+
window.open(downloadUrl);
|
|
78
|
+
case 9:
|
|
79
|
+
case "end":
|
|
80
|
+
return _context.stop();
|
|
81
|
+
}
|
|
82
|
+
}, _callee);
|
|
83
|
+
}));
|
|
84
|
+
return function handleAction() {
|
|
85
|
+
return _ref2.apply(this, arguments);
|
|
86
|
+
};
|
|
87
|
+
}();
|
|
88
|
+
var callToActionText = function callToActionText() {
|
|
89
|
+
if (isRemote) {
|
|
90
|
+
return 'Open Dataset';
|
|
91
|
+
} else {
|
|
92
|
+
return 'Download';
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
var navigateToSourceUrl = function navigateToSourceUrl() {
|
|
96
|
+
window.open(sourceUrl);
|
|
97
|
+
closeModal();
|
|
98
|
+
};
|
|
99
|
+
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_reactModal.default, {
|
|
100
|
+
isOpen: modalIsOpen,
|
|
101
|
+
style: customStyles,
|
|
102
|
+
contentLabel: "Call To Action Modal"
|
|
103
|
+
}, /*#__PURE__*/React.createElement("p", null, "By clicking continue, you will open or download", /*#__PURE__*/React.createElement("br", null), " this dataset from an external website."), /*#__PURE__*/React.createElement("div", {
|
|
104
|
+
className: "modal-button-group"
|
|
105
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
106
|
+
className: "modal-cancel modal-button",
|
|
107
|
+
onClick: closeModal
|
|
108
|
+
}, "Cancel"), /*#__PURE__*/React.createElement("button", {
|
|
109
|
+
className: "modal-confirm modal-button",
|
|
110
|
+
onClick: navigateToSourceUrl
|
|
111
|
+
}, "Continue"))), /*#__PURE__*/React.createElement("button", {
|
|
112
|
+
onClick: handleAction,
|
|
113
|
+
rel: "noopener noreferrer",
|
|
114
|
+
"data-testid": "call-to-action-button",
|
|
115
|
+
className: "call-to-action-button primary-background-color"
|
|
116
|
+
}, callToActionText()));
|
|
117
|
+
}
|
|
118
|
+
var _default = exports.default = CallToActionButton;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
@import '../../../styles/variables.scss';
|
|
2
|
+
@import '../../../styles/mixins.scss';
|
|
3
|
+
|
|
4
|
+
.call-to-action-button {
|
|
5
|
+
@include button();
|
|
6
|
+
display: inline-block;
|
|
7
|
+
padding: 1.0rem;
|
|
8
|
+
width: auto;
|
|
9
|
+
color: white;
|
|
10
|
+
letter-spacing: 0.05rem;
|
|
11
|
+
margin: 1rem 1rem 1rem 0.5rem;
|
|
12
|
+
align-self: flex-end;
|
|
13
|
+
float: right;
|
|
14
|
+
line-height: 150%;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.call-to-action-container {
|
|
18
|
+
display: inline-block;
|
|
19
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { shallow } from 'enzyme'
|
|
2
|
+
import CallToActionButton from './call-to-action-button'
|
|
3
|
+
import Modal from 'react-modal'
|
|
4
|
+
import { AuthenticatedHTTPClient } from '../../../utils/http-clients'
|
|
5
|
+
|
|
6
|
+
describe('call-to-action-button', () => {
|
|
7
|
+
const createCallToActionButton = (extraProps = {}) => {
|
|
8
|
+
return shallow(
|
|
9
|
+
<CallToActionButton {...extraProps} />
|
|
10
|
+
)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
window.open = jest.fn()
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
jest.restoreAllMocks()
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
test('it calls window.open onClick', done => {
|
|
22
|
+
AuthenticatedHTTPClient.get = jest.fn()
|
|
23
|
+
const presignedUrl = 'http://test.example.com/api/v1/presigned/url?key=123'
|
|
24
|
+
AuthenticatedHTTPClient.get.mockImplementationOnce(() => ({
|
|
25
|
+
status: 200,
|
|
26
|
+
data: presignedUrl
|
|
27
|
+
}))
|
|
28
|
+
const subject = createCallToActionButton({ url: 'abc', format: 'csv', filename: 'dataset.csv' })
|
|
29
|
+
|
|
30
|
+
subject.find('.call-to-action-button').simulate('click')
|
|
31
|
+
|
|
32
|
+
const expectedUrl = presignedUrl + '&_format=csv'
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
expect(window.open).toBeCalledWith(expectedUrl)
|
|
35
|
+
done()
|
|
36
|
+
}, 100)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
test('call to action is dependent on dataset sourceType', () => {
|
|
40
|
+
let subject = createCallToActionButton({ url: 'abc', format: 'csv', filename: 'dataset.csv' })
|
|
41
|
+
|
|
42
|
+
expect(subject.text().includes('Download')).toBe(true)
|
|
43
|
+
|
|
44
|
+
subject = createCallToActionButton({ url: 'abc', format: 'csv', filename: 'dataset.csv', sourceType: 'remote', sourceUrl: 'https://www.google.com/' })
|
|
45
|
+
|
|
46
|
+
expect(subject.text().includes('Open Dataset')).toBe(true)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
test('Clicking the Call to Action Button for remote datasets opens dialog', () => {
|
|
50
|
+
const subject = createCallToActionButton({ url: 'abc', format: 'csv', filename: 'dataset.csv', sourceType: 'remote', sourceUrl: 'https://www.google.com/' })
|
|
51
|
+
|
|
52
|
+
subject.find('.call-to-action-button').simulate('click')
|
|
53
|
+
|
|
54
|
+
expect(subject.find(Modal).props().isOpen).toBe(true)
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
test('clicking continues opens a new window with the sourceUrl', () => {
|
|
58
|
+
global.open = jest.fn()
|
|
59
|
+
|
|
60
|
+
const subject = createCallToActionButton({ url: 'abc', format: 'csv', filename: 'dataset.csv', sourceType: 'remote', sourceUrl: 'https://www.google.com/' })
|
|
61
|
+
|
|
62
|
+
subject.find('.call-to-action-button').simulate('click')
|
|
63
|
+
|
|
64
|
+
subject.find('.modal-confirm').simulate('click')
|
|
65
|
+
|
|
66
|
+
expect(global.open).toBeCalled()
|
|
67
|
+
})
|
|
68
|
+
})
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _callToActionButton = _interopRequireDefault(require("./call-to-action-button"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = _callToActionButton.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 _reactSvgInline = _interopRequireDefault(require("react-svg-inline"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var chartSVG = "<svg id=\"chartSVG-Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 65.5 28\"><path d=\"M0 17.5h13V28H0zM17.5 0h13v28h-13zM35 12.5h13V28H35zM52.5 5h13v23h-13z\"/></svg>";
|
|
10
|
+
var _default = exports.default = function _default(_ref) {
|
|
11
|
+
var className = _ref.className;
|
|
12
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
13
|
+
className: className
|
|
14
|
+
}, /*#__PURE__*/React.createElement(_reactSvgInline.default, {
|
|
15
|
+
style: {
|
|
16
|
+
marginLeft: '.3rem'
|
|
17
|
+
},
|
|
18
|
+
svg: chartSVG,
|
|
19
|
+
height: "14px",
|
|
20
|
+
width: "25px",
|
|
21
|
+
accessibilityDesc: "Chart"
|
|
22
|
+
}));
|
|
23
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
require("./checkbox.scss");
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
var Checkbox = function Checkbox(props) {
|
|
11
|
+
var keyHandler = function keyHandler(e) {
|
|
12
|
+
var SPACEBAR = 32;
|
|
13
|
+
if (e.keyCode === SPACEBAR) {
|
|
14
|
+
handleClick();
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var handleClick = function handleClick() {
|
|
19
|
+
if (!props.disabled) {
|
|
20
|
+
props.clickHandler();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
24
|
+
id: props.id,
|
|
25
|
+
className: "checkbox ".concat(props.disabled ? 'disabled' : '', " ").concat(props.selected ? 'selected' : ''),
|
|
26
|
+
role: "button",
|
|
27
|
+
tabIndex: "0",
|
|
28
|
+
key: name,
|
|
29
|
+
onClick: function onClick() {
|
|
30
|
+
return handleClick();
|
|
31
|
+
},
|
|
32
|
+
onKeyDown: function onKeyDown(e) {
|
|
33
|
+
return keyHandler(e);
|
|
34
|
+
}
|
|
35
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
36
|
+
"data-testid": "checkbox-indicator-".concat(props.text),
|
|
37
|
+
className: "checkbox-indicator ".concat(props.selected ? 'selected' : '')
|
|
38
|
+
}, props.selected && /*#__PURE__*/React.createElement("div", {
|
|
39
|
+
className: "checkmark"
|
|
40
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
41
|
+
className: "checkbox-label wrapped-text"
|
|
42
|
+
}, props.text));
|
|
43
|
+
};
|
|
44
|
+
Checkbox.propTypes = {
|
|
45
|
+
clickHandler: _propTypes.default.func.isRequired,
|
|
46
|
+
text: _propTypes.default.string.isRequired,
|
|
47
|
+
selected: _propTypes.default.bool.isRequired,
|
|
48
|
+
disabled: _propTypes.default.bool
|
|
49
|
+
};
|
|
50
|
+
var _default = exports.default = Checkbox;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
@import '../../../styles/variables.scss';
|
|
2
|
+
@import '../../../styles/mixins.scss';
|
|
3
|
+
|
|
4
|
+
.checkbox {
|
|
5
|
+
margin: .5rem 0;
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.disabled {
|
|
12
|
+
color: $light-grey;
|
|
13
|
+
border-color: $light-grey;
|
|
14
|
+
cursor: not-allowed;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.checkbox-indicator {
|
|
18
|
+
border-width: 1px;
|
|
19
|
+
border-style: solid;
|
|
20
|
+
|
|
21
|
+
width: 1.25rem;
|
|
22
|
+
height: 1.25rem;
|
|
23
|
+
margin-left: 0.25rem;
|
|
24
|
+
display: flex;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
|
|
27
|
+
&.selected {
|
|
28
|
+
background-color: $light-blue;
|
|
29
|
+
border-color: $light-blue;
|
|
30
|
+
}
|
|
31
|
+
.checkmark {
|
|
32
|
+
transform: rotate(45deg);
|
|
33
|
+
height: 0.75rem;
|
|
34
|
+
width: 0.35rem;
|
|
35
|
+
border-bottom: 2px solid white;
|
|
36
|
+
border-right: 2px solid white;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.checkbox-label {
|
|
41
|
+
margin: 0 0.75rem;
|
|
42
|
+
line-height: 1.2rem;
|
|
43
|
+
width: 80%;
|
|
44
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { shallow } from 'enzyme'
|
|
2
|
+
import Checkbox from './checkbox'
|
|
3
|
+
|
|
4
|
+
describe('checkbox', () => {
|
|
5
|
+
let subject
|
|
6
|
+
let mockClickHandler
|
|
7
|
+
let mockPreventDefault
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
mockClickHandler = jest.fn()
|
|
11
|
+
mockPreventDefault = jest.fn()
|
|
12
|
+
|
|
13
|
+
subject = shallow(
|
|
14
|
+
<Checkbox
|
|
15
|
+
clickHandler={mockClickHandler}
|
|
16
|
+
text='The label'
|
|
17
|
+
selected
|
|
18
|
+
/>
|
|
19
|
+
)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('calls clickHandler on click', () => {
|
|
23
|
+
subject.simulate('click')
|
|
24
|
+
expect(mockClickHandler).toHaveBeenCalled()
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
test('calls clickHandler on spacebar', () => {
|
|
28
|
+
subject.simulate('keyDown', { keyCode: 32, preventDefault: mockPreventDefault })
|
|
29
|
+
expect(mockClickHandler).toHaveBeenCalled()
|
|
30
|
+
expect(mockPreventDefault).toHaveBeenCalled()
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
test('does not call clickHandler on non-spacebar', () => {
|
|
34
|
+
subject.simulate('keyDown', { keyCode: 348, preventDefault: mockPreventDefault })
|
|
35
|
+
expect(mockClickHandler).not.toHaveBeenCalled()
|
|
36
|
+
expect(mockPreventDefault).not.toHaveBeenCalled()
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
test('displays checkmark when selected', () => {
|
|
40
|
+
expect(subject.exists('.selected')).toBeTruthy()
|
|
41
|
+
expect(subject.exists('.checkmark')).toBeTruthy()
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
test('does not display checkmark when not selected', () => {
|
|
45
|
+
subject = shallow(
|
|
46
|
+
<Checkbox
|
|
47
|
+
clickHandler={mockClickHandler}
|
|
48
|
+
text='The label'
|
|
49
|
+
selected={false}
|
|
50
|
+
/>
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
expect(subject.exists('.selected')).toBeFalsy()
|
|
54
|
+
expect(subject.exists('.checkmark')).toBeFalsy()
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
test('is not clickable when disabled', () => {
|
|
58
|
+
subject = shallow(
|
|
59
|
+
<Checkbox
|
|
60
|
+
clickHandler={mockClickHandler}
|
|
61
|
+
text='The Label'
|
|
62
|
+
selected={false}
|
|
63
|
+
disabled
|
|
64
|
+
/>
|
|
65
|
+
)
|
|
66
|
+
subject.simulate('click')
|
|
67
|
+
|
|
68
|
+
expect(subject.exists('.disabled')).toBeTruthy()
|
|
69
|
+
expect(mockPreventDefault).not.toHaveBeenCalled()
|
|
70
|
+
})
|
|
71
|
+
})
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _checkbox = _interopRequireDefault(require("./checkbox"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = _checkbox.default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
require("./error-component.scss");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _ErrorOutline = _interopRequireDefault(require("@material-ui/icons/ErrorOutline"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
var ErrorComponent = function ErrorComponent(props) {
|
|
12
|
+
return /*#__PURE__*/_react.default.createElement("error-component", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
13
|
+
className: "error-container"
|
|
14
|
+
}, /*#__PURE__*/_react.default.createElement(_ErrorOutline.default, {
|
|
15
|
+
className: "error-icon"
|
|
16
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
17
|
+
"data-testid": "error-text",
|
|
18
|
+
className: "error-text"
|
|
19
|
+
}, props.errorText)));
|
|
20
|
+
};
|
|
21
|
+
var _default = exports.default = ErrorComponent;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
@import '../../../styles/variables.scss';
|
|
2
|
+
@import '../../../styles/mixins.scss';
|
|
3
|
+
|
|
4
|
+
error-component {
|
|
5
|
+
@include custom-element();
|
|
6
|
+
align-self: center;
|
|
7
|
+
|
|
8
|
+
.error-container {
|
|
9
|
+
color: $error-color;
|
|
10
|
+
padding: 5rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.error-icon {
|
|
14
|
+
font-size: 3rem;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { shallow } from 'enzyme'
|
|
2
|
+
import ErrorComponent from './error-component'
|
|
3
|
+
|
|
4
|
+
describe('data card element', () => {
|
|
5
|
+
let subject, fakeText
|
|
6
|
+
|
|
7
|
+
test('card to render text based on props', () => {
|
|
8
|
+
fakeText = 'help there is an error and its your fault'
|
|
9
|
+
subject = shallow(<ErrorComponent errorText={fakeText} />)
|
|
10
|
+
expect(subject.find('.error-text').text()).toEqual(fakeText)
|
|
11
|
+
})
|
|
12
|
+
})
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _errorComponent = _interopRequireDefault(require("./error-component"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = _errorComponent.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 _reactSvgInline = _interopRequireDefault(require("react-svg-inline"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var folderSVG = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><path d=\"M90 50H30L10 80h60z\"/><path d=\"M70 40V30H50L40 20H10v40l13.333-20z\"/></svg>";
|
|
10
|
+
var _default = exports.default = function _default(_ref) {
|
|
11
|
+
var className = _ref.className,
|
|
12
|
+
_ref$accessibilityDes = _ref.accessibilityDesc,
|
|
13
|
+
accessibilityDesc = _ref$accessibilityDes === void 0 ? "Folder Icon" : _ref$accessibilityDes;
|
|
14
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
15
|
+
className: className
|
|
16
|
+
}, /*#__PURE__*/React.createElement(_reactSvgInline.default, {
|
|
17
|
+
className: "folder-icon",
|
|
18
|
+
svg: folderSVG,
|
|
19
|
+
height: "1.6rem",
|
|
20
|
+
width: "1.6rem",
|
|
21
|
+
accessibilityDesc: accessibilityDesc
|
|
22
|
+
}));
|
|
23
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactRouter = require("react-router");
|
|
8
|
+
var _reactRouterDom = require("react-router-dom");
|
|
9
|
+
var _qs = _interopRequireDefault(require("qs"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
var GeneratedLink = function GeneratedLink(_ref) {
|
|
12
|
+
var path = _ref.path,
|
|
13
|
+
params = _ref.params,
|
|
14
|
+
queryStringParams = _ref.queryStringParams,
|
|
15
|
+
className = _ref.className,
|
|
16
|
+
children = _ref.children;
|
|
17
|
+
var to = (0, _reactRouter.generatePath)(path, params) + _qs.default.stringify(queryStringParams, {
|
|
18
|
+
addQueryPrefix: true
|
|
19
|
+
});
|
|
20
|
+
return /*#__PURE__*/React.createElement(_reactRouterDom.Link, {
|
|
21
|
+
className: className,
|
|
22
|
+
to: to
|
|
23
|
+
}, children);
|
|
24
|
+
};
|
|
25
|
+
var _default = exports.default = GeneratedLink;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "GeneratedLink", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _generatedLink.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _generatedLink = _interopRequireDefault(require("./generated-link"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _loadingElement = _interopRequireDefault(require("./loading-element"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = _loadingElement.default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
require("./loading-element.scss");
|
|
8
|
+
var _reactSvgInline = _interopRequireDefault(require("react-svg-inline"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
var loadingIcon = "<svg class=\"lds-spin\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\" style=\"background:0 0\"><g transform=\"translate(80 50)\"><circle r=\"10\" fill=\"#28292f\" transform=\"scale(1.01177)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"-0.875s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"-0.875s\"/></circle></g><g transform=\"rotate(45 -50.355 121.569)\"><circle r=\"10\" fill=\"#28292f\" fill-opacity=\".875\" transform=\"scale(1.02427)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"-0.75s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"-0.75s\"/></circle></g><g transform=\"rotate(90 -15 65)\"><circle r=\"10\" fill=\"#28292f\" fill-opacity=\".75\" transform=\"scale(1.03677)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"-0.625s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"-0.625s\"/></circle></g><g transform=\"rotate(135 -.355 41.569)\"><circle r=\"10\" fill=\"#28292f\" fill-opacity=\".625\" transform=\"scale(1.04927)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"-0.5s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"-0.5s\"/></circle></g><g transform=\"rotate(180 10 25)\"><circle r=\"10\" fill=\"#28292f\" fill-opacity=\".5\" transform=\"scale(1.06177)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"-0.375s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"-0.375s\"/></circle></g><g transform=\"rotate(-135 20.355 8.431)\"><circle r=\"10\" fill=\"#28292f\" fill-opacity=\".375\" transform=\"scale(1.07427)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"-0.25s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"-0.25s\"/></circle></g><g transform=\"rotate(-90 35 -15)\"><circle r=\"10\" fill=\"#28292f\" fill-opacity=\".25\" transform=\"scale(1.08677)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"-0.125s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"-0.125s\"/></circle></g><g transform=\"rotate(-45 70.355 -71.569)\"><circle r=\"10\" fill=\"#28292f\" fill-opacity=\".125\" transform=\"scale(1.09927)\"><animateTransform attributeName=\"transform\" type=\"scale\" begin=\"0s\" values=\"1.1 1.1;1 1\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" keyTimes=\"0;1\" dur=\"1s\" repeatCount=\"indefinite\" values=\"1;0\" begin=\"0s\"/></circle></g></svg>";
|
|
11
|
+
var LoadingElement = function LoadingElement(_ref) {
|
|
12
|
+
var _ref$className = _ref.className,
|
|
13
|
+
className = _ref$className === void 0 ? '' : _ref$className;
|
|
14
|
+
return /*#__PURE__*/React.createElement("loading-element", {
|
|
15
|
+
class: "loading-container ".concat(className),
|
|
16
|
+
"data-testid": "loading-spinner"
|
|
17
|
+
}, /*#__PURE__*/React.createElement(_reactSvgInline.default, {
|
|
18
|
+
svg: loadingIcon,
|
|
19
|
+
accessibilityDesc: "Loading..."
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
var _default = exports.default = LoadingElement;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { shallow } from 'enzyme'
|
|
2
|
+
import LoadingElement from './loading-element'
|
|
3
|
+
|
|
4
|
+
describe('data card element', () => {
|
|
5
|
+
let subject
|
|
6
|
+
|
|
7
|
+
test('card to render text based on props', () => {
|
|
8
|
+
subject = shallow(<LoadingElement />)
|
|
9
|
+
expect(subject.find('loading-element').length).toEqual(1)
|
|
10
|
+
})
|
|
11
|
+
})
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _paginator = _interopRequireDefault(require("./paginator"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = _paginator.default;
|