@itwin/one-click-lca-react 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/ExportModal.js +93 -54
- package/lib/cjs/components/ExportModal.js.map +1 -1
- package/lib/cjs/components/ExportModal.scss +14 -16
- package/lib/cjs/components/OneClickLCA.js +7 -2
- package/lib/cjs/components/OneClickLCA.js.map +1 -1
- package/lib/cjs/components/Reports.js +49 -21
- package/lib/cjs/components/Reports.js.map +1 -1
- package/lib/cjs/components/Reports.scss +3 -5
- package/lib/cjs/components/utils.d.ts +1 -1
- package/lib/cjs/components/utils.js +12 -6
- package/lib/cjs/components/utils.js.map +1 -1
- package/lib/cjs/components/utils.scss +4 -12
- package/lib/cjs/one-click-lca-widget.js +8 -4
- package/lib/cjs/one-click-lca-widget.js.map +1 -1
- package/lib/cjs/test/ExportModal.test.js +9 -5
- package/lib/cjs/test/ExportModal.test.js.map +1 -1
- package/lib/cjs/test/WidgetHeader.test.js +20 -16
- package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
- package/lib/cjs/widgets/OneClickLCAWidget.d.ts +3 -3
- package/lib/cjs/widgets/OneClickLCAWidget.js +4 -8
- package/lib/cjs/widgets/OneClickLCAWidget.js.map +1 -1
- package/lib/esm/components/ExportModal.js +47 -31
- package/lib/esm/components/ExportModal.js.map +1 -1
- package/lib/esm/components/ExportModal.scss +14 -16
- package/lib/esm/components/OneClickLCA.js +7 -2
- package/lib/esm/components/OneClickLCA.js.map +1 -1
- package/lib/esm/components/Reports.js +16 -11
- package/lib/esm/components/Reports.js.map +1 -1
- package/lib/esm/components/Reports.scss +3 -5
- package/lib/esm/components/utils.d.ts +1 -1
- package/lib/esm/components/utils.js +9 -6
- package/lib/esm/components/utils.js.map +1 -1
- package/lib/esm/components/utils.scss +4 -12
- package/lib/esm/one-click-lca-widget.js +3 -3
- package/lib/esm/one-click-lca-widget.js.map +1 -1
- package/lib/esm/test/ExportModal.test.js +6 -2
- package/lib/esm/test/ExportModal.test.js.map +1 -1
- package/lib/esm/test/WidgetHeader.test.js +14 -13
- package/lib/esm/test/WidgetHeader.test.js.map +1 -1
- package/lib/esm/widgets/OneClickLCAWidget.d.ts +3 -3
- package/lib/esm/widgets/OneClickLCAWidget.js +4 -8
- package/lib/esm/widgets/OneClickLCAWidget.js.map +1 -1
- package/package.json +54 -49
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reports.js","sourceRoot":"","sources":["../../../src/components/Reports.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Reports.js","sourceRoot":"","sources":["../../../src/components/Reports.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { SearchBox } from \"@itwin/core-react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { Button, Table, toaster } from \"@itwin/itwinui-react\";\nimport type { Report } from \"@itwin/insights-client\";\nimport { ReportsClient } from \"@itwin/insights-client\";\nimport { WidgetHeader } from \"./utils\";\nimport ExportModal from \"./ExportModal\";\nimport \"./Reports.scss\";\n\ntype CreateTypeFromInterface<Interface> = {\n [Property in keyof Interface]: Interface[Property];\n};\n\ntype Reporting = CreateTypeFromInterface<Report>;\n\nconst Reports = () => {\n const projectId = useActiveIModelConnection()?.iTwinId as string;\n const reportsClientApi = useMemo(() => new ReportsClient(), []);\n\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [reports, setReports] = useState<Report[]>([]);\n const [buttonIsDisabled, disableButton] = useState<boolean>(true);\n const [filteredReports, setFilteredReports] = useState<Report[]>(reports);\n const [selectedReport, setSelectedReport] = useState<Reporting>();\n\n const [modalIsOpen, openModal] = useState(false);\n\n const reportsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"displayName\",\n Header: \"Name\",\n accessor: \"displayName\",\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n ],\n },\n ],\n [],\n );\n\n const onSearchBoxValueChanged = async (value: string) => {\n disableButton(true);\n const filterReports = reports.filter((x) => x.displayName && x.displayName.toLowerCase().indexOf(value.toLowerCase()) > -1);\n setFilteredReports(filterReports);\n };\n\n const tableStateSingleSelectReducer = (newState: any, action: any): any => {\n switch (action.type) {\n case \"toggleRowSelected\": {\n return { ...newState, selectedRowIds: { [action.id]: action.value } };\n }\n default:\n break;\n }\n return newState;\n };\n\n const onReportRowClick = useMemo(\n () => (_: any, row: any) => {\n if (row.original === selectedReport) {\n disableButton(!buttonIsDisabled);\n row.toggleRowSelected();\n } else {\n disableButton(false);\n row.toggleRowSelected(true);\n }\n setSelectedReport(row.original);\n },\n [buttonIsDisabled, selectedReport],\n );\n\n useEffect(() => {\n if (!IModelApp.authorizationClient) throw new Error(\"AuthorizationClient is not defined. Most likely IModelApp.startup was not called yet.\");\n IModelApp.authorizationClient\n .getAccessToken()\n .then((token: string) => {\n reportsClientApi\n .getReports(token, projectId)\n .then((data) => {\n if (data) {\n const fetchedReports = data ?? [];\n setReports(fetchedReports);\n setFilteredReports(fetchedReports);\n setIsLoading(false);\n }\n })\n .catch((err) => {\n setIsLoading(false);\n toaster.negative(\"You are not authorized to get reports for this projects. Please contact project administrator.\");\n /* eslint-disable no-console */\n console.error(err);\n });\n })\n .catch((err) => {\n toaster.negative(\"You are not authorized to use this system.\");\n /* eslint-disable no-console */\n console.error(err);\n });\n }, [projectId, reportsClientApi]);\n\n return (\n <>\n <WidgetHeader title=\"Reports\" />\n <div className=\"oclca-reports-container\">\n <div className=\"oclca-searchbox-container\">\n <SearchBox onValueChanged={onSearchBoxValueChanged} placeholder={\"Search reports\"} />\n </div>\n <div className=\"oclca-scrollable-table\">\n <Table<Reporting>\n className=\"oclca-reports-table\"\n data={filteredReports}\n density=\"extra-condensed\"\n columns={reportsColumns}\n emptyTableContent=\"No reports available.\"\n isSortable\n onRowClick={onReportRowClick}\n stateReducer={tableStateSingleSelectReducer}\n isLoading={isLoading}\n selectRowOnClick={true}\n selectSubRows={false}\n />\n </div>\n </div>\n <Button onClick={() => openModal(true)} styleType=\"cta\" disabled={buttonIsDisabled} className=\"oclca-button-center\">\n One Click LCA Export\n </Button>\n <ExportModal isOpen={modalIsOpen} close={() => openModal(false)} reportId={selectedReport?.id} />\n </>\n );\n};\n\nexport default Reports;\n"]}
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
@import "~@itwin/itwinui-css/scss/variables";
|
|
6
|
-
|
|
7
5
|
.oclca {
|
|
8
6
|
&-scrollable-table {
|
|
9
7
|
overflow-y: scroll;
|
|
@@ -24,8 +22,8 @@
|
|
|
24
22
|
&-reports-container {
|
|
25
23
|
display: flex;
|
|
26
24
|
flex-direction: column;
|
|
27
|
-
gap:
|
|
28
|
-
margin-bottom:
|
|
25
|
+
gap: var(--iui-size-s);
|
|
26
|
+
margin-bottom: var(--iui-size-l);
|
|
29
27
|
max-height: 80%;
|
|
30
28
|
}
|
|
31
29
|
|
|
@@ -36,7 +34,7 @@
|
|
|
36
34
|
&-container {
|
|
37
35
|
display: flex;
|
|
38
36
|
flex-direction: column;
|
|
39
|
-
padding:
|
|
37
|
+
padding: var(--iui-size-s) var(--iui-size-m);
|
|
40
38
|
box-sizing: border-box;
|
|
41
39
|
height: 100%;
|
|
42
40
|
overflow: auto;
|
|
@@ -5,5 +5,5 @@ export interface WidgetHeaderProps {
|
|
|
5
5
|
disabled?: boolean;
|
|
6
6
|
returnFn?: () => Promise<void>;
|
|
7
7
|
}
|
|
8
|
-
export declare const WidgetHeader: ({ title, disabled, returnFn
|
|
8
|
+
export declare const WidgetHeader: ({ title, disabled, returnFn }: WidgetHeaderProps) => JSX.Element;
|
|
9
9
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.WidgetHeader = void 0;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
7
|
/*---------------------------------------------------------------------------------------------
|
|
6
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
7
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
8
|
-
*--------------------------------------------------------------------------------------------*/
|
|
8
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
9
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
9
11
|
const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
|
|
10
12
|
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
11
13
|
require("./utils.scss");
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
+
const react_1 = __importDefault(require("react"));
|
|
15
|
+
const WidgetHeader = ({ title, disabled = false, returnFn }) => {
|
|
16
|
+
return (react_1.default.createElement("div", { className: "oclca-widget-header-container" },
|
|
17
|
+
returnFn && (react_1.default.createElement("div", { className: disabled ? "oclca-chevron-disabled" : "oclca-chevron", onClick: disabled ? undefined : returnFn, onKeyUp: disabled ? undefined : returnFn },
|
|
18
|
+
react_1.default.createElement(itwinui_icons_react_1.SvgChevronLeft, null))),
|
|
19
|
+
react_1.default.createElement(itwinui_react_1.Text, { className: "oclca-title", variant: "title" }, title)));
|
|
14
20
|
};
|
|
15
21
|
exports.WidgetHeader = WidgetHeader;
|
|
16
22
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/utils.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/utils.tsx"],"names":[],"mappings":";;;;;;AAAA;;;gGAGgG;AAChG,oEAA4D;AAC5D,wDAA4C;AAC5C,wBAAsB;AACtB,kDAA0B;AAQnB,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACvF,OAAO,CACL,uCAAK,SAAS,EAAC,+BAA+B;QAC3C,QAAQ,IAAI,CACX,uCACE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,EAChE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACxC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAExC,8BAAC,oCAAc,OAAG,CACd,CACP;QACD,8BAAC,oBAAI,IAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,IAC1C,KAAK,CACD,CACH,CACP,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,YAAY,gBAiBvB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { SvgChevronLeft } from \"@itwin/itwinui-icons-react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./utils.scss\";\nimport React from \"react\";\n\nexport interface WidgetHeaderProps {\n title: string;\n disabled?: boolean;\n returnFn?: () => Promise<void>;\n}\n\nexport const WidgetHeader = ({ title, disabled = false, returnFn }: WidgetHeaderProps) => {\n return (\n <div className=\"oclca-widget-header-container\">\n {returnFn && (\n <div\n className={disabled ? \"oclca-chevron-disabled\" : \"oclca-chevron\"}\n onClick={disabled ? undefined : returnFn}\n onKeyUp={disabled ? undefined : returnFn}\n >\n <SvgChevronLeft />\n </div>\n )}\n <Text className=\"oclca-title\" variant=\"title\">\n {title}\n </Text>\n </div>\n );\n};\n"]}
|
|
@@ -2,29 +2,21 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
@import "~@itwin/itwinui-css/scss/variables";
|
|
6
|
-
@import "~@itwin/itwinui-css/scss/icon/index";
|
|
7
|
-
@import "~@itwin/itwinui-css/scss/button/index";
|
|
8
|
-
|
|
9
5
|
.oclca-widget-header-container {
|
|
10
6
|
display: flex;
|
|
11
|
-
margin-bottom:
|
|
7
|
+
margin-bottom: calc(var(--iui-size-s) * 3);
|
|
12
8
|
.oclca-chevron {
|
|
13
|
-
@include iui-icons-large();
|
|
14
9
|
cursor: pointer;
|
|
15
10
|
align-self: center;
|
|
16
|
-
margin-right:
|
|
11
|
+
margin-right: var(--iui-size-xs);
|
|
17
12
|
}
|
|
18
13
|
|
|
19
14
|
.oclca-chevron-disabled {
|
|
20
|
-
|
|
21
|
-
@include themed {
|
|
22
|
-
fill: t(iui-icons-color-actionable-disabled);
|
|
23
|
-
}
|
|
15
|
+
fill: var(--iui-color-icon-disabled);
|
|
24
16
|
cursor: not-allowed;
|
|
25
17
|
|
|
26
18
|
align-self: center;
|
|
27
|
-
margin-right:
|
|
19
|
+
margin-right: var(--iui-size-xs);
|
|
28
20
|
}
|
|
29
21
|
|
|
30
22
|
.oclca-title {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -11,9 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
15
|
};
|
|
12
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
17
|
/*---------------------------------------------------------------------------------------------
|
|
14
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
15
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
16
|
-
*--------------------------------------------------------------------------------------------*/
|
|
18
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
19
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
20
|
+
*--------------------------------------------------------------------------------------------*/
|
|
17
21
|
/** UI Provider for iTwin Viewer Applications */
|
|
18
22
|
__exportStar(require("./widgets/OneClickLCAWidget"), exports);
|
|
19
23
|
//# sourceMappingURL=one-click-lca-widget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-click-lca-widget.js","sourceRoot":"","sources":["../../src/one-click-lca-widget.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"one-click-lca-widget.js","sourceRoot":"","sources":["../../src/one-click-lca-widget.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,gDAAgD;AAChD,8DAA4C","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** UI Provider for iTwin Viewer Applications */\nexport * from \"./widgets/OneClickLCAWidget\";\n"]}
|
|
@@ -3,15 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
6
|
+
/*---------------------------------------------------------------------------------------------
|
|
7
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
8
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
9
|
+
*--------------------------------------------------------------------------------------------*/
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
7
11
|
require("@testing-library/jest-dom");
|
|
8
|
-
const
|
|
12
|
+
const react_2 = require("@testing-library/react");
|
|
9
13
|
const ExportModal_1 = __importDefault(require("../components/ExportModal"));
|
|
10
14
|
describe("Testing Export Modal", function () {
|
|
11
15
|
it("signin", function () {
|
|
12
|
-
|
|
13
|
-
expect(
|
|
14
|
-
expect(
|
|
16
|
+
(0, react_2.render)(react_1.default.createElement(ExportModal_1.default, { isOpen: true, close: () => { }, reportId: undefined }));
|
|
17
|
+
expect(react_2.screen.getByLabelText("Email")).toBeDefined();
|
|
18
|
+
expect(react_2.screen.getByLabelText("Password")).toBeDefined();
|
|
15
19
|
});
|
|
16
20
|
});
|
|
17
21
|
//# sourceMappingURL=ExportModal.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportModal.test.js","sourceRoot":"","sources":["../../../src/test/ExportModal.test.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExportModal.test.js","sourceRoot":"","sources":["../../../src/test/ExportModal.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;gGAGgG;AAChG,kDAA0B;AAC1B,qCAAmC;AACnC,kDAAwD;AACxD,4EAAoD;AAEpD,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,EAAE,CAAC,QAAQ,EAAE;QACX,IAAA,cAAM,EAAC,8BAAC,qBAAW,IAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,CAAC;QAC5E,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport \"@testing-library/jest-dom\";\nimport { render, screen } from \"@testing-library/react\";\nimport ExportModal from \"../components/ExportModal\";\n\ndescribe(\"Testing Export Modal\", function () {\n it(\"signin\", function () {\n render(<ExportModal isOpen={true} close={() => {}} reportId={undefined} />);\n expect(screen.getByLabelText(\"Email\")).toBeDefined();\n expect(screen.getByLabelText(\"Password\")).toBeDefined();\n });\n});\n"]}
|
|
@@ -1,35 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
6
|
+
/*---------------------------------------------------------------------------------------------
|
|
7
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
8
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
9
|
+
*--------------------------------------------------------------------------------------------*/
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
4
11
|
require("@testing-library/jest-dom");
|
|
5
|
-
const
|
|
12
|
+
const react_2 = require("@testing-library/react");
|
|
6
13
|
const utils_1 = require("../components/utils");
|
|
7
14
|
describe("Widget Header Component", function () {
|
|
8
15
|
it("should have hello as title", function () {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
expect(react_1.screen.getByText("hello")).toBeDefined();
|
|
16
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(utils_1.WidgetHeader, { title: "hello" }));
|
|
17
|
+
expect(react_2.screen.getByText("hello")).toBeDefined();
|
|
12
18
|
expect(container.firstChild).toHaveClass("oclca-widget-header-container");
|
|
13
|
-
expect(
|
|
19
|
+
expect(container.firstChild?.firstChild).toHaveClass("oclca-title");
|
|
14
20
|
});
|
|
15
21
|
it("with return function", function () {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
expect(
|
|
19
|
-
expect((_b = container.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild).not.toHaveClass("oclca-chevron-disabled");
|
|
22
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(utils_1.WidgetHeader, { title: "hello", returnFn: async () => { } }));
|
|
23
|
+
expect(container.firstChild?.firstChild).toHaveClass("oclca-chevron");
|
|
24
|
+
expect(container.firstChild?.firstChild).not.toHaveClass("oclca-chevron-disabled");
|
|
20
25
|
});
|
|
21
26
|
it("with disabled", function () {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
expect(
|
|
25
|
-
expect((_b = container.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild).toHaveClass("oclca-chevron-disabled");
|
|
27
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(utils_1.WidgetHeader, { title: "hello", disabled: true, returnFn: async () => { } }));
|
|
28
|
+
expect(container.firstChild?.firstChild).not.toHaveClass("oclca-chevron");
|
|
29
|
+
expect(container.firstChild?.firstChild).toHaveClass("oclca-chevron-disabled");
|
|
26
30
|
});
|
|
27
31
|
it("with mocked return function", function () {
|
|
28
32
|
const mockReturnFn = jest.fn();
|
|
29
|
-
const { container } =
|
|
33
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(utils_1.WidgetHeader, { title: "hello", returnFn: mockReturnFn }));
|
|
30
34
|
const toTestElement = container.querySelector("SvgChevronLeft");
|
|
31
35
|
if (toTestElement !== null) {
|
|
32
|
-
|
|
36
|
+
react_2.fireEvent.click(toTestElement);
|
|
33
37
|
}
|
|
34
38
|
expect(mockReturnFn).toHaveBeenCalled;
|
|
35
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetHeader.test.js","sourceRoot":"","sources":["../../../src/test/WidgetHeader.test.tsx"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"WidgetHeader.test.js","sourceRoot":"","sources":["../../../src/test/WidgetHeader.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;gGAGgG;AAChG,kDAA0B;AAC1B,qCAAmC;AACnC,kDAAmE;AACnE,+CAAmD;AAEnD,QAAQ,CAAC,yBAAyB,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,GAAG,CAAC,CAAC;QAC7D,MAAM,CAAC,cAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CAAC,CAAC;QACvF,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CAAC,CAAC;QACvG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,YAAY,GAAI,CAAC,CAAC;QAErF,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,iBAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport \"@testing-library/jest-dom\";\nimport { fireEvent, render, screen } from \"@testing-library/react\";\nimport { WidgetHeader } from \"../components/utils\";\n\ndescribe(\"Widget Header Component\", function () {\n it(\"should have hello as title\", function () {\n const { container } = render(<WidgetHeader title=\"hello\" />);\n expect(screen.getByText(\"hello\")).toBeDefined();\n expect(container.firstChild).toHaveClass(\"oclca-widget-header-container\");\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-title\");\n });\n\n it(\"with return function\", function () {\n const { container } = render(<WidgetHeader title=\"hello\" returnFn={async () => {}} />);\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).not.toHaveClass(\"oclca-chevron-disabled\");\n });\n\n it(\"with disabled\", function () {\n const { container } = render(<WidgetHeader title=\"hello\" disabled={true} returnFn={async () => {}} />);\n expect(container.firstChild?.firstChild).not.toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-chevron-disabled\");\n });\n\n it(\"with mocked return function\", function () {\n const mockReturnFn = jest.fn();\n const { container } = render(<WidgetHeader title=\"hello\" returnFn={mockReturnFn} />);\n\n const toTestElement = container.querySelector(\"SvgChevronLeft\");\n if (toTestElement !== null) {\n fireEvent.click(toTestElement);\n }\n expect(mockReturnFn).toHaveBeenCalled;\n });\n});\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { StagePanelLocation, StagePanelSection } from "@itwin/appui-
|
|
1
|
+
import type { UiItemsProvider, Widget } from "@itwin/appui-react";
|
|
2
|
+
import { StagePanelLocation, StagePanelSection } from "@itwin/appui-react";
|
|
3
3
|
export declare class OneClickLCAProvider implements UiItemsProvider {
|
|
4
4
|
readonly id = "OneClickLCAProvider";
|
|
5
|
-
provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection): ReadonlyArray<
|
|
5
|
+
provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection): ReadonlyArray<Widget>;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=OneClickLCAWidget.d.ts.map
|
|
@@ -4,24 +4,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.OneClickLCAProvider = void 0;
|
|
7
|
-
const
|
|
8
|
-
const appui_abstract_1 = require("@itwin/appui-abstract");
|
|
7
|
+
const appui_react_1 = require("@itwin/appui-react");
|
|
9
8
|
const OneClickLCA_1 = __importDefault(require("../components/OneClickLCA"));
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
10
|
class OneClickLCAProvider {
|
|
11
11
|
constructor() {
|
|
12
12
|
this.id = "OneClickLCAProvider";
|
|
13
13
|
}
|
|
14
14
|
provideWidgets(_stageId, stageUsage, location, section) {
|
|
15
15
|
const widgets = [];
|
|
16
|
-
if (location ===
|
|
17
|
-
section === appui_abstract_1.StagePanelSection.Start &&
|
|
18
|
-
stageUsage === appui_abstract_1.StageUsage.General) {
|
|
16
|
+
if (location === appui_react_1.StagePanelLocation.Left && section === appui_react_1.StagePanelSection.Start && stageUsage === appui_react_1.StageUsage.General) {
|
|
19
17
|
const OneClickLCAWidget = {
|
|
20
18
|
id: "OneClickLCAWidget",
|
|
21
19
|
label: "One Click LCA",
|
|
22
|
-
|
|
23
|
-
return jsx_runtime_1.jsx(OneClickLCA_1.default, {}, void 0);
|
|
24
|
-
},
|
|
20
|
+
content: react_1.default.createElement(OneClickLCA_1.default, null),
|
|
25
21
|
};
|
|
26
22
|
widgets.push(OneClickLCAWidget);
|
|
27
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneClickLCAWidget.js","sourceRoot":"","sources":["../../../src/widgets/OneClickLCAWidget.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OneClickLCAWidget.js","sourceRoot":"","sources":["../../../src/widgets/OneClickLCAWidget.tsx"],"names":[],"mappings":";;;;;;AAKA,oDAAuF;AACvF,4EAAoD;AACpD,kDAA0B;AAE1B,MAAa,mBAAmB;IAAhC;QACkB,OAAE,GAAG,qBAAqB,CAAC;IAgB7C,CAAC;IAdQ,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAA2B;QACnH,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,QAAQ,KAAK,gCAAkB,CAAC,IAAI,IAAI,OAAO,KAAK,+BAAiB,CAAC,KAAK,IAAI,UAAU,KAAK,wBAAU,CAAC,OAAO,EAAE;YACpH,MAAM,iBAAiB,GAAW;gBAChC,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,8BAAC,qBAAW,OAAG;aACzB,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACjC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAjBD,kDAiBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport type { UiItemsProvider, Widget } from \"@itwin/appui-react\";\nimport { StagePanelLocation, StagePanelSection, StageUsage } from \"@itwin/appui-react\";\nimport OneClickLCA from \"../components/OneClickLCA\";\nimport React from \"react\";\n\nexport class OneClickLCAProvider implements UiItemsProvider {\n public readonly id = \"OneClickLCAProvider\";\n\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection): ReadonlyArray<Widget> {\n const widgets: Widget[] = [];\n if (location === StagePanelLocation.Left && section === StagePanelSection.Start && stageUsage === StageUsage.General) {\n const OneClickLCAWidget: Widget = {\n id: \"OneClickLCAWidget\",\n label: \"One Click LCA\",\n content: <OneClickLCA />,\n };\n\n widgets.push(OneClickLCAWidget);\n }\n\n return widgets;\n }\n}\n"]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
1
|
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
5
|
import "./ExportModal.scss";
|
|
7
|
-
import { useCallback, useEffect, useMemo, useRef, useState
|
|
6
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
8
7
|
import { IModelApp } from "@itwin/core-frontend";
|
|
9
|
-
import { Alert, Button, LabeledInput, Modal, ProgressLinear, ProgressRadial, Text, toaster
|
|
10
|
-
import { SvgVisibilityHide, SvgVisibilityShow
|
|
8
|
+
import { Alert, Button, LabeledInput, Modal, ProgressLinear, ProgressRadial, Text, toaster } from "@itwin/itwinui-react";
|
|
9
|
+
import { SvgVisibilityHide, SvgVisibilityShow } from "@itwin/itwinui-icons-react";
|
|
11
10
|
import { CarbonUploadState, OCLCAJobsClient } from "@itwin/insights-client";
|
|
12
11
|
import logo from "../../public/logo/oneClickLCALogo.png";
|
|
13
12
|
const ExportModal = (props) => {
|
|
@@ -29,7 +28,7 @@ const ExportModal = (props) => {
|
|
|
29
28
|
return password !== "";
|
|
30
29
|
}, [password]);
|
|
31
30
|
const validateSignin = useCallback(() => {
|
|
32
|
-
return
|
|
31
|
+
return cache?.token && cache?.exp > Date.now();
|
|
33
32
|
}, [cache]);
|
|
34
33
|
const [isSignedIn, setIsSignedIn] = useState(validateSignin());
|
|
35
34
|
const [isSigningIn, startSigningIn] = useState(false);
|
|
@@ -45,13 +44,12 @@ const ExportModal = (props) => {
|
|
|
45
44
|
}, [setEmail, setPassword, showPassword, showSigninError]);
|
|
46
45
|
const pinStatus = useCallback((job) => {
|
|
47
46
|
const intervalId = window.setInterval(async () => {
|
|
48
|
-
|
|
49
|
-
const token = (_b = (await ((_a = IModelApp.authorizationClient) === null || _a === void 0 ? void 0 : _a.getAccessToken()))) !== null && _b !== void 0 ? _b : "";
|
|
47
|
+
const token = (await IModelApp.authorizationClient?.getAccessToken()) ?? "";
|
|
50
48
|
if (job.id && token) {
|
|
51
|
-
const currentJobStatus = await oneClickLCAClientApi.getOCLCAJobStatus(token, job
|
|
49
|
+
const currentJobStatus = await oneClickLCAClientApi.getOCLCAJobStatus(token, job?.id);
|
|
52
50
|
if (currentJobStatus.status) {
|
|
53
51
|
if (currentJobStatus.status === CarbonUploadState.Succeeded) {
|
|
54
|
-
setJobLink(!!
|
|
52
|
+
setJobLink(!!currentJobStatus?._links?.oneclicklca?.href ? { href: currentJobStatus._links.oneclicklca.href } : undefined);
|
|
55
53
|
}
|
|
56
54
|
setJobStatus(currentJobStatus.status);
|
|
57
55
|
}
|
|
@@ -64,8 +62,7 @@ const ExportModal = (props) => {
|
|
|
64
62
|
intervalRef.current = intervalId;
|
|
65
63
|
}, [setJobLink, setJobStatus, oneClickLCAClientApi]);
|
|
66
64
|
const runJob = useCallback(async (token) => {
|
|
67
|
-
|
|
68
|
-
const accessToken = (_b = (await ((_a = IModelApp.authorizationClient) === null || _a === void 0 ? void 0 : _a.getAccessToken()))) !== null && _b !== void 0 ? _b : "";
|
|
65
|
+
const accessToken = (await IModelApp.authorizationClient?.getAccessToken()) ?? "";
|
|
69
66
|
if (props.reportId && token) {
|
|
70
67
|
try {
|
|
71
68
|
const jobCreated = await oneClickLCAClientApi.createJob(accessToken, {
|
|
@@ -115,14 +112,7 @@ const ExportModal = (props) => {
|
|
|
115
112
|
console.error(err);
|
|
116
113
|
}
|
|
117
114
|
startSigningIn(false);
|
|
118
|
-
}, [
|
|
119
|
-
email,
|
|
120
|
-
password,
|
|
121
|
-
resetSignin,
|
|
122
|
-
cacheToken,
|
|
123
|
-
showSigninError,
|
|
124
|
-
oneClickLCAClientApi,
|
|
125
|
-
]);
|
|
115
|
+
}, [email, password, resetSignin, cacheToken, showSigninError, oneClickLCAClientApi]);
|
|
126
116
|
const onClose = useCallback(() => {
|
|
127
117
|
resetSignin();
|
|
128
118
|
setJobStatus(undefined);
|
|
@@ -135,19 +125,32 @@ const ExportModal = (props) => {
|
|
|
135
125
|
const getStatusComponent = useCallback((status, link) => {
|
|
136
126
|
switch (status) {
|
|
137
127
|
case CarbonUploadState.Queued:
|
|
138
|
-
return (
|
|
128
|
+
return (React.createElement("div", { className: "oclca-progress-radial-container" },
|
|
129
|
+
React.createElement(ProgressRadial, { indeterminate: true, size: "small", value: 50 }),
|
|
130
|
+
React.createElement(Text, { variant: "leading", className: "oclca-status-text" }, "Export queued")));
|
|
139
131
|
case CarbonUploadState.Running:
|
|
140
|
-
return (
|
|
132
|
+
return (React.createElement("div", { className: "oclca-progress-linear-container" },
|
|
133
|
+
React.createElement(ProgressLinear, { indeterminate: true }),
|
|
134
|
+
React.createElement(Text, { variant: "leading", className: "oclca-status-text" }, "Export running")));
|
|
141
135
|
case CarbonUploadState.Succeeded:
|
|
142
|
-
return (link && (
|
|
136
|
+
return (link && (React.createElement("div", { className: "oclca-progress-radial-container" },
|
|
137
|
+
React.createElement(ProgressRadial, { status: "positive", size: "small", value: 50 }),
|
|
138
|
+
React.createElement("a", { className: "oclca-report-button", href: link, target: "_blank", rel: "noopener noreferrer" },
|
|
139
|
+
React.createElement(Button, { styleType: "cta" }, "Open in One Click LCA")))));
|
|
143
140
|
case CarbonUploadState.Failed:
|
|
144
|
-
return (
|
|
141
|
+
return (React.createElement("div", { className: "oclca-progress-radial-container" },
|
|
142
|
+
React.createElement(ProgressRadial, { status: "negative", size: "small", value: 100 }),
|
|
143
|
+
React.createElement(Text, { variant: "leading", className: "oclca-status-text" }, "Export failed")));
|
|
145
144
|
default:
|
|
146
|
-
return (
|
|
145
|
+
return (React.createElement("div", { className: "oclca-progress-radial-container" },
|
|
146
|
+
React.createElement(Text, null,
|
|
147
|
+
"Invalid Job Status",
|
|
148
|
+
" ",
|
|
149
|
+
React.createElement("span", { role: "img", "aria-label": "sad" }, "\uD83D\uDE14"))));
|
|
147
150
|
}
|
|
148
151
|
}, []);
|
|
149
152
|
useEffect(() => {
|
|
150
|
-
if (props.isOpen && isSignedIn &&
|
|
153
|
+
if (props.isOpen && isSignedIn && cache?.token) {
|
|
151
154
|
runJob(cache.token).catch((err) => {
|
|
152
155
|
setJobStatus(CarbonUploadState.Failed);
|
|
153
156
|
toaster.negative("Error occurs while running the job. 😔");
|
|
@@ -157,8 +160,7 @@ const ExportModal = (props) => {
|
|
|
157
160
|
}
|
|
158
161
|
}, [props.isOpen, isSignedIn, cache, runJob]);
|
|
159
162
|
useEffect(() => {
|
|
160
|
-
if (jobStatus === CarbonUploadState.Succeeded ||
|
|
161
|
-
jobStatus === CarbonUploadState.Failed) {
|
|
163
|
+
if (jobStatus === CarbonUploadState.Succeeded || jobStatus === CarbonUploadState.Failed) {
|
|
162
164
|
if (intervalRef.current) {
|
|
163
165
|
window.clearInterval(intervalRef.current);
|
|
164
166
|
}
|
|
@@ -174,7 +176,21 @@ const ExportModal = (props) => {
|
|
|
174
176
|
return;
|
|
175
177
|
}
|
|
176
178
|
}, [email, isValidEmail]);
|
|
177
|
-
return (
|
|
179
|
+
return (React.createElement(Modal, { "data-testid": "export-modal", isOpen: props.isOpen, onClose: onClose, title: null, closeOnExternalClick: false },
|
|
180
|
+
!isSignedIn && (React.createElement("div", { className: "oclca-signin" },
|
|
181
|
+
React.createElement("img", { className: "oclca-signin-icon", src: logo, alt: "One Click LCA\u00AE software", "data-height-percentage": "80", "data-actual-width": "1200", "data-actual-height": "600" }),
|
|
182
|
+
React.createElement("form", { onSubmit: signin, className: "oclca-signin-form" },
|
|
183
|
+
React.createElement("div", { className: "oclca-signin-prompt" }, "Sign in to One Click LCA."),
|
|
184
|
+
signinError && (React.createElement(Alert, { type: "negative", className: "oclca-signin-error" }, "Incorrect email or password.")),
|
|
185
|
+
React.createElement("div", { className: "oclca-signin-input" },
|
|
186
|
+
React.createElement(LabeledInput, { label: "Email", value: email, onChange: (v) => setEmail(v.target.value), type: "email", status: emailError ? "negative" : undefined, message: emailError ? "Invalid email address." : "", required: true })),
|
|
187
|
+
React.createElement("div", { className: "oclca-signin-input" },
|
|
188
|
+
React.createElement(LabeledInput, { label: "Password", value: password, onChange: (e) => setPassword(e.target.value), type: passwordIsVisible ? "text" : "password", svgIcon: passwordIsVisible ? React.createElement(SvgVisibilityHide, { onClick: () => showPassword(!passwordIsVisible) }) : React.createElement(SvgVisibilityShow, null), iconDisplayStyle: "inline", required: true })),
|
|
189
|
+
React.createElement("div", { className: "oclca-signin-button-container" },
|
|
190
|
+
React.createElement(Button, { className: "oclca-signin-button", type: "submit", styleType: "cta", disabled: !isValidSignin() }, isSigningIn ? React.createElement(ProgressRadial, { className: "oclca-signin-wait", indeterminate: true, size: "small", value: 50 }) : "Sign In"))))),
|
|
191
|
+
isSignedIn && !jobStatus && (React.createElement("div", { className: "oclca-progress-radial-container" },
|
|
192
|
+
React.createElement(ProgressRadial, { indeterminate: true, size: "large", value: 50 }))),
|
|
193
|
+
isSignedIn && jobStatus && getStatusComponent(jobStatus, jobLink?.href)));
|
|
178
194
|
};
|
|
179
195
|
export default ExportModal;
|
|
180
196
|
//# sourceMappingURL=ExportModal.js.map
|