@itwin/grouping-mapping-widget 0.15.1 → 0.16.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 (58) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/widget/GroupingMappingWidget.d.ts +3 -3
  3. package/lib/cjs/widget/GroupingMappingWidget.js +5 -6
  4. package/lib/cjs/widget/GroupingMappingWidget.js.map +1 -1
  5. package/lib/cjs/widget/components/Mapping.d.ts +7 -0
  6. package/lib/cjs/widget/components/Mapping.js +7 -0
  7. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  8. package/lib/cjs/widget/components/MappingImportWizardModal.d.ts +7 -0
  9. package/lib/cjs/widget/components/MappingImportWizardModal.js +38 -20
  10. package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
  11. package/lib/cjs/widget/components/MappingImportWizardModal.scss +8 -1
  12. package/lib/cjs/widget/components/SelectIModel.d.ts +9 -4
  13. package/lib/cjs/widget/components/SelectIModel.js +71 -16
  14. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  15. package/lib/cjs/widget/components/SelectIModel.scss +2 -2
  16. package/lib/cjs/widget/components/SelectITwin.d.ts +18 -0
  17. package/lib/cjs/widget/components/SelectITwin.js +115 -0
  18. package/lib/cjs/widget/components/SelectITwin.js.map +1 -0
  19. package/lib/{esm/widget/components/SelectProject.scss → cjs/widget/components/SelectITwin.scss} +6 -16
  20. package/lib/cjs/widget/components/SelectMapping.scss +1 -2
  21. package/lib/cjs/widget/components/context/IModelsClientContext.d.ts +7 -0
  22. package/lib/cjs/widget/components/context/IModelsClientContext.js +32 -0
  23. package/lib/cjs/widget/components/context/IModelsClientContext.js.map +1 -0
  24. package/lib/cjs/widget/components/context/ITwinsClientContext.d.ts +7 -0
  25. package/lib/cjs/widget/components/context/ITwinsClientContext.js +31 -0
  26. package/lib/cjs/widget/components/context/ITwinsClientContext.js.map +1 -0
  27. package/lib/esm/widget/GroupingMappingWidget.d.ts +3 -3
  28. package/lib/esm/widget/GroupingMappingWidget.js +4 -5
  29. package/lib/esm/widget/GroupingMappingWidget.js.map +1 -1
  30. package/lib/esm/widget/components/Mapping.d.ts +7 -0
  31. package/lib/esm/widget/components/Mapping.js +7 -0
  32. package/lib/esm/widget/components/Mapping.js.map +1 -1
  33. package/lib/esm/widget/components/MappingImportWizardModal.d.ts +7 -0
  34. package/lib/esm/widget/components/MappingImportWizardModal.js +38 -20
  35. package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
  36. package/lib/esm/widget/components/MappingImportWizardModal.scss +8 -1
  37. package/lib/esm/widget/components/SelectIModel.d.ts +9 -4
  38. package/lib/esm/widget/components/SelectIModel.js +73 -18
  39. package/lib/esm/widget/components/SelectIModel.js.map +1 -1
  40. package/lib/esm/widget/components/SelectIModel.scss +2 -2
  41. package/lib/esm/widget/components/SelectITwin.d.ts +18 -0
  42. package/lib/esm/widget/components/SelectITwin.js +94 -0
  43. package/lib/esm/widget/components/SelectITwin.js.map +1 -0
  44. package/lib/{cjs/widget/components/SelectProject.scss → esm/widget/components/SelectITwin.scss} +6 -16
  45. package/lib/esm/widget/components/SelectMapping.scss +1 -2
  46. package/lib/esm/widget/components/context/IModelsClientContext.d.ts +7 -0
  47. package/lib/esm/widget/components/context/IModelsClientContext.js +27 -0
  48. package/lib/esm/widget/components/context/IModelsClientContext.js.map +1 -0
  49. package/lib/esm/widget/components/context/ITwinsClientContext.d.ts +7 -0
  50. package/lib/esm/widget/components/context/ITwinsClientContext.js +26 -0
  51. package/lib/esm/widget/components/context/ITwinsClientContext.js.map +1 -0
  52. package/package.json +31 -30
  53. package/lib/cjs/widget/components/SelectProject.d.ts +0 -10
  54. package/lib/cjs/widget/components/SelectProject.js +0 -86
  55. package/lib/cjs/widget/components/SelectProject.js.map +0 -1
  56. package/lib/esm/widget/components/SelectProject.d.ts +0 -10
  57. package/lib/esm/widget/components/SelectProject.js +0 -65
  58. package/lib/esm/widget/components/SelectProject.js.map +0 -1
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- const imodel_browser_react_1 = require("@itwin/imodel-browser-react");
23
- const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
24
- const itwinui_react_1 = require("@itwin/itwinui-react");
25
- const react_1 = __importStar(require("react"));
26
- const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
27
- require("./SelectProject.scss");
28
- const tabsWithIcons = [
29
- react_1.default.createElement(itwinui_react_1.Tab, { key: "favorite", label: "Favorite projects", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgStarHollow, null) }),
30
- react_1.default.createElement(itwinui_react_1.Tab, { key: "recents", label: "Recent projects", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgCalendar, null) }),
31
- react_1.default.createElement(itwinui_react_1.Tab, { key: "all", label: "My projects", startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgList, null) }),
32
- ];
33
- const SelectProject = ({ onSelect, onCancel }) => {
34
- const { getAccessToken, prefix } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
35
- const [projectType, setProjectType] = react_1.useState(0);
36
- const [searchInput, setSearchInput] = react_1.useState("");
37
- const [activeSearchInput, setActiveSearchInput] = react_1.useState("");
38
- const [accessToken, setAccessToken] = react_1.useState();
39
- const [apiOverrides, setApiOverrides] = react_1.useState({
40
- serverEnvironmentPrefix: prefix,
41
- });
42
- const [searched, setSearched] = react_1.useState(false);
43
- react_1.useEffect(() => setApiOverrides({ serverEnvironmentPrefix: prefix }), [prefix]);
44
- react_1.useEffect(() => {
45
- const fetchAccessToken = async () => {
46
- const accessToken = await getAccessToken();
47
- setAccessToken(accessToken);
48
- };
49
- void fetchAccessToken();
50
- }, [getAccessToken]);
51
- const startSearch = react_1.useCallback(() => {
52
- if (!searchInput)
53
- return;
54
- setActiveSearchInput(searchInput);
55
- setSearched(true);
56
- }, [searchInput]);
57
- const clearSearch = react_1.useCallback(() => {
58
- setSearchInput("");
59
- setActiveSearchInput("");
60
- setSearched(false);
61
- }, []);
62
- react_1.useEffect(() => {
63
- if (searchInput.length === 0) {
64
- setSearched(false);
65
- clearSearch();
66
- }
67
- }, [searchInput, setSearched, clearSearch]);
68
- return (react_1.default.createElement("div", { className: "gmw-select-project-grid-container" },
69
- react_1.default.createElement(itwinui_react_1.HorizontalTabs, { labels: tabsWithIcons, onTabSelected: setProjectType, activeIndex: projectType, type: "borderless", contentClassName: "gmw-grid-holding-tab" },
70
- react_1.default.createElement(itwinui_react_1.LabeledInput, { displayStyle: "inline", iconDisplayStyle: "inline", className: "gmw-search-input", label: "Search", value: searchInput, placeholder: "Search....", onChange: (event) => {
71
- const { target: { value }, } = event;
72
- setSearchInput(value);
73
- }, onKeyDown: (event) => {
74
- if (event.key === "Enter") {
75
- startSearch();
76
- }
77
- }, svgIcon: searched ? (react_1.default.createElement(itwinui_react_1.IconButton, { onClick: clearSearch, styleType: "borderless" },
78
- react_1.default.createElement(itwinui_icons_react_1.SvgClose, null))) : (react_1.default.createElement(itwinui_react_1.IconButton, { onClick: startSearch, styleType: "borderless" },
79
- react_1.default.createElement(itwinui_icons_react_1.SvgSearch, null))) })),
80
- react_1.default.createElement("div", { className: "gmw-project-grid" },
81
- react_1.default.createElement(imodel_browser_react_1.ProjectGrid, { onThumbnailClick: onSelect, accessToken: accessToken, apiOverrides: apiOverrides, filterOptions: activeSearchInput, requestType: projectType === 0 ? "favorites" : projectType === 1 ? "recents" : "" })),
82
- react_1.default.createElement("div", { className: "gmw-select-project-action-panel" },
83
- react_1.default.createElement(itwinui_react_1.Button, { onClick: onCancel }, "Cancel"))));
84
- };
85
- exports.default = SelectProject;
86
- //# sourceMappingURL=SelectProject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectProject.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectProject.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 type { AccessToken } from \"@itwin/core-bentley\";\nimport type {\n ApiOverrides,\n IModelFull,\n ProjectFull,\n} from \"@itwin/imodel-browser-react\";\nimport { ProjectGrid } from \"@itwin/imodel-browser-react\";\nimport {\n SvgCalendar,\n SvgClose,\n SvgList,\n SvgSearch,\n SvgStarHollow,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n HorizontalTabs,\n IconButton,\n LabeledInput,\n Tab,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport \"./SelectProject.scss\";\n\nconst tabsWithIcons = [\n <Tab\n key=\"favorite\"\n label=\"Favorite projects\"\n startIcon={<SvgStarHollow />}\n />,\n <Tab key=\"recents\" label=\"Recent projects\" startIcon={<SvgCalendar />} />,\n <Tab key=\"all\" label=\"My projects\" startIcon={<SvgList />} />,\n];\ninterface SelectProjectProps {\n onSelect: (project: ProjectFull) => void;\n onCancel: () => void;\n}\nconst SelectProject = ({ onSelect, onCancel }: SelectProjectProps) => {\n const { getAccessToken, prefix } = useGroupingMappingApiConfig();\n const [projectType, setProjectType] = useState<number>(0);\n const [searchInput, setSearchInput] = useState<string>(\"\");\n const [activeSearchInput, setActiveSearchInput] = useState<string>(\"\");\n const [accessToken, setAccessToken] = useState<AccessToken>();\n const [apiOverrides, setApiOverrides] = useState<ApiOverrides<IModelFull[]>>({\n serverEnvironmentPrefix: prefix,\n });\n const [searched, setSearched] = useState<boolean>(false);\n\n useEffect(\n () => setApiOverrides({ serverEnvironmentPrefix: prefix }),\n [prefix]\n );\n\n useEffect(() => {\n const fetchAccessToken = async () => {\n const accessToken = await getAccessToken();\n setAccessToken(accessToken);\n };\n void fetchAccessToken();\n }, [getAccessToken]);\n\n const startSearch = useCallback(() => {\n if (!searchInput) return;\n setActiveSearchInput(searchInput);\n setSearched(true);\n }, [searchInput]);\n\n const clearSearch = useCallback(() => {\n setSearchInput(\"\");\n setActiveSearchInput(\"\");\n setSearched(false);\n }, []);\n\n useEffect(() => {\n if (searchInput.length === 0) {\n setSearched(false);\n clearSearch();\n }\n }, [searchInput, setSearched, clearSearch]);\n\n return (\n <div className=\"gmw-select-project-grid-container\">\n <HorizontalTabs\n labels={tabsWithIcons}\n onTabSelected={setProjectType}\n activeIndex={projectType}\n type={\"borderless\"}\n contentClassName=\"gmw-grid-holding-tab\"\n >\n <LabeledInput\n displayStyle=\"inline\"\n iconDisplayStyle=\"inline\"\n className=\"gmw-search-input\"\n label=\"Search\"\n value={searchInput}\n placeholder=\"Search....\"\n onChange={(event) => {\n const {\n target: { value },\n } = event;\n setSearchInput(value);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n startSearch();\n }\n }}\n svgIcon={\n searched ? (\n <IconButton onClick={clearSearch} styleType=\"borderless\">\n <SvgClose />\n </IconButton>\n ) : (\n <IconButton onClick={startSearch} styleType=\"borderless\">\n <SvgSearch />\n </IconButton>\n )\n }\n />\n </HorizontalTabs>\n <div className=\"gmw-project-grid\">\n <ProjectGrid\n onThumbnailClick={onSelect}\n accessToken={accessToken}\n apiOverrides={apiOverrides}\n filterOptions={activeSearchInput}\n requestType={\n projectType === 0 ? \"favorites\" : projectType === 1 ? \"recents\" : \"\"\n }\n />\n </div>\n <div className=\"gmw-select-project-action-panel\">\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectProject;\n"]}
@@ -1,10 +0,0 @@
1
- /// <reference types="react" />
2
- import type { ProjectFull } from "@itwin/imodel-browser-react";
3
- import "./SelectProject.scss";
4
- interface SelectProjectProps {
5
- onSelect: (project: ProjectFull) => void;
6
- onCancel: () => void;
7
- }
8
- declare const SelectProject: ({ onSelect, onCancel }: SelectProjectProps) => JSX.Element;
9
- export default SelectProject;
10
- //# sourceMappingURL=SelectProject.d.ts.map
@@ -1,65 +0,0 @@
1
- import { ProjectGrid } from "@itwin/imodel-browser-react";
2
- import { SvgCalendar, SvgClose, SvgList, SvgSearch, SvgStarHollow, } from "@itwin/itwinui-icons-react";
3
- import { Button, HorizontalTabs, IconButton, LabeledInput, Tab, } from "@itwin/itwinui-react";
4
- import React, { useCallback, useEffect, useState } from "react";
5
- import { useGroupingMappingApiConfig } from "./context/GroupingApiConfigContext";
6
- import "./SelectProject.scss";
7
- const tabsWithIcons = [
8
- React.createElement(Tab, { key: "favorite", label: "Favorite projects", startIcon: React.createElement(SvgStarHollow, null) }),
9
- React.createElement(Tab, { key: "recents", label: "Recent projects", startIcon: React.createElement(SvgCalendar, null) }),
10
- React.createElement(Tab, { key: "all", label: "My projects", startIcon: React.createElement(SvgList, null) }),
11
- ];
12
- const SelectProject = ({ onSelect, onCancel }) => {
13
- const { getAccessToken, prefix } = useGroupingMappingApiConfig();
14
- const [projectType, setProjectType] = useState(0);
15
- const [searchInput, setSearchInput] = useState("");
16
- const [activeSearchInput, setActiveSearchInput] = useState("");
17
- const [accessToken, setAccessToken] = useState();
18
- const [apiOverrides, setApiOverrides] = useState({
19
- serverEnvironmentPrefix: prefix,
20
- });
21
- const [searched, setSearched] = useState(false);
22
- useEffect(() => setApiOverrides({ serverEnvironmentPrefix: prefix }), [prefix]);
23
- useEffect(() => {
24
- const fetchAccessToken = async () => {
25
- const accessToken = await getAccessToken();
26
- setAccessToken(accessToken);
27
- };
28
- void fetchAccessToken();
29
- }, [getAccessToken]);
30
- const startSearch = useCallback(() => {
31
- if (!searchInput)
32
- return;
33
- setActiveSearchInput(searchInput);
34
- setSearched(true);
35
- }, [searchInput]);
36
- const clearSearch = useCallback(() => {
37
- setSearchInput("");
38
- setActiveSearchInput("");
39
- setSearched(false);
40
- }, []);
41
- useEffect(() => {
42
- if (searchInput.length === 0) {
43
- setSearched(false);
44
- clearSearch();
45
- }
46
- }, [searchInput, setSearched, clearSearch]);
47
- return (React.createElement("div", { className: "gmw-select-project-grid-container" },
48
- React.createElement(HorizontalTabs, { labels: tabsWithIcons, onTabSelected: setProjectType, activeIndex: projectType, type: "borderless", contentClassName: "gmw-grid-holding-tab" },
49
- React.createElement(LabeledInput, { displayStyle: "inline", iconDisplayStyle: "inline", className: "gmw-search-input", label: "Search", value: searchInput, placeholder: "Search....", onChange: (event) => {
50
- const { target: { value }, } = event;
51
- setSearchInput(value);
52
- }, onKeyDown: (event) => {
53
- if (event.key === "Enter") {
54
- startSearch();
55
- }
56
- }, svgIcon: searched ? (React.createElement(IconButton, { onClick: clearSearch, styleType: "borderless" },
57
- React.createElement(SvgClose, null))) : (React.createElement(IconButton, { onClick: startSearch, styleType: "borderless" },
58
- React.createElement(SvgSearch, null))) })),
59
- React.createElement("div", { className: "gmw-project-grid" },
60
- React.createElement(ProjectGrid, { onThumbnailClick: onSelect, accessToken: accessToken, apiOverrides: apiOverrides, filterOptions: activeSearchInput, requestType: projectType === 0 ? "favorites" : projectType === 1 ? "recents" : "" })),
61
- React.createElement("div", { className: "gmw-select-project-action-panel" },
62
- React.createElement(Button, { onClick: onCancel }, "Cancel"))));
63
- };
64
- export default SelectProject;
65
- //# sourceMappingURL=SelectProject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectProject.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectProject.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 type { AccessToken } from \"@itwin/core-bentley\";\nimport type {\n ApiOverrides,\n IModelFull,\n ProjectFull,\n} from \"@itwin/imodel-browser-react\";\nimport { ProjectGrid } from \"@itwin/imodel-browser-react\";\nimport {\n SvgCalendar,\n SvgClose,\n SvgList,\n SvgSearch,\n SvgStarHollow,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n HorizontalTabs,\n IconButton,\n LabeledInput,\n Tab,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport \"./SelectProject.scss\";\n\nconst tabsWithIcons = [\n <Tab\n key=\"favorite\"\n label=\"Favorite projects\"\n startIcon={<SvgStarHollow />}\n />,\n <Tab key=\"recents\" label=\"Recent projects\" startIcon={<SvgCalendar />} />,\n <Tab key=\"all\" label=\"My projects\" startIcon={<SvgList />} />,\n];\ninterface SelectProjectProps {\n onSelect: (project: ProjectFull) => void;\n onCancel: () => void;\n}\nconst SelectProject = ({ onSelect, onCancel }: SelectProjectProps) => {\n const { getAccessToken, prefix } = useGroupingMappingApiConfig();\n const [projectType, setProjectType] = useState<number>(0);\n const [searchInput, setSearchInput] = useState<string>(\"\");\n const [activeSearchInput, setActiveSearchInput] = useState<string>(\"\");\n const [accessToken, setAccessToken] = useState<AccessToken>();\n const [apiOverrides, setApiOverrides] = useState<ApiOverrides<IModelFull[]>>({\n serverEnvironmentPrefix: prefix,\n });\n const [searched, setSearched] = useState<boolean>(false);\n\n useEffect(\n () => setApiOverrides({ serverEnvironmentPrefix: prefix }),\n [prefix]\n );\n\n useEffect(() => {\n const fetchAccessToken = async () => {\n const accessToken = await getAccessToken();\n setAccessToken(accessToken);\n };\n void fetchAccessToken();\n }, [getAccessToken]);\n\n const startSearch = useCallback(() => {\n if (!searchInput) return;\n setActiveSearchInput(searchInput);\n setSearched(true);\n }, [searchInput]);\n\n const clearSearch = useCallback(() => {\n setSearchInput(\"\");\n setActiveSearchInput(\"\");\n setSearched(false);\n }, []);\n\n useEffect(() => {\n if (searchInput.length === 0) {\n setSearched(false);\n clearSearch();\n }\n }, [searchInput, setSearched, clearSearch]);\n\n return (\n <div className=\"gmw-select-project-grid-container\">\n <HorizontalTabs\n labels={tabsWithIcons}\n onTabSelected={setProjectType}\n activeIndex={projectType}\n type={\"borderless\"}\n contentClassName=\"gmw-grid-holding-tab\"\n >\n <LabeledInput\n displayStyle=\"inline\"\n iconDisplayStyle=\"inline\"\n className=\"gmw-search-input\"\n label=\"Search\"\n value={searchInput}\n placeholder=\"Search....\"\n onChange={(event) => {\n const {\n target: { value },\n } = event;\n setSearchInput(value);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n startSearch();\n }\n }}\n svgIcon={\n searched ? (\n <IconButton onClick={clearSearch} styleType=\"borderless\">\n <SvgClose />\n </IconButton>\n ) : (\n <IconButton onClick={startSearch} styleType=\"borderless\">\n <SvgSearch />\n </IconButton>\n )\n }\n />\n </HorizontalTabs>\n <div className=\"gmw-project-grid\">\n <ProjectGrid\n onThumbnailClick={onSelect}\n accessToken={accessToken}\n apiOverrides={apiOverrides}\n filterOptions={activeSearchInput}\n requestType={\n projectType === 0 ? \"favorites\" : projectType === 1 ? \"recents\" : \"\"\n }\n />\n </div>\n <div className=\"gmw-select-project-action-panel\">\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectProject;\n"]}