@itwin/grouping-mapping-widget 0.7.0 → 0.8.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 (33) hide show
  1. package/lib/cjs/widget/components/GroupPropertyAction.d.ts +1 -1
  2. package/lib/cjs/widget/components/GroupPropertyAction.js +149 -302
  3. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  4. package/lib/cjs/widget/components/GroupPropertyAction.scss +82 -8
  5. package/lib/cjs/widget/components/GroupPropertyUtils.d.ts +21 -0
  6. package/lib/cjs/widget/components/GroupPropertyUtils.js +287 -0
  7. package/lib/cjs/widget/components/GroupPropertyUtils.js.map +1 -0
  8. package/lib/cjs/widget/components/HorizontalTile.d.ts +5 -3
  9. package/lib/cjs/widget/components/HorizontalTile.js +9 -6
  10. package/lib/cjs/widget/components/HorizontalTile.js.map +1 -1
  11. package/lib/cjs/widget/components/HorizontalTile.scss +46 -22
  12. package/lib/cjs/widget/components/SelectProject.js +2 -0
  13. package/lib/cjs/widget/components/SelectProject.js.map +1 -1
  14. package/lib/cjs/widget/components/SortableHorizontalTile.d.ts +8 -0
  15. package/lib/cjs/widget/components/SortableHorizontalTile.js +51 -0
  16. package/lib/cjs/widget/components/SortableHorizontalTile.js.map +1 -0
  17. package/lib/esm/widget/components/GroupPropertyAction.d.ts +1 -1
  18. package/lib/esm/widget/components/GroupPropertyAction.js +151 -304
  19. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  20. package/lib/esm/widget/components/GroupPropertyAction.scss +82 -8
  21. package/lib/esm/widget/components/GroupPropertyUtils.d.ts +21 -0
  22. package/lib/esm/widget/components/GroupPropertyUtils.js +280 -0
  23. package/lib/esm/widget/components/GroupPropertyUtils.js.map +1 -0
  24. package/lib/esm/widget/components/HorizontalTile.d.ts +5 -3
  25. package/lib/esm/widget/components/HorizontalTile.js +9 -6
  26. package/lib/esm/widget/components/HorizontalTile.js.map +1 -1
  27. package/lib/esm/widget/components/HorizontalTile.scss +46 -22
  28. package/lib/esm/widget/components/SelectProject.js +2 -0
  29. package/lib/esm/widget/components/SelectProject.js.map +1 -1
  30. package/lib/esm/widget/components/SortableHorizontalTile.d.ts +8 -0
  31. package/lib/esm/widget/components/SortableHorizontalTile.js +30 -0
  32. package/lib/esm/widget/components/SortableHorizontalTile.js.map +1 -0
  33. package/package.json +8 -3
@@ -1,13 +1,15 @@
1
1
  import type { ReactNode } from "react";
2
2
  import "./HorizontalTile.scss";
3
- interface HorizontalTileProps {
3
+ export interface HorizontalTileProps {
4
4
  title: string;
5
5
  actionGroup: ReactNode;
6
6
  subText?: string;
7
+ onClick?: () => void;
7
8
  onClickTitle?: () => void;
8
9
  titleTooltip?: string;
9
10
  subtextToolTip?: string;
11
+ selected?: boolean;
12
+ dragHandle?: ReactNode;
10
13
  }
11
- export declare const HorizontalTile: ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, actionGroup }: HorizontalTileProps) => JSX.Element;
12
- export {};
14
+ export declare const HorizontalTile: (props: HorizontalTileProps) => JSX.Element;
13
15
  //# sourceMappingURL=HorizontalTile.d.ts.map
@@ -7,12 +7,15 @@ exports.HorizontalTile = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const itwinui_react_1 = require("@itwin/itwinui-react");
9
9
  require("./HorizontalTile.scss");
10
- const HorizontalTile = ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, actionGroup }) => {
11
- return (react_1.default.createElement("div", { className: "gmw-horizontal-tile-container", "data-testid": "gmw-horizontal-tile" },
12
- react_1.default.createElement("div", { className: "gmw-body" },
13
- react_1.default.createElement(itwinui_react_1.Text, { className: `gmw-body-text ${onClickTitle ? "iui-anchor" : ""}`, onClick: onClickTitle, variant: "body", title: titleTooltip }, title),
14
- subText && react_1.default.createElement(itwinui_react_1.Text, { className: "gmw-body-text", isMuted: true, title: subtextToolTip, variant: "small" }, subText)),
15
- react_1.default.createElement("div", { className: "gmw-action-button", "data-testid": "tile-action-button" }, actionGroup)));
10
+ const classnames_1 = __importDefault(require("classnames"));
11
+ const HorizontalTile = (props) => {
12
+ return (react_1.default.createElement("div", { className: classnames_1.default("gmw-horizontal-tile-container", { "gmw-horizontal-tile-selected": props.selected }), onClick: props.onClick, "data-testid": "gmw-horizontal-tile" },
13
+ react_1.default.createElement("div", { className: "gmw-body-container" },
14
+ props.dragHandle,
15
+ react_1.default.createElement("div", { className: "gmw-body" },
16
+ react_1.default.createElement(itwinui_react_1.Text, { className: classnames_1.default("gmw-body-text", { "iui-anchor": !!props.onClickTitle }), onClick: props.onClickTitle, variant: "body", title: props.titleTooltip }, props.title),
17
+ props.subText && react_1.default.createElement(itwinui_react_1.Text, { className: "gmw-body-text", isMuted: true, title: props.subtextToolTip, variant: "small" }, props.subText))),
18
+ react_1.default.createElement("div", { className: "gmw-action-button", "data-testid": "tile-action-button" }, props.actionGroup)));
16
19
  };
17
20
  exports.HorizontalTile = HorizontalTile;
18
21
  //# sourceMappingURL=HorizontalTile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/HorizontalTile.tsx"],"names":[],"mappings":";;;;;;AAKA,kDAA0B;AAC1B,wDAA4C;AAC5C,iCAA+B;AAWxB,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAsB,EAAE,EAAE;IAEhI,OAAO,CACL,uCAAK,SAAS,EAAC,+BAA+B,iBAAa,qBAAqB;QAC9E,uCAAK,SAAS,EAAC,UAAU;YACvB,8BAAC,oBAAI,IAAC,SAAS,EAAE,iBAAiB,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,EAAC,KAAK,EAAE,YAAY,IAAG,KAAK,CAAQ;YAC9I,OAAO,IAAI,8BAAC,oBAAI,IAAC,SAAS,EAAC,eAAe,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAC,OAAO,IAAE,OAAO,CAAQ,CAC9G;QACN,uCAAK,SAAS,EAAC,mBAAmB,iBAAa,oBAAoB,IAChE,WAAW,CACR,CACF,CACP,CAAC;AAEJ,CAAC,CAAC;AAdW,QAAA,cAAc,kBAczB","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 { ReactNode } from \"react\";\nimport React from \"react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./HorizontalTile.scss\";\n\ninterface HorizontalTileProps {\n title: string;\n actionGroup: ReactNode;\n subText?: string;\n onClickTitle?: () => void;\n titleTooltip?: string;\n subtextToolTip?: string;\n}\n\nexport const HorizontalTile = ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, actionGroup}: HorizontalTileProps) => {\n\n return (\n <div className=\"gmw-horizontal-tile-container\" data-testid=\"gmw-horizontal-tile\">\n <div className=\"gmw-body\">\n <Text className={`gmw-body-text ${onClickTitle ? \"iui-anchor\" : \"\"}`} onClick={onClickTitle} variant=\"body\" title={titleTooltip}>{title}</Text>\n {subText && <Text className=\"gmw-body-text\" isMuted={true} title={subtextToolTip} variant=\"small\">{subText}</Text>}\n </div>\n <div className=\"gmw-action-button\" data-testid=\"tile-action-button\">\n {actionGroup}\n </div>\n </div>\n );\n\n};\n"]}
1
+ {"version":3,"file":"HorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/HorizontalTile.tsx"],"names":[],"mappings":";;;;;;AAKA,kDAA0B;AAC1B,wDAA4C;AAC5C,iCAA+B;AAC/B,4DAAoC;AAc7B,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,EAAE;IAE3D,OAAO,CACL,uCAAK,SAAS,EAAE,oBAAU,CAAC,+BAA+B,EAAE,EAAE,8BAA8B,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,iBAAc,qBAAqB;QACxK,uCAAK,SAAS,EAAC,oBAAoB;YAChC,KAAK,CAAC,UAAU;YACjB,uCAAK,SAAS,EAAC,UAAU;gBACvB,8BAAC,oBAAI,IAAC,SAAS,EAAE,oBAAU,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAC,MAAM,EAAC,KAAK,EAAE,KAAK,CAAC,YAAY,IAAG,KAAK,CAAC,KAAK,CAAQ;gBAChL,KAAK,CAAC,OAAO,IAAI,8BAAC,oBAAI,IAAC,SAAS,EAAC,eAAe,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAC,OAAO,IAAE,KAAK,CAAC,OAAO,CAAQ,CAChI,CACF;QACN,uCAAK,SAAS,EAAC,mBAAmB,iBAAa,oBAAoB,IAChE,KAAK,CAAC,WAAW,CACd,CACF,CACP,CAAC;AAEJ,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB","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 { ReactNode } from \"react\";\nimport React from \"react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./HorizontalTile.scss\";\nimport classNames from \"classnames\";\n\nexport interface HorizontalTileProps {\n title: string;\n actionGroup: ReactNode;\n subText?: string;\n onClick?: () => void;\n onClickTitle?: () => void;\n titleTooltip?: string;\n subtextToolTip?: string;\n selected?: boolean;\n dragHandle?: ReactNode;\n}\n\nexport const HorizontalTile = (props: HorizontalTileProps) => {\n\n return (\n <div className={classNames(\"gmw-horizontal-tile-container\", { \"gmw-horizontal-tile-selected\": props.selected })} onClick={props.onClick} data-testid=\"gmw-horizontal-tile\">\n <div className=\"gmw-body-container\">\n {props.dragHandle}\n <div className=\"gmw-body\">\n <Text className={classNames(\"gmw-body-text\", { \"iui-anchor\": !!props.onClickTitle })} onClick={props.onClickTitle} variant=\"body\" title={props.titleTooltip}>{props.title}</Text>\n {props.subText && <Text className=\"gmw-body-text\" isMuted={true} title={props.subtextToolTip} variant=\"small\">{props.subText}</Text>}\n </div>\n </div>\n <div className=\"gmw-action-button\" data-testid=\"tile-action-button\">\n {props.actionGroup}\n </div>\n </div>\n );\n\n};\n"]}
@@ -2,31 +2,55 @@
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';
5
+ @import "~@itwin/itwinui-css/scss/variables";
6
+ @import "~@itwin/itwinui-css/scss/icon/index";
6
7
 
7
- .gmw-horizontal-tile-container {
8
- display: flex;
9
- justify-content: space-between;
10
- border-radius: 5px;
11
- background-color: var(--iui-color-background-2);
12
- height: $iui-baseline * 4;
13
- padding: 5.5px $iui-s;
14
- .gmw-body {
8
+ .gmw-horizontal-tile {
9
+ &-container {
15
10
  display: flex;
16
- flex-direction: column;
17
- min-width: 0;
18
- justify-content: center;
19
- &-text {
20
- overflow: hidden;
21
- white-space: nowrap;
22
- text-overflow: ellipsis;
11
+ justify-content: space-between;
12
+ border-radius: 5px;
13
+ background-color: var(--iui-color-background-2);
14
+ min-height: $iui-baseline * 4;
15
+ padding: 5.5px $iui-s;
16
+
17
+ .gmw-body-container {
18
+ display: flex;
19
+ min-width: 0;
20
+ .gmw-drag-icon {
21
+ @include iui-icons-large();
22
+ justify-content: center;
23
+ height: 100%;
24
+ }
25
+ .gmw-body {
26
+ display: flex;
27
+ flex-direction: column;
28
+ min-width: 0;
29
+ justify-content: center;
30
+ &-text {
31
+ overflow: hidden;
32
+ white-space: nowrap;
33
+ text-overflow: ellipsis;
34
+ }
35
+ }
36
+ }
37
+ .gmw-action-button {
38
+ margin-left: 0;
39
+ align-self: center;
40
+ min-width: 36px;
41
+ margin-right: $iui-xs;
42
+ flex-shrink: 0;
23
43
  }
24
44
  }
25
- .gmw-action-button {
26
- margin-left: 0;
27
- align-self: center;
28
- min-width: 36px;
29
- margin-right: $iui-xs;
30
- flex-shrink: 0;
45
+
46
+ &-selected {
47
+ @include themed {
48
+ border: 1px solid t(iui-color-foreground-primary);
49
+ background: linear-gradient(
50
+ rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6)),
51
+ rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6))
52
+ ),
53
+ linear-gradient(t(iui-color-background-1), t(iui-color-background-1));
54
+ }
31
55
  }
32
56
  }
@@ -49,6 +49,8 @@ const SelectProject = ({ onSelect, onCancel }) => {
49
49
  void fetchAccessToken();
50
50
  }, [getAccessToken]);
51
51
  const startSearch = react_1.useCallback(() => {
52
+ if (!searchInput)
53
+ return;
52
54
  setActiveSearchInput(searchInput);
53
55
  setSearched(true);
54
56
  }, [searchInput]);
@@ -1 +1 @@
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 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
+ {"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"]}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { HorizontalTileProps } from "./HorizontalTile";
3
+ interface SortableHorizontalTileProps extends HorizontalTileProps {
4
+ id: string;
5
+ }
6
+ declare const SortableHorizontalTile: ({ id, ...props }: SortableHorizontalTileProps) => JSX.Element;
7
+ export default SortableHorizontalTile;
8
+ //# sourceMappingURL=SortableHorizontalTile.d.ts.map
@@ -0,0 +1,51 @@
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
+ /*---------------------------------------------------------------------------------------------
23
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
24
+ * See LICENSE.md in the project root for license terms and full copyright notice.
25
+ *--------------------------------------------------------------------------------------------*/
26
+ const react_1 = __importStar(require("react"));
27
+ const sortable_1 = require("@dnd-kit/sortable");
28
+ const HorizontalTile_1 = require("./HorizontalTile");
29
+ const utilities_1 = require("@dnd-kit/utilities");
30
+ const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
31
+ const SortableHorizontalTile = ({ id, ...props }) => {
32
+ const { attributes, listeners, isDragging, setNodeRef, transform, transition, } = sortable_1.useSortable({ id });
33
+ const style = {
34
+ transform: utilities_1.CSS.Transform.toString(transform),
35
+ transition,
36
+ };
37
+ react_1.useEffect(() => {
38
+ if (!isDragging) {
39
+ return;
40
+ }
41
+ document.body.style.cursor = "grabbing";
42
+ return () => {
43
+ document.body.style.cursor = "";
44
+ };
45
+ }, [isDragging]);
46
+ return (react_1.default.createElement("div", { ref: setNodeRef, ...attributes, style: { ...style, visibility: isDragging ? "hidden" : "visible" } },
47
+ react_1.default.createElement(HorizontalTile_1.HorizontalTile, { dragHandle: react_1.default.createElement("div", { className: "gmw-drag-icon", style: { cursor: "grab" }, title: "Drag & Drop", ...listeners },
48
+ react_1.default.createElement(itwinui_icons_react_1.SvgDragHandleVertical, null)), ...props })));
49
+ };
50
+ exports.default = SortableHorizontalTile;
51
+ //# sourceMappingURL=SortableHorizontalTile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableHorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/SortableHorizontalTile.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,+CAAyC;AACzC,gDAAgD;AAEhD,qDAAkD;AAClD,kDAAyC;AACzC,oEAAmE;AAMnE,MAAM,sBAAsB,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAA+B,EAAE,EAAE;IAC/E,MAAM,EACJ,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,GACX,GAAG,sBAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAExB,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,eAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5C,UAAU;KACX,CAAC;IAEF,iBAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,uCACE,GAAG,EAAE,UAAU,KACX,UAAU,EACd,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;QAElE,8BAAC,+BAAc,IACb,UAAU,EACR,uCAAK,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAC,aAAa,KAAK,SAAS;gBACzF,8BAAC,2CAAqB,OAAG,CACrB,KAEJ,KAAK,GACT,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,sBAAsB,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, { useEffect } from \"react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport type { HorizontalTileProps } from \"./HorizontalTile\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { SvgDragHandleVertical } from \"@itwin/itwinui-icons-react\";\n\ninterface SortableHorizontalTileProps extends HorizontalTileProps {\n id: string;\n}\n\nconst SortableHorizontalTile = ({ id, ...props }: SortableHorizontalTileProps) => {\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef,\n transform,\n transition,\n } = useSortable({ id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n useEffect(() => {\n if (!isDragging) {\n return;\n }\n document.body.style.cursor = \"grabbing\";\n return () => {\n document.body.style.cursor = \"\";\n };\n }, [isDragging]);\n\n return (\n <div\n ref={setNodeRef}\n {...attributes}\n style={{ ...style, visibility: isDragging ? \"hidden\" : \"visible\" }}\n >\n <HorizontalTile\n dragHandle={\n <div className=\"gmw-drag-icon\" style={{ cursor: \"grab\" }} title=\"Drag & Drop\" {...listeners}>\n <SvgDragHandleVertical />\n </div>\n }\n {...props}\n />\n </div>\n );\n};\n\nexport default SortableHorizontalTile;\n"]}
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import type { KeySet } from "@itwin/presentation-common";
3
3
  import type { SelectOption } from "@itwin/itwinui-react";
4
- import "./GroupPropertyAction.scss";
5
4
  import { QuantityType } from "@itwin/insights-client";
5
+ import "./GroupPropertyAction.scss";
6
6
  interface GroupPropertyActionProps {
7
7
  iModelId: string;
8
8
  mappingId: string;