@itwin/one-click-lca-react 0.2.0 → 0.4.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.
Files changed (37) hide show
  1. package/lib/cjs/components/ExportModal.js +101 -59
  2. package/lib/cjs/components/ExportModal.js.map +1 -1
  3. package/lib/cjs/components/ExportModal.scss +14 -16
  4. package/lib/cjs/components/OneClickLCA.js +7 -2
  5. package/lib/cjs/components/OneClickLCA.js.map +1 -1
  6. package/lib/cjs/components/Reports.js +41 -16
  7. package/lib/cjs/components/Reports.js.map +1 -1
  8. package/lib/cjs/components/Reports.scss +3 -5
  9. package/lib/cjs/components/utils.js +8 -2
  10. package/lib/cjs/components/utils.js.map +1 -1
  11. package/lib/cjs/components/utils.scss +4 -12
  12. package/lib/cjs/test/ExportModal.test.js +9 -5
  13. package/lib/cjs/test/ExportModal.test.js.map +1 -1
  14. package/lib/cjs/test/WidgetHeader.test.js +20 -16
  15. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  16. package/lib/cjs/widgets/OneClickLCAWidget.d.ts +3 -3
  17. package/lib/cjs/widgets/OneClickLCAWidget.js +6 -8
  18. package/lib/cjs/widgets/OneClickLCAWidget.js.map +1 -1
  19. package/lib/esm/components/ExportModal.js +59 -36
  20. package/lib/esm/components/ExportModal.js.map +1 -1
  21. package/lib/esm/components/ExportModal.scss +14 -16
  22. package/lib/esm/components/OneClickLCA.js +7 -2
  23. package/lib/esm/components/OneClickLCA.js.map +1 -1
  24. package/lib/esm/components/Reports.js +12 -6
  25. package/lib/esm/components/Reports.js.map +1 -1
  26. package/lib/esm/components/Reports.scss +3 -5
  27. package/lib/esm/components/utils.js +5 -2
  28. package/lib/esm/components/utils.js.map +1 -1
  29. package/lib/esm/components/utils.scss +4 -12
  30. package/lib/esm/test/ExportModal.test.js +6 -2
  31. package/lib/esm/test/ExportModal.test.js.map +1 -1
  32. package/lib/esm/test/WidgetHeader.test.js +14 -13
  33. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  34. package/lib/esm/widgets/OneClickLCAWidget.d.ts +3 -3
  35. package/lib/esm/widgets/OneClickLCAWidget.js +3 -5
  36. package/lib/esm/widgets/OneClickLCAWidget.js.map +1 -1
  37. package/package.json +28 -28
@@ -1 +1 @@
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(\n (x) =>\n x.displayName &&\n x.displayName.toLowerCase().indexOf(value.toLowerCase()) > -1\n );\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)\n throw new Error(\n \"AuthorizationClient is not defined. Most likely IModelApp.startup was not called yet.\"\n );\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\n onValueChanged={onSearchBoxValueChanged}\n placeholder={\"Search reports\"}\n />\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\n onClick={() => openModal(true)}\n styleType=\"cta\"\n disabled={buttonIsDisabled}\n className=\"oclca-button-center\"\n >\n One Click LCA Export\n </Button>\n <ExportModal\n isOpen={modalIsOpen}\n close={() => openModal(false)}\n reportId={selectedReport?.id}\n />\n </>\n );\n};\n\nexport default Reports;\n"]}
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(\n (x) =>\n x.displayName &&\n x.displayName.toLowerCase().indexOf(value.toLowerCase()) > -1\n );\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)\n throw new Error(\n \"AuthorizationClient is not defined. Most likely IModelApp.startup was not called yet.\"\n );\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\n onValueChanged={onSearchBoxValueChanged}\n placeholder={\"Search reports\"}\n />\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\n onClick={() => openModal(true)}\n styleType=\"cta\"\n disabled={buttonIsDisabled}\n className=\"oclca-button-center\"\n >\n One Click LCA Export\n </Button>\n <ExportModal\n isOpen={modalIsOpen}\n close={() => openModal(false)}\n reportId={selectedReport?.id}\n />\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: $iui-baseline;
28
- margin-bottom: $iui-line-height;
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: $iui-baseline $iui-m;
37
+ padding: var(--iui-size-s) var(--iui-size-m);
40
38
  box-sizing: border-box;
41
39
  height: 100%;
42
40
  overflow: auto;
@@ -1,7 +1,9 @@
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
8
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
9
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -9,8 +11,12 @@ const jsx_runtime_1 = require("react/jsx-runtime");
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");
14
+ const react_1 = __importDefault(require("react"));
12
15
  const WidgetHeader = ({ title, disabled = false, returnFn, }) => {
13
- return (jsx_runtime_1.jsxs("div", Object.assign({ className: "oclca-widget-header-container" }, { children: [returnFn && (jsx_runtime_1.jsx("div", Object.assign({ className: disabled ? "oclca-chevron-disabled" : "oclca-chevron", onClick: disabled ? undefined : returnFn, onKeyUp: disabled ? undefined : returnFn }, { children: jsx_runtime_1.jsx(itwinui_icons_react_1.SvgChevronLeft, {}, void 0) }), void 0)), jsx_runtime_1.jsx(itwinui_react_1.Text, Object.assign({ className: "oclca-title", variant: "title" }, { children: title }), void 0)] }), void 0));
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":";;;;AAAA;;;+FAG+F;AAC/F,oEAA4D;AAC5D,wDAA4C;AAC5C,wBAAsB;AASf,MAAM,YAAY,GAAG,CAAC,EAC3B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,GACU,EAAE,EAAE;IACtB,OAAO,CACL,0CAAK,SAAS,EAAC,+BAA+B,iBAC3C,QAAQ,IAAI,CACX,yCACE,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,gBAExC,kBAAC,oCAAc,aAAG,YACd,CACP,EACD,kBAAC,oBAAI,kBAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,gBAC1C,KAAK,YACD,aACH,CACP,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,YAAY,gBAqBvB","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 = ({\n title,\n disabled = false,\n returnFn,\n}: 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"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/utils.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,oEAA4D;AAC5D,wDAA4C;AAC5C,wBAAsB;AACtB,kDAA0B;AAQnB,MAAM,YAAY,GAAG,CAAC,EAC3B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,GACU,EAAE,EAAE;IACtB,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;AArBW,QAAA,YAAY,gBAqBvB","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 = ({\n title,\n disabled = false,\n returnFn,\n}: 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: $iui-baseline * 3;
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: $iui-s;
11
+ margin-right: var(--iui-size-xs);
17
12
  }
18
13
 
19
14
  .oclca-chevron-disabled {
20
- @include iui-icons-large();
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: $iui-s;
19
+ margin-right: var(--iui-size-xs);
28
20
  }
29
21
 
30
22
  .oclca-title {
@@ -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
- const jsx_runtime_1 = require("react/jsx-runtime");
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 react_1 = require("@testing-library/react");
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
- react_1.render(jsx_runtime_1.jsx(ExportModal_1.default, { isOpen: true, close: () => { }, reportId: undefined }, void 0));
13
- expect(react_1.screen.getByLabelText("Email")).toBeDefined();
14
- expect(react_1.screen.getByLabelText("Password")).toBeDefined();
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":";;;;;;AAKA,qCAAmC;AACnC,kDAAwD;AACxD,4EAAoD;AAEpD,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,EAAE,CAAC,QAAQ,EAAE;QACX,cAAM,CAAC,kBAAC,qBAAW,IAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,WAAI,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
+ {"version":3,"file":"ExportModal.test.js","sourceRoot":"","sources":["../../../src/test/ExportModal.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;+FAG+F;AAC/F,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
- const jsx_runtime_1 = require("react/jsx-runtime");
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 react_1 = require("@testing-library/react");
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
- var _a;
10
- const { container } = react_1.render(jsx_runtime_1.jsx(utils_1.WidgetHeader, { title: "hello" }, void 0));
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((_a = container.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild).toHaveClass("oclca-title");
19
+ expect(container.firstChild?.firstChild).toHaveClass("oclca-title");
14
20
  });
15
21
  it("with return function", function () {
16
- var _a, _b;
17
- const { container } = react_1.render(jsx_runtime_1.jsx(utils_1.WidgetHeader, { title: "hello", returnFn: async () => { } }, void 0));
18
- expect((_a = container.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild).toHaveClass("oclca-chevron");
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
- var _a, _b;
23
- const { container } = react_1.render(jsx_runtime_1.jsx(utils_1.WidgetHeader, { title: "hello", disabled: true, returnFn: async () => { } }, void 0));
24
- expect((_a = container.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild).not.toHaveClass("oclca-chevron");
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 } = react_1.render(jsx_runtime_1.jsx(utils_1.WidgetHeader, { title: "hello", returnFn: mockReturnFn }, void 0));
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
- react_1.fireEvent.click(toTestElement);
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":";;;AAKA,qCAAmC;AACnC,kDAAmE;AACnE,+CAAmD;AAEnD,QAAQ,CAAC,yBAAyB,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE;;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,cAAM,CAAC,kBAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,WAAG,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,MAAA,SAAS,CAAC,UAAU,0CAAE,UAAU,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,cAAM,CAC1B,kBAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,WAAI,CACzD,CAAC;QACF,MAAM,CAAC,MAAA,SAAS,CAAC,UAAU,0CAAE,UAAU,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,CAAC,MAAA,SAAS,CAAC,UAAU,0CAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CACtD,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE;;QAClB,MAAM,EAAE,SAAS,EAAE,GAAG,cAAM,CAC1B,kBAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,WAAI,CACzE,CAAC;QACF,MAAM,CAAC,MAAA,SAAS,CAAC,UAAU,0CAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAA,SAAS,CAAC,UAAU,0CAAE,UAAU,CAAC,CAAC,WAAW,CAClD,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,cAAM,CAC1B,kBAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,YAAY,WAAI,CACvD,CAAC;QAEF,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(\n <WidgetHeader title=\"hello\" returnFn={async () => {}} />\n );\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).not.toHaveClass(\n \"oclca-chevron-disabled\"\n );\n });\n\n it(\"with disabled\", function () {\n const { container } = render(\n <WidgetHeader title=\"hello\" disabled={true} returnFn={async () => {}} />\n );\n expect(container.firstChild?.firstChild).not.toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).toHaveClass(\n \"oclca-chevron-disabled\"\n );\n });\n\n it(\"with mocked return function\", function () {\n const mockReturnFn = jest.fn();\n const { container } = render(\n <WidgetHeader title=\"hello\" returnFn={mockReturnFn} />\n );\n\n const toTestElement = container.querySelector(\"SvgChevronLeft\");\n if (toTestElement !== null) {\n fireEvent.click(toTestElement);\n }\n expect(mockReturnFn).toHaveBeenCalled;\n });\n});\n"]}
1
+ {"version":3,"file":"WidgetHeader.test.js","sourceRoot":"","sources":["../../../src/test/WidgetHeader.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;+FAG+F;AAC/F,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,EAC1B,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CACzD,CAAC;QACF,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,CACtD,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CACzE,CAAC;QACF,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,CAClD,wBAAwB,CACzB,CAAC;IACJ,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,EAC1B,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,YAAY,GAAI,CACvD,CAAC;QAEF,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(\n <WidgetHeader title=\"hello\" returnFn={async () => {}} />\n );\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).not.toHaveClass(\n \"oclca-chevron-disabled\"\n );\n });\n\n it(\"with disabled\", function () {\n const { container } = render(\n <WidgetHeader title=\"hello\" disabled={true} returnFn={async () => {}} />\n );\n expect(container.firstChild?.firstChild).not.toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).toHaveClass(\n \"oclca-chevron-disabled\"\n );\n });\n\n it(\"with mocked return function\", function () {\n const mockReturnFn = jest.fn();\n const { container } = render(\n <WidgetHeader title=\"hello\" returnFn={mockReturnFn} />\n );\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 { AbstractWidgetProps, UiItemsProvider } from "@itwin/appui-abstract";
2
- import { StagePanelLocation, StagePanelSection } from "@itwin/appui-abstract";
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<AbstractWidgetProps>;
5
+ provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection): ReadonlyArray<Widget>;
6
6
  }
7
7
  //# sourceMappingURL=OneClickLCAWidget.d.ts.map
@@ -4,24 +4,22 @@ 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 jsx_runtime_1 = require("react/jsx-runtime");
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 === appui_abstract_1.StagePanelLocation.Left &&
17
- section === appui_abstract_1.StagePanelSection.Start &&
18
- stageUsage === appui_abstract_1.StageUsage.General) {
16
+ if (location === appui_react_1.StagePanelLocation.Left &&
17
+ section === appui_react_1.StagePanelSection.Start &&
18
+ stageUsage === appui_react_1.StageUsage.General) {
19
19
  const OneClickLCAWidget = {
20
20
  id: "OneClickLCAWidget",
21
21
  label: "One Click LCA",
22
- getWidgetContent() {
23
- return jsx_runtime_1.jsx(OneClickLCA_1.default, {}, void 0);
24
- },
22
+ content: react_1.default.createElement(OneClickLCA_1.default, null),
25
23
  };
26
24
  widgets.push(OneClickLCAWidget);
27
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OneClickLCAWidget.js","sourceRoot":"","sources":["../../../src/widgets/OneClickLCAWidget.tsx"],"names":[],"mappings":";;;;;;;AAQA,0DAI+B;AAC/B,4EAAoD;AAGpD,MAAa,mBAAmB;IAAhC;QACkB,OAAE,GAAG,qBAAqB,CAAC;IA2B7C,CAAC;IAzBQ,cAAc,CACnB,QAAgB,EAChB,UAAkB,EAClB,QAA4B,EAC5B,OAA2B;QAE3B,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,IACE,QAAQ,KAAK,mCAAkB,CAAC,IAAI;YACpC,OAAO,KAAK,kCAAiB,CAAC,KAAK;YACnC,UAAU,KAAK,2BAAU,CAAC,OAAO,EACjC;YACA,MAAM,iBAAiB,GAAwB;gBAC7C,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,eAAe;gBACtB,gBAAgB;oBACd,OAAO,kBAAC,qBAAW,aAAG,CAAC;gBACzB,CAAC;aACF,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACjC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA5BD,kDA4BC","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 {\n AbstractWidgetProps,\n UiItemsProvider,\n} from \"@itwin/appui-abstract\";\nimport {\n StagePanelLocation,\n StagePanelSection,\n StageUsage,\n} from \"@itwin/appui-abstract\";\nimport OneClickLCA from \"../components/OneClickLCA\";\nimport React from \"react\";\n\nexport class OneClickLCAProvider implements UiItemsProvider {\n public readonly id = \"OneClickLCAProvider\";\n\n public provideWidgets(\n _stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n section?: StagePanelSection\n ): ReadonlyArray<AbstractWidgetProps> {\n const widgets: AbstractWidgetProps[] = [];\n if (\n location === StagePanelLocation.Left &&\n section === StagePanelSection.Start &&\n stageUsage === StageUsage.General\n ) {\n const OneClickLCAWidget: AbstractWidgetProps = {\n id: \"OneClickLCAWidget\",\n label: \"One Click LCA\",\n getWidgetContent() {\n return <OneClickLCA />;\n },\n };\n\n widgets.push(OneClickLCAWidget);\n }\n\n return widgets;\n }\n}\n"]}
1
+ {"version":3,"file":"OneClickLCAWidget.js","sourceRoot":"","sources":["../../../src/widgets/OneClickLCAWidget.tsx"],"names":[],"mappings":";;;;;;AAQA,oDAI4B;AAC5B,4EAAoD;AACpD,kDAA0B;AAE1B,MAAa,mBAAmB;IAAhC;QACkB,OAAE,GAAG,qBAAqB,CAAC;IAyB7C,CAAC;IAvBQ,cAAc,CACnB,QAAgB,EAChB,UAAkB,EAClB,QAA4B,EAC5B,OAA2B;QAE3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IACE,QAAQ,KAAK,gCAAkB,CAAC,IAAI;YACpC,OAAO,KAAK,+BAAiB,CAAC,KAAK;YACnC,UAAU,KAAK,wBAAU,CAAC,OAAO,EACjC;YACA,MAAM,iBAAiB,GAAW;gBAChC,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,8BAAC,qBAAW,OAAE;aACxB,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACjC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA1BD,kDA0BC","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 {\n UiItemsProvider,\n Widget,\n} from \"@itwin/appui-react\";\nimport {\n StagePanelLocation,\n StagePanelSection,\n StageUsage,\n} 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(\n _stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n section?: StagePanelSection\n ): ReadonlyArray<Widget> {\n const widgets: Widget[] = [];\n if (\n location === StagePanelLocation.Left &&\n section === StagePanelSection.Start &&\n stageUsage === StageUsage.General\n ) {\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,19 +1,18 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  /*---------------------------------------------------------------------------------------------
3
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
4
  *--------------------------------------------------------------------------------------------*/
6
5
  import "./ExportModal.scss";
7
- import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
6
+ import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react";
8
7
  import { IModelApp } from "@itwin/core-frontend";
9
8
  import { Alert, Button, LabeledInput, Modal, ProgressLinear, ProgressRadial, Text, toaster, } from "@itwin/itwinui-react";
10
9
  import { SvgVisibilityHide, SvgVisibilityShow, } from "@itwin/itwinui-icons-react";
11
- import { JobStatus, OneClickLCAClient } from "@itwin/insights-client";
10
+ import { CarbonUploadState, OCLCAJobsClient } from "@itwin/insights-client";
12
11
  import logo from "../../public/logo/oneClickLCALogo.png";
13
12
  const ExportModal = (props) => {
14
13
  const MILI_SECONDS = 1000;
15
14
  const PIN_INTERVAL = 1000;
16
- const oneClickLCAClientApi = useMemo(() => new OneClickLCAClient(), []);
15
+ const oneClickLCAClientApi = useMemo(() => new OCLCAJobsClient(), []);
17
16
  const [email, setEmail] = useState("");
18
17
  const [password, setPassword] = useState("");
19
18
  const [passwordIsVisible, showPassword] = useState(false);
@@ -29,7 +28,7 @@ const ExportModal = (props) => {
29
28
  return password !== "";
30
29
  }, [password]);
31
30
  const validateSignin = useCallback(() => {
32
- return (cache === null || cache === void 0 ? void 0 : cache.token) && (cache === null || cache === void 0 ? void 0 : cache.exp) > Date.now();
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,18 +44,17 @@ const ExportModal = (props) => {
45
44
  }, [setEmail, setPassword, showPassword, showSigninError]);
46
45
  const pinStatus = useCallback((job) => {
47
46
  const intervalId = window.setInterval(async () => {
48
- var _a, _b, _c, _d, _e, _f, _g;
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.getOneclicklcaJobStatus(token, job === null || job === void 0 ? void 0 : job.id);
52
- if ((_c = currentJobStatus.job) === null || _c === void 0 ? void 0 : _c.status) {
53
- if (((_d = currentJobStatus.job) === null || _d === void 0 ? void 0 : _d.status) === JobStatus.StatusEnum.Succeeded) {
54
- setJobLink(!!((_f = (_e = currentJobStatus === null || currentJobStatus === void 0 ? void 0 : currentJobStatus.job._links) === null || _e === void 0 ? void 0 : _e.oneclicklca) === null || _f === void 0 ? void 0 : _f.href) ? { href: currentJobStatus.job._links.oneclicklca.href } : undefined);
49
+ const currentJobStatus = await oneClickLCAClientApi.getOCLCAJobStatus(token, job?.id);
50
+ if (currentJobStatus.status) {
51
+ if (currentJobStatus.status === CarbonUploadState.Succeeded) {
52
+ setJobLink(!!currentJobStatus?._links?.oneclicklca?.href ? { href: currentJobStatus._links.oneclicklca.href } : undefined);
55
53
  }
56
- setJobStatus((_g = currentJobStatus.job) === null || _g === void 0 ? void 0 : _g.status);
54
+ setJobStatus(currentJobStatus.status);
57
55
  }
58
56
  else {
59
- setJobStatus(JobStatus.StatusEnum.Failed);
57
+ setJobStatus(CarbonUploadState.Failed);
60
58
  toaster.negative("Failed to get job status. 😔");
61
59
  }
62
60
  }
@@ -64,31 +62,30 @@ const ExportModal = (props) => {
64
62
  intervalRef.current = intervalId;
65
63
  }, [setJobLink, setJobStatus, oneClickLCAClientApi]);
66
64
  const runJob = useCallback(async (token) => {
67
- var _a, _b, _c;
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
- const jobCreated = await oneClickLCAClientApi.createOneclicklcaJob(accessToken, {
68
+ const jobCreated = await oneClickLCAClientApi.createJob(accessToken, {
72
69
  reportId: props.reportId,
73
70
  token,
74
71
  });
75
- if ((_c = jobCreated === null || jobCreated === void 0 ? void 0 : jobCreated.job) === null || _c === void 0 ? void 0 : _c.id) {
76
- pinStatus(jobCreated === null || jobCreated === void 0 ? void 0 : jobCreated.job);
72
+ if (jobCreated.id) {
73
+ pinStatus(jobCreated);
77
74
  }
78
75
  else {
79
- setJobStatus(JobStatus.StatusEnum.Failed);
76
+ setJobStatus(CarbonUploadState.Failed);
80
77
  toaster.negative("Failed to create one click lca job. 😔");
81
78
  }
82
79
  }
83
80
  catch (e) {
84
- setJobStatus(JobStatus.StatusEnum.Failed);
81
+ setJobStatus(CarbonUploadState.Failed);
85
82
  toaster.negative("You do not have the required permissions. Please contact the project administrator.");
86
83
  /* eslint-disable no-console */
87
84
  console.error(e);
88
85
  }
89
86
  }
90
87
  else {
91
- setJobStatus(JobStatus.StatusEnum.Failed);
88
+ setJobStatus(CarbonUploadState.Failed);
92
89
  toaster.negative("Invalid reportId.");
93
90
  }
94
91
  }, [props, pinStatus, oneClickLCAClientApi]);
@@ -96,7 +93,7 @@ const ExportModal = (props) => {
96
93
  e.preventDefault();
97
94
  startSigningIn(true);
98
95
  try {
99
- const result = await oneClickLCAClientApi.getOneclicklcaAccessToken(email, password);
96
+ const result = await oneClickLCAClientApi.getOCLCAAccessToken(email, password);
100
97
  if (result && result.access_token && result.expires_in) {
101
98
  cacheToken({
102
99
  token: result.access_token,
@@ -134,22 +131,34 @@ const ExportModal = (props) => {
134
131
  }, [props, resetSignin]);
135
132
  const getStatusComponent = useCallback((status, link) => {
136
133
  switch (status) {
137
- case JobStatus.StatusEnum.Queued:
138
- return (_jsxs("div", Object.assign({ className: "oclca-progress-radial-container" }, { children: [_jsx(ProgressRadial, { indeterminate: true, size: "small", value: 50 }, void 0), _jsx(Text, Object.assign({ variant: "leading", className: "oclca-status-text" }, { children: "Export queued" }), void 0)] }), void 0));
139
- case JobStatus.StatusEnum.Running:
140
- return (_jsxs("div", Object.assign({ className: "oclca-progress-linear-container" }, { children: [_jsx(ProgressLinear, { indeterminate: true }, void 0), _jsx(Text, Object.assign({ variant: "leading", className: "oclca-status-text" }, { children: "Export running" }), void 0)] }), void 0));
141
- case JobStatus.StatusEnum.Succeeded:
142
- return (link && (_jsxs("div", Object.assign({ className: "oclca-progress-radial-container" }, { children: [_jsx(ProgressRadial, { status: "positive", size: "small", value: 50 }, void 0), _jsx("a", Object.assign({ className: "oclca-report-button", href: link, target: "_blank", rel: "noopener noreferrer" }, { children: _jsx(Button, Object.assign({ styleType: "cta" }, { children: "Open in One Click LCA" }), void 0) }), void 0)] }), void 0)));
143
- case JobStatus.StatusEnum.Failed:
144
- return (_jsxs("div", Object.assign({ className: "oclca-progress-radial-container" }, { children: [_jsx(ProgressRadial, { status: "negative", size: "small", value: 100 }, void 0), _jsx(Text, Object.assign({ variant: "leading", className: "oclca-status-text" }, { children: "Export failed" }), void 0)] }), void 0));
134
+ case CarbonUploadState.Queued:
135
+ return (React.createElement("div", { className: "oclca-progress-radial-container" },
136
+ React.createElement(ProgressRadial, { indeterminate: true, size: "small", value: 50 }),
137
+ React.createElement(Text, { variant: "leading", className: "oclca-status-text" }, "Export queued")));
138
+ case CarbonUploadState.Running:
139
+ return (React.createElement("div", { className: "oclca-progress-linear-container" },
140
+ React.createElement(ProgressLinear, { indeterminate: true }),
141
+ React.createElement(Text, { variant: "leading", className: "oclca-status-text" }, "Export running")));
142
+ case CarbonUploadState.Succeeded:
143
+ return (link && (React.createElement("div", { className: "oclca-progress-radial-container" },
144
+ React.createElement(ProgressRadial, { status: "positive", size: "small", value: 50 }),
145
+ React.createElement("a", { className: "oclca-report-button", href: link, target: "_blank", rel: "noopener noreferrer" },
146
+ React.createElement(Button, { styleType: "cta" }, "Open in One Click LCA")))));
147
+ case CarbonUploadState.Failed:
148
+ return (React.createElement("div", { className: "oclca-progress-radial-container" },
149
+ React.createElement(ProgressRadial, { status: "negative", size: "small", value: 100 }),
150
+ React.createElement(Text, { variant: "leading", className: "oclca-status-text" }, "Export failed")));
145
151
  default:
146
- return (_jsx("div", Object.assign({ className: "oclca-progress-radial-container" }, { children: _jsxs(Text, { children: ["Invalid Job Status ", _jsx("span", Object.assign({ role: "img", "aria-label": "sad" }, { children: "\uD83D\uDE14" }), void 0)] }, void 0) }), void 0));
152
+ return (React.createElement("div", { className: "oclca-progress-radial-container" },
153
+ React.createElement(Text, null,
154
+ "Invalid Job Status ",
155
+ React.createElement("span", { role: "img", "aria-label": "sad" }, "\uD83D\uDE14"))));
147
156
  }
148
157
  }, []);
149
158
  useEffect(() => {
150
- if (props.isOpen && isSignedIn && (cache === null || cache === void 0 ? void 0 : cache.token)) {
159
+ if (props.isOpen && isSignedIn && cache?.token) {
151
160
  runJob(cache.token).catch((err) => {
152
- setJobStatus(JobStatus.StatusEnum.Failed);
161
+ setJobStatus(CarbonUploadState.Failed);
153
162
  toaster.negative("Error occurs while running the job. 😔");
154
163
  /* eslint-disable no-console */
155
164
  console.error(err);
@@ -157,8 +166,8 @@ const ExportModal = (props) => {
157
166
  }
158
167
  }, [props.isOpen, isSignedIn, cache, runJob]);
159
168
  useEffect(() => {
160
- if (jobStatus === JobStatus.StatusEnum.Succeeded ||
161
- jobStatus === JobStatus.StatusEnum.Failed) {
169
+ if (jobStatus === CarbonUploadState.Succeeded ||
170
+ jobStatus === CarbonUploadState.Failed) {
162
171
  if (intervalRef.current) {
163
172
  window.clearInterval(intervalRef.current);
164
173
  }
@@ -174,7 +183,21 @@ const ExportModal = (props) => {
174
183
  return;
175
184
  }
176
185
  }, [email, isValidEmail]);
177
- return (_jsxs(Modal, Object.assign({ "data-testid": "export-modal", isOpen: props.isOpen, onClose: onClose, title: null, closeOnExternalClick: false }, { children: [!isSignedIn && (_jsxs("div", Object.assign({ className: "oclca-signin" }, { children: [_jsx("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" }, void 0), _jsxs("form", Object.assign({ onSubmit: signin, className: "oclca-signin-form" }, { children: [_jsx("div", Object.assign({ className: "oclca-signin-prompt" }, { children: "Sign in to One Click LCA." }), void 0), signinError && (_jsx(Alert, Object.assign({ type: "negative", className: "oclca-signin-error" }, { children: "Incorrect email or password." }), void 0)), _jsx("div", Object.assign({ className: "oclca-signin-input" }, { children: _jsx(LabeledInput, { label: "Email", value: email, onChange: (v) => setEmail(v.target.value), type: "email", status: emailError ? "negative" : undefined, message: emailError ? "Invalid email address." : "", required: true }, void 0) }), void 0), _jsx("div", Object.assign({ className: "oclca-signin-input" }, { children: _jsx(LabeledInput, { label: "Password", value: password, onChange: (e) => setPassword(e.target.value), type: passwordIsVisible ? "text" : "password", svgIcon: passwordIsVisible ? (_jsx(SvgVisibilityHide, { onClick: () => showPassword(!passwordIsVisible) }, void 0)) : (_jsx(SvgVisibilityShow, {}, void 0)), iconDisplayStyle: "inline", required: true }, void 0) }), void 0), _jsx("div", Object.assign({ className: "oclca-signin-button-container" }, { children: _jsx(Button, Object.assign({ className: "oclca-signin-button", type: "submit", styleType: "cta", disabled: !isValidSignin() }, { children: isSigningIn ? (_jsx(ProgressRadial, { className: "oclca-signin-wait", indeterminate: true, size: "small", value: 50 }, void 0)) : ("Sign In") }), void 0) }), void 0)] }), void 0)] }), void 0)), isSignedIn && !jobStatus && (_jsx("div", Object.assign({ className: "oclca-progress-radial-container" }, { children: _jsx(ProgressRadial, { indeterminate: true, size: "large", value: 50 }, void 0) }), void 0)), isSignedIn && jobStatus && getStatusComponent(jobStatus, jobLink === null || jobLink === void 0 ? void 0 : jobLink.href)] }), void 0));
186
+ return (React.createElement(Modal, { "data-testid": "export-modal", isOpen: props.isOpen, onClose: onClose, title: null, closeOnExternalClick: false },
187
+ !isSignedIn && (React.createElement("div", { className: "oclca-signin" },
188
+ 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" }),
189
+ React.createElement("form", { onSubmit: signin, className: "oclca-signin-form" },
190
+ React.createElement("div", { className: "oclca-signin-prompt" }, "Sign in to One Click LCA."),
191
+ signinError && (React.createElement(Alert, { type: "negative", className: "oclca-signin-error" }, "Incorrect email or password.")),
192
+ React.createElement("div", { className: "oclca-signin-input" },
193
+ 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 })),
194
+ React.createElement("div", { className: "oclca-signin-input" },
195
+ 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 })),
196
+ React.createElement("div", { className: "oclca-signin-button-container" },
197
+ 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")))))),
198
+ isSignedIn && !jobStatus && (React.createElement("div", { className: "oclca-progress-radial-container" },
199
+ React.createElement(ProgressRadial, { indeterminate: true, size: "large", value: 50 }))),
200
+ isSignedIn && jobStatus && getStatusComponent(jobStatus, jobLink?.href)));
178
201
  };
179
202
  export default ExportModal;
180
203
  //# sourceMappingURL=ExportModal.js.map