@gooddata/sdk-ui-semantic-search 10.8.0-alpha.9 → 10.9.0-alpha.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 (67) hide show
  1. package/esm/ResultsItem.d.ts +3 -33
  2. package/esm/ResultsItem.d.ts.map +1 -1
  3. package/esm/ResultsItem.js +12 -67
  4. package/esm/ResultsItem.js.map +1 -1
  5. package/esm/SearchResultsDropdownList.d.ts +4 -3
  6. package/esm/SearchResultsDropdownList.d.ts.map +1 -1
  7. package/esm/SearchResultsDropdownList.js +6 -4
  8. package/esm/SearchResultsDropdownList.js.map +1 -1
  9. package/esm/SemanticSearch.d.ts.map +1 -1
  10. package/esm/SemanticSearch.js +23 -7
  11. package/esm/SemanticSearch.js.map +1 -1
  12. package/esm/hooks/useListSelector.d.ts +1 -1
  13. package/esm/hooks/useListSelector.d.ts.map +1 -1
  14. package/esm/hooks/useListSelector.js +3 -3
  15. package/esm/hooks/useListSelector.js.map +1 -1
  16. package/esm/hooks/useSemanticSearch.d.ts +3 -2
  17. package/esm/hooks/useSemanticSearch.d.ts.map +1 -1
  18. package/esm/hooks/useSemanticSearch.js +4 -11
  19. package/esm/hooks/useSemanticSearch.js.map +1 -1
  20. package/esm/internal/AnnotatedResultsItem.d.ts +5 -0
  21. package/esm/internal/AnnotatedResultsItem.d.ts.map +1 -0
  22. package/esm/internal/AnnotatedResultsItem.js +30 -0
  23. package/esm/internal/AnnotatedResultsItem.js.map +1 -0
  24. package/esm/internal/HeaderSearchButton.d.ts +12 -3
  25. package/esm/internal/HeaderSearchButton.d.ts.map +1 -1
  26. package/esm/internal/HeaderSearchButton.js +5 -3
  27. package/esm/internal/HeaderSearchButton.js.map +1 -1
  28. package/esm/internal/HistoryItem.d.ts +8 -0
  29. package/esm/internal/HistoryItem.d.ts.map +1 -0
  30. package/esm/internal/HistoryItem.js +21 -0
  31. package/esm/internal/HistoryItem.js.map +1 -0
  32. package/esm/internal/SearchList.d.ts +30 -0
  33. package/esm/internal/SearchList.d.ts.map +1 -0
  34. package/esm/internal/SearchList.js +16 -0
  35. package/esm/internal/SearchList.js.map +1 -0
  36. package/esm/internal/SearchOverlay.d.ts +3 -3
  37. package/esm/internal/SearchOverlay.d.ts.map +1 -1
  38. package/esm/internal/SearchOverlay.js +68 -8
  39. package/esm/internal/SearchOverlay.js.map +1 -1
  40. package/esm/internal/UpdateDate.d.ts +10 -0
  41. package/esm/internal/UpdateDate.d.ts.map +1 -0
  42. package/esm/internal/UpdateDate.js +29 -0
  43. package/esm/internal/UpdateDate.js.map +1 -0
  44. package/esm/sdk-ui-semantic-search.d.ts +4 -3
  45. package/esm/types.d.ts +33 -0
  46. package/esm/types.d.ts.map +1 -0
  47. package/esm/types.js +3 -0
  48. package/esm/types.js.map +1 -0
  49. package/esm/utils/renderDetails.d.ts +8 -0
  50. package/esm/utils/renderDetails.d.ts.map +1 -0
  51. package/esm/utils/renderDetails.js +52 -0
  52. package/esm/utils/renderDetails.js.map +1 -0
  53. package/esm/utils/renderItemIcon.d.ts +9 -0
  54. package/esm/utils/renderItemIcon.d.ts.map +1 -0
  55. package/esm/utils/renderItemIcon.js +32 -0
  56. package/esm/utils/renderItemIcon.js.map +1 -0
  57. package/package.json +7 -7
  58. package/styles/css/internal.css +58 -16
  59. package/styles/css/internal.css.map +1 -1
  60. package/styles/css/main.css +52 -15
  61. package/styles/css/main.css.map +1 -1
  62. package/styles/scss/internal.scss +8 -1
  63. package/styles/scss/main.scss +61 -24
  64. package/esm/internal/SearchResultsList.d.ts +0 -26
  65. package/esm/internal/SearchResultsList.d.ts.map +0 -1
  66. package/esm/internal/SearchResultsList.js +0 -16
  67. package/esm/internal/SearchResultsList.js.map +0 -1
@@ -1,39 +1,9 @@
1
1
  import * as React from "react";
2
- import { ISemanticSearchResultItemWithUrl } from "@gooddata/sdk-model";
3
- export declare const ITEM_HEIGHT = 45;
4
- /**
5
- * Props for the ResultsItem component.
6
- * @internal
7
- */
8
- export type ResultsItemProps = {
9
- /**
10
- * The item to render.
11
- */
12
- item: ISemanticSearchResultItemWithUrl;
13
- /**
14
- * The height of the item.
15
- */
16
- height: number;
17
- /**
18
- * The width of the item.
19
- */
20
- width: number;
21
- /**
22
- * Whether the item is selected.
23
- */
24
- active: boolean;
25
- /**
26
- * Callback to trigger when the item is hovered.
27
- */
28
- onHover: (item: ISemanticSearchResultItemWithUrl) => void;
29
- /**
30
- * Callback to trigger when the item is clicked.
31
- */
32
- onSelect: (item: ISemanticSearchResultItemWithUrl) => void;
33
- };
2
+ import { ISemanticSearchResultItem } from "@gooddata/sdk-model";
3
+ import { ListItemProps } from "./types.js";
34
4
  /**
35
5
  * A single result item in the search results.
36
6
  * @internal
37
7
  */
38
- export declare const ResultsItem: React.FC<ResultsItemProps>;
8
+ export declare const ResultsItem: React.FC<ListItemProps<ISemanticSearchResultItem>>;
39
9
  //# sourceMappingURL=ResultsItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResultsItem.d.ts","sourceRoot":"","sources":["../src/ResultsItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAKvE,eAAO,MAAM,WAAW,KAAK,CAAC;AAG9B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,IAAI,EAAE,gCAAgC,CAAC;IACvC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,gCAAgC,KAAK,IAAI,CAAC;IAC1D;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,gCAAgC,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA8ClD,CAAC"}
1
+ {"version":3,"file":"ResultsItem.d.ts","sourceRoot":"","sources":["../src/ResultsItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK3C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CA2B1E,CAAC"}
@@ -1,78 +1,23 @@
1
1
  // (C) 2024 GoodData Corporation
2
2
  import * as React from "react";
3
- import classnames from "classnames";
4
- import { Bubble, BubbleHoverTrigger, EllipsisText, Icon, Typography } from "@gooddata/sdk-ui-kit";
5
3
  import { useTheme } from "@gooddata/sdk-ui-theme-provider";
6
- import { FormattedMessage } from "react-intl";
7
- export const ITEM_HEIGHT = 45;
8
- const BUBBLE_ALIGN_POINTS = [{ align: "bc tr", offset: { x: 2, y: -4 } }];
4
+ import classnames from "classnames";
5
+ import { renderItemIcon } from "./utils/renderItemIcon.js";
6
+ import { renderDetails } from "./utils/renderDetails.js";
9
7
  /**
10
8
  * A single result item in the search results.
11
9
  * @internal
12
10
  */
13
- export const ResultsItem = ({ item, onHover, onSelect, active }) => {
11
+ export const ResultsItem = ({ listItem, isActive, setActive, onSelect, }) => {
14
12
  const theme = useTheme();
15
- const onMouseEnter = (e) => {
16
- // Prevent multiple triggers
17
- if (e.target !== e.currentTarget) {
18
- return;
19
- }
20
- onHover(item);
21
- };
22
- const onClick = (e) => {
23
- e.preventDefault();
24
- onSelect(item);
25
- };
26
- const className = classnames({
27
- "gd-semantic-search__results-item": true,
28
- "gd-semantic-search__results-item--active": active,
29
- });
30
13
  // Use mouse enter with the target check instead of hover to prevent multiple triggers
31
- return (React.createElement("a", { className: className, onMouseEnter: onMouseEnter, onClick: onClick, href: item.url },
32
- React.createElement("span", { className: "gd-semantic-search__results-item__icon" }, renderItemIcon(item)),
33
- React.createElement("span", { className: "gd-semantic-search__results-item__text" }, item.title),
34
- React.createElement("span", { className: "gd-semantic-search__results-item__details" },
35
- React.createElement(BubbleHoverTrigger, { eventsOnBubble: true },
36
- React.createElement(Icon.QuestionMark, { color: theme?.palette?.complementary?.c7 ?? "#6D7680" }),
37
- React.createElement(Bubble, { className: "bubble-light gd-semantic-search__bubble", alignPoints: BUBBLE_ALIGN_POINTS, arrowStyle: { display: "none" } },
38
- React.createElement("div", { className: "gd-semantic-search__results-item__details__contents" },
39
- React.createElement(Typography, { tagName: "h3" }, item.title),
40
- renderIfHasDescription(item),
41
- React.createElement(FormattedMessage, { tagName: "h4", id: "semantic-search.id" }),
42
- React.createElement(Typography, { tagName: "p" }, item.id)))))));
43
- };
44
- /**
45
- * Render the description if it is different from the title.
46
- */
47
- const renderIfHasDescription = (item) => {
48
- if (item.description && item.description !== item.title) {
49
- return React.createElement(EllipsisText, { maxLines: 7, text: item.description });
50
- }
51
- return null;
52
- };
53
- /**
54
- * Pick an icon according to the item type.
55
- */
56
- const renderItemIcon = (item) => {
57
- switch (item.type) {
58
- case "dashboard":
59
- return React.createElement(Icon.Dashboard, null);
60
- case "visualization":
61
- return React.createElement(Icon.Insight, null);
62
- case "dataset":
63
- return React.createElement(Icon.Dataset, null);
64
- case "attribute":
65
- return React.createElement(Icon.Attribute, null);
66
- case "label":
67
- return React.createElement(Icon.Label, null);
68
- case "fact":
69
- return React.createElement(Icon.Fact, null);
70
- case "metric":
71
- return React.createElement(Icon.Metric, null);
72
- case "date":
73
- return React.createElement(Icon.Date, null);
74
- default:
75
- return null;
76
- }
14
+ return (React.createElement("span", { className: classnames({
15
+ "gd-semantic-search__results-item": true,
16
+ "gd-semantic-search__results-item--active": isActive,
17
+ }), onPointerOver: () => setActive(listItem), onClick: (e) => onSelect(listItem, e.nativeEvent) },
18
+ React.createElement("span", { className: "gd-semantic-search__results-item__icon" }, renderItemIcon(listItem, { color: theme?.palette?.complementary?.c5 ?? "#B0BECA" })),
19
+ React.createElement("span", { className: "gd-semantic-search__results-item__text gd-semantic-search__results-item__text--result" },
20
+ React.createElement("span", { className: "gd-semantic-search__results-item__text__1" }, listItem.item.title)),
21
+ isActive ? renderDetails(listItem, theme) : null));
77
22
  };
78
23
  //# sourceMappingURL=ResultsItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResultsItem.js","sourceRoot":"","sources":["../src/ResultsItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResultsItem.js","sourceRoot":"","sources":["../src/ResultsItem.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAuD,CAAC,EAC5E,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,sFAAsF;IACtF,OAAO,CACH,8BACI,SAAS,EAAE,UAAU,CAAC;YAClB,kCAAkC,EAAE,IAAI;YACxC,0CAA0C,EAAE,QAAQ;SACvD,CAAC,EACF,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC;QAEjD,8BAAM,SAAS,EAAC,wCAAwC,IACnD,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC,CACjF;QACP,8BAAM,SAAS,EAAC,uFAAuF;YACnG,8BAAM,SAAS,EAAC,2CAA2C,IAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAQ,CACrF;QACN,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9C,CACV,CAAC;AACN,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
- import { ISemanticSearchResultItemWithUrl } from "@gooddata/sdk-model";
2
+ import { ISemanticSearchResultItem } from "@gooddata/sdk-model";
3
+ import { ListItem } from "./types.js";
3
4
  /**
4
5
  * Search results props.
5
6
  * @internal
@@ -8,7 +9,7 @@ type SearchResultsDropdownListProps = {
8
9
  /**
9
10
  * Search result items.
10
11
  */
11
- searchResults: ISemanticSearchResultItemWithUrl[];
12
+ searchResults: ListItem<ISemanticSearchResultItem>[];
12
13
  /**
13
14
  * Loading flag.
14
15
  */
@@ -24,7 +25,7 @@ type SearchResultsDropdownListProps = {
24
25
  /**
25
26
  * Callback for item selection.
26
27
  */
27
- onSelect: (item: ISemanticSearchResultItemWithUrl) => void;
28
+ onSelect: (item: ISemanticSearchResultItem) => void;
28
29
  };
29
30
  /**
30
31
  * A dropdown list with the search results.
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResultsDropdownList.d.ts","sourceRoot":"","sources":["../src/SearchResultsDropdownList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAKvE;;;GAGG;AACH,KAAK,8BAA8B,GAAG;IAClC;;OAEG;IACH,aAAa,EAAE,gCAAgC,EAAE,CAAC;IAClD;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,gCAAgC,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA8B9E,CAAC"}
1
+ {"version":3,"file":"SearchResultsDropdownList.d.ts","sourceRoot":"","sources":["../src/SearchResultsDropdownList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAIhE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC;;;GAGG;AACH,KAAK,8BAA8B,GAAG;IAClC;;OAEG;IACH,aAAa,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;IACrD;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA6B9E,CAAC"}
@@ -1,16 +1,18 @@
1
1
  // (C) 2024 GoodData Corporation
2
2
  import * as React from "react";
3
3
  import { DropdownList } from "@gooddata/sdk-ui-kit";
4
- import { ITEM_HEIGHT, ResultsItem } from "./ResultsItem.js";
4
+ import { ResultsItem } from "./ResultsItem.js";
5
5
  import { useListSelector } from "./hooks/index.js";
6
+ const ITEM_HEIGHT = 50;
6
7
  /**
7
8
  * A dropdown list with the search results.
8
9
  * @internal
9
10
  */
10
11
  export const SearchResultsDropdownList = ({ searchResults, searchLoading, isMobile, width, onSelect, }) => {
11
- const [active, setActive] = useListSelector(searchResults, onSelect);
12
- return (React.createElement(DropdownList, { width: width, isMobile: isMobile, isLoading: searchLoading, itemHeight: ITEM_HEIGHT, renderItem: ({ item, width, height }) => {
13
- return (React.createElement(ResultsItem, { onHover: setActive, onSelect: onSelect, active: item === active, item: item, width: width, height: height }));
12
+ const onListItemSelect = (item) => onSelect(item.item);
13
+ const [active, setActive] = useListSelector(searchResults, onListItemSelect);
14
+ return (React.createElement(DropdownList, { width: width, isMobile: isMobile, isLoading: searchLoading, itemHeight: ITEM_HEIGHT, renderItem: ({ item }) => {
15
+ return (React.createElement(ResultsItem, { listItem: item, isActive: active === item, setActive: setActive, onSelect: onListItemSelect }));
14
16
  }, items: searchResults }));
15
17
  };
16
18
  //# sourceMappingURL=SearchResultsDropdownList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResultsDropdownList.js","sourceRoot":"","sources":["../src/SearchResultsDropdownList.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA6BnD;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA6C,CAAC,EAChF,aAAa,EACb,aAAa,EACb,QAAQ,EACR,KAAK,EACL,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAErE,OAAO,CACH,oBAAC,YAAY,IACT,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YACpC,OAAO,CACH,oBAAC,WAAW,IACR,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,IAAI,KAAK,MAAM,EACvB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GAChB,CACL,CAAC;QACN,CAAC,EACD,KAAK,EAAE,aAAa,GACtB,CACL,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"SearchResultsDropdownList.js","sourceRoot":"","sources":["../src/SearchResultsDropdownList.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,WAAW,GAAG,EAAE,CAAC;AA6BvB;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA6C,CAAC,EAChF,aAAa,EACb,aAAa,EACb,QAAQ,EACR,KAAK,EACL,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,gBAAgB,GAAG,CAAC,IAAyC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAe,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAE7E,OAAO,CACH,oBAAC,YAAY,IACT,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACrB,OAAO,CACH,oBAAC,WAAW,IACR,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,MAAM,KAAK,IAAI,EACzB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,gBAAgB,GAC5B,CACL,CAAC;QACN,CAAC,EACD,KAAK,EAAE,aAAa,GACtB,CACL,CAAC;AACN,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SemanticSearch.d.ts","sourceRoot":"","sources":["../src/SemanticSearch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAIzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAiGF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAMxD,CAAC"}
1
+ {"version":3,"file":"SemanticSearch.d.ts","sourceRoot":"","sources":["../src/SemanticSearch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAIzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAyHF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAMxD,CAAC"}
@@ -16,7 +16,7 @@ const DEBOUNCE = 300;
16
16
  */
17
17
  const SemanticSearchCore = ({ backend, workspace, onSelect, onError, objectTypes, deepSearch = false, limit = 10, className, placeholder, }) => {
18
18
  // Input value handling
19
- const [value, setValue, searchTerm] = useDebouncedState("", DEBOUNCE);
19
+ const [value, setValue, searchTerm, setImmediate] = useDebouncedState("", DEBOUNCE);
20
20
  // Search results
21
21
  const { searchStatus, searchResults, searchError } = useSemanticSearch({
22
22
  backend,
@@ -26,14 +26,23 @@ const SemanticSearchCore = ({ backend, workspace, onSelect, onError, objectTypes
26
26
  deepSearch,
27
27
  limit,
28
28
  });
29
+ // Build list items for rendering
30
+ const listItems = React.useMemo(() => searchResults.map((item) => ({ item })), [searchResults]);
29
31
  // Match the width of the drop-down to the input field
30
32
  const [width, setWidth] = React.useState(0);
31
33
  const inputRef = React.useRef(null);
32
34
  React.useLayoutEffect(() => {
33
- const input = inputRef.current?.inputNodeRef?.inputNodeRef;
34
- if (input) {
35
- setWidth(input.offsetWidth);
36
- }
35
+ const handleResize = () => {
36
+ const input = inputRef.current?.inputNodeRef?.inputNodeRef;
37
+ if (input) {
38
+ setWidth(input.offsetWidth);
39
+ }
40
+ };
41
+ handleResize();
42
+ window.addEventListener("resize", handleResize);
43
+ return () => {
44
+ window.removeEventListener("resize", handleResize);
45
+ };
37
46
  }, []);
38
47
  // Report errors
39
48
  React.useEffect(() => {
@@ -49,9 +58,16 @@ const SemanticSearchCore = ({ backend, workspace, onSelect, onError, objectTypes
49
58
  if (!searchResults.length && searchStatus !== "loading") {
50
59
  return null;
51
60
  }
52
- return (React.createElement(SearchResultsDropdownList, { width: width, isMobile: isMobile, searchResults: searchResults, searchLoading: searchStatus === "loading", onSelect: (item) => {
53
- onSelect(item);
61
+ return (React.createElement(SearchResultsDropdownList, { width: width, isMobile: isMobile, searchResults: listItems, searchLoading: searchStatus === "loading", onSelect: (item) => {
62
+ // Blur and clear the state
63
+ const input = inputRef.current?.inputNodeRef?.inputNodeRef;
64
+ if (input) {
65
+ input.blur();
66
+ }
67
+ setImmediate("");
54
68
  closeDropdown();
69
+ // Report the selected item
70
+ onSelect(item);
55
71
  } }));
56
72
  }, renderButton: ({ openDropdown }) => {
57
73
  return (React.createElement(Input, { className: "gd-semantic-search__input", ref: inputRef, placeholder: placeholder, isSearch: true, clearOnEsc: true, value: value, onChange: (e) => setValue(String(e)), onFocus: openDropdown }));
@@ -1 +1 @@
1
- {"version":3,"file":"SemanticSearch.js","sourceRoot":"","sources":["../src/SemanticSearch.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SemanticSearch.js","sourceRoot":"","sources":["../src/SemanticSearch.tsx"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * calls the onSelect callback when Enter is pressed.
4
4
  * @internal
5
5
  */
6
- export declare const useListSelector: <T>(items: T[], onSelect: (item: T) => void) => [T, (item: T) => void];
6
+ export declare const useListSelector: <T>(items: T[], onSelect: (item: T, e: MouseEvent | KeyboardEvent) => void) => [T, (item: T) => void];
7
7
  //# sourceMappingURL=useListSelector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useListSelector.d.ts","sourceRoot":"","sources":["../../src/hooks/useListSelector.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,eAAe,yCAA+C,IAAI,sBAyCb,IAAI,CACrE,CAAC"}
1
+ {"version":3,"file":"useListSelector.d.ts","sourceRoot":"","sources":["../../src/hooks/useListSelector.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,eAAe,yCAED,UAAU,GAAG,aAAa,KAAK,IAAI,sBA0CI,IAAI,CACrE,CAAC"}
@@ -18,8 +18,6 @@ export const useListSelector = (items, onSelect) => {
18
18
  if (["ArrowDown", "ArrowUp", "Enter"].indexOf(event.key) === -1)
19
19
  return;
20
20
  const setIndex = (index) => setSelected(Math.max(Math.min(index, items.length - 1), 0));
21
- event.preventDefault();
22
- event.stopImmediatePropagation();
23
21
  switch (event.key) {
24
22
  case "ArrowDown":
25
23
  setIndex(selected + 1);
@@ -28,8 +26,10 @@ export const useListSelector = (items, onSelect) => {
28
26
  setIndex(selected - 1);
29
27
  break;
30
28
  case "Enter":
31
- onSelect(items[selected]);
29
+ onSelect(items[selected], event);
32
30
  }
31
+ event.stopImmediatePropagation();
32
+ event.preventDefault();
33
33
  };
34
34
  // Listen to keyboard events while the component is mounted
35
35
  document.addEventListener("keydown", listener);
@@ -1 +1 @@
1
- {"version":3,"file":"useListSelector.js","sourceRoot":"","sources":["../../src/hooks/useListSelector.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,KAAe,EAAE,QAA2B,EAAE,EAAE;IAC/E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,WAAW,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,IAAO,EAAE,EAAE;QACR,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO;YAExE,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEhG,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAEjC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;gBAChB,KAAK,WAAW;oBACZ,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,SAAS;oBACV,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,OAAO;oBACR,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClC,CAAC;QACL,CAAC,CAAC;QAEF,2DAA2D;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,eAAe,CAA2B,CAAC;AACxE,CAAC,CAAC"}
1
+ {"version":3,"file":"useListSelector.js","sourceRoot":"","sources":["../../src/hooks/useListSelector.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,KAAe,EACf,QAA0D,EAC5D,EAAE;IACA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,WAAW,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,IAAO,EAAE,EAAE;QACR,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO;YAExE,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEhG,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;gBAChB,KAAK,WAAW;oBACZ,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,SAAS;oBACV,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,OAAO;oBACR,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF,2DAA2D;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,eAAe,CAA2B,CAAC;AACxE,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ISemanticSearchResultItemWithUrl, GenAISemanticSearchType } from "@gooddata/sdk-model";
1
+ import { ISemanticSearchResultItem, GenAISemanticSearchType, ISemanticSearchRelationship } from "@gooddata/sdk-model";
2
2
  import { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
3
3
  /**
4
4
  * The result of the semantic search hook.
@@ -20,7 +20,8 @@ export type SemanticSearchInputResult = {
20
20
  /**
21
21
  * The search results.
22
22
  */
23
- searchResults: ISemanticSearchResultItemWithUrl[];
23
+ searchResults: ISemanticSearchResultItem[];
24
+ relationships: ISemanticSearchRelationship[];
24
25
  };
25
26
  /**
26
27
  * Input parameters for the semantic search hook.
@@ -1 +1 @@
1
- {"version":3,"file":"useSemanticSearch.d.ts","sourceRoot":"","sources":["../../src/hooks/useSemanticSearch.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,gCAAgC,EAChC,uBAAuB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACvD;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,EAAE,gCAAgC,EAAE,CAAC;CACrD,CAAC;AAWF;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,wEAO3B,uBAAuB,KAAG,yBA+D5B,CAAC"}
1
+ {"version":3,"file":"useSemanticSearch.d.ts","sourceRoot":"","sources":["../../src/hooks/useSemanticSearch.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACvD;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAC3C,aAAa,EAAE,2BAA2B,EAAE,CAAC;CAChD,CAAC;AAYF;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,wEAO3B,uBAAuB,KAAG,yBAiE5B,CAAC"}
@@ -1,7 +1,6 @@
1
1
  // (C) 2024 GoodData Corporation
2
2
  import { useState, useEffect } from "react";
3
3
  import { useBackendStrict, useWorkspaceStrict } from "@gooddata/sdk-ui";
4
- import { getUIPath } from "../utils/getUIPath.js";
5
4
  /**
6
5
  * Default state of the semantic search hook.
7
6
  */
@@ -9,6 +8,7 @@ const DEFAULT_STATE = {
9
8
  searchStatus: "idle",
10
9
  searchError: "",
11
10
  searchResults: [],
11
+ relationships: [],
12
12
  };
13
13
  const DEFAULT_OBJECT_TYPES = [];
14
14
  /**
@@ -55,7 +55,8 @@ export const useSemanticSearch = ({ searchTerm, objectTypes = DEFAULT_OBJECT_TYP
55
55
  setState({
56
56
  searchStatus: "success",
57
57
  searchError: "",
58
- searchResults: res.results.map(withUrl(effectiveWorkspace)),
58
+ searchResults: res.results,
59
+ relationships: res.relationships,
59
60
  });
60
61
  })
61
62
  .catch((e) => {
@@ -66,6 +67,7 @@ export const useSemanticSearch = ({ searchTerm, objectTypes = DEFAULT_OBJECT_TYP
66
67
  searchStatus: "error",
67
68
  searchError: errorMessage(e),
68
69
  searchResults: [],
70
+ relationships: [],
69
71
  });
70
72
  });
71
73
  return () => {
@@ -83,13 +85,4 @@ const errorMessage = (e) => {
83
85
  }
84
86
  return String(e);
85
87
  };
86
- /**
87
- * Enrich the result item with UI URL.
88
- */
89
- const withUrl = (workspaceId) => (item) => {
90
- return {
91
- ...item,
92
- url: getUIPath(item.type, item.id, workspaceId),
93
- };
94
- };
95
88
  //# sourceMappingURL=useSemanticSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSemanticSearch.js","sourceRoot":"","sources":["../../src/hooks/useSemanticSearch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSemanticSearch.js","sourceRoot":"","sources":["../../src/hooks/useSemanticSearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import { ISemanticSearchResultItem } from "@gooddata/sdk-model";
3
+ import { ListItemProps } from "../types.js";
4
+ export declare const AnnotatedResultsItem: React.NamedExoticComponent<ListItemProps<ISemanticSearchResultItem>>;
5
+ //# sourceMappingURL=AnnotatedResultsItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnotatedResultsItem.d.ts","sourceRoot":"","sources":["../../src/internal/AnnotatedResultsItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmD5C,eAAO,MAAM,oBAAoB,sEAAuC,CAAC"}
@@ -0,0 +1,30 @@
1
+ // (C) 2024 GoodData Corporation
2
+ import * as React from "react";
3
+ import { useTheme } from "@gooddata/sdk-ui-theme-provider";
4
+ import classnames from "classnames";
5
+ import { renderDetails } from "../utils/renderDetails.js";
6
+ import { renderItemIcon } from "../utils/renderItemIcon.js";
7
+ import { UpdatedDate } from "./UpdateDate.js";
8
+ /**
9
+ * A single result item in the search results.
10
+ * @internal
11
+ */
12
+ const CoreAnnotatedResultsItem = ({ listItem, isActive, setActive, onSelect, }) => {
13
+ const theme = useTheme();
14
+ const Tag = listItem.url ? "a" : "span";
15
+ // Use mouse enter with the target check instead of hover to prevent multiple triggers
16
+ return (React.createElement(Tag, { href: listItem.url, className: classnames({
17
+ "gd-semantic-search__results-item": true,
18
+ "gd-semantic-search__results-item--active": isActive,
19
+ }), onPointerOver: () => setActive(listItem), onClick: (e) => onSelect(listItem, e.nativeEvent) },
20
+ React.createElement("span", { className: "gd-semantic-search__results-item__icon" }, renderItemIcon(listItem, { color: theme?.palette?.complementary?.c5 ?? "#B0BECA" })),
21
+ React.createElement("span", { className: "gd-semantic-search__results-item__text gd-semantic-search__results-item__text--result" },
22
+ React.createElement("span", { className: "gd-semantic-search__results-item__text__1" }, listItem.item.title),
23
+ React.createElement("span", { className: "gd-semantic-search__results-item__text__2" },
24
+ listItem.parentRef ? (React.createElement("span", { className: "gd-semantic-search__results-item__annotation" }, listItem.parentRef.sourceObjectTitle)) : null,
25
+ React.createElement("span", { className: "gd-semantic-search__results-item__annotation" },
26
+ React.createElement(UpdatedDate, { listItem: listItem })))),
27
+ isActive ? renderDetails(listItem, theme) : null));
28
+ };
29
+ export const AnnotatedResultsItem = React.memo(CoreAnnotatedResultsItem);
30
+ //# sourceMappingURL=AnnotatedResultsItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnotatedResultsItem.js","sourceRoot":"","sources":["../../src/internal/AnnotatedResultsItem.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;GAGG;AACH,MAAM,wBAAwB,GAAuD,CAAC,EAClF,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAExC,sFAAsF;IACtF,OAAO,CACH,oBAAC,GAAG,IACA,IAAI,EAAE,QAAQ,CAAC,GAAG,EAClB,SAAS,EAAE,UAAU,CAAC;YAClB,kCAAkC,EAAE,IAAI;YACxC,0CAA0C,EAAE,QAAQ;SACvD,CAAC,EACF,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC;QAEjD,8BAAM,SAAS,EAAC,wCAAwC,IACnD,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC,CACjF;QACP,8BAAM,SAAS,EAAC,uFAAuF;YACnG,8BAAM,SAAS,EAAC,2CAA2C,IAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAQ;YACxF,8BAAM,SAAS,EAAC,2CAA2C;gBACtD,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAClB,8BAAM,SAAS,EAAC,8CAA8C,IACzD,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAClC,CACV,CAAC,CAAC,CAAC,IAAI;gBACR,8BAAM,SAAS,EAAC,8CAA8C;oBAC1D,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAChC,CACJ,CACJ;QACN,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/C,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC"}
@@ -1,8 +1,17 @@
1
1
  import React from "react";
2
2
  import { SearchOverlayProps } from "./SearchOverlay.js";
3
- export type HeaderSearchButtonProps = SearchOverlayProps;
3
+ import { ISemanticSearchResultItem } from "@gooddata/sdk-model";
4
+ export type HeaderSearchButtonProps = SearchOverlayProps & {
5
+ /**
6
+ * Callback to be called when an item is selected.
7
+ * @param item - the selected item
8
+ * @param e - the event that triggered the selection
9
+ * @param itemUrl - the URL of the selected item, if available
10
+ */
11
+ onSelect: (item: ISemanticSearchResultItem, e: MouseEvent | KeyboardEvent, itemUrl?: string) => void;
12
+ };
4
13
  export declare const HeaderSearchButtonCore: React.FC<HeaderSearchButtonProps>;
5
- export declare const HeaderSearchButton: React.FC<import("react-intl").WithIntlProps<SearchOverlayProps>> & {
6
- WrappedComponent: React.ComponentType<SearchOverlayProps>;
14
+ export declare const HeaderSearchButton: React.FC<import("react-intl").WithIntlProps<HeaderSearchButtonProps>> & {
15
+ WrappedComponent: React.ComponentType<HeaderSearchButtonProps>;
7
16
  };
8
17
  //# sourceMappingURL=HeaderSearchButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderSearchButton.d.ts","sourceRoot":"","sources":["../../src/internal/HeaderSearchButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAiB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKvE,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAEzD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsDpE,CAAC;AAEF,eAAO,MAAM,kBAAkB;;CAAqC,CAAC"}
1
+ {"version":3,"file":"HeaderSearchButton.d.ts","sourceRoot":"","sources":["../../src/internal/HeaderSearchButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAiB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAIhE,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,GAAG;IACvD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACxG,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA2DpE,CAAC;AAEF,eAAO,MAAM,kBAAkB;;CAAqC,CAAC"}
@@ -8,6 +8,7 @@ const ALIGN_POINTS = [{ align: "br tr" }];
8
8
  export const HeaderSearchButtonCore = ({ onSelect, ...overlayProps }) => {
9
9
  const [isOpen, setIsOpen] = React.useState(false);
10
10
  const classNames = cx("gd-header-measure", "gd-header-button", "gd-header-search", { "is-open": isOpen });
11
+ // Handle Cmd+K and Ctrl+K shortcuts
11
12
  React.useEffect(() => {
12
13
  const shortcutHandler = (event) => {
13
14
  if (event.key === "k" && (event.ctrlKey || event.metaKey)) {
@@ -21,10 +22,11 @@ export const HeaderSearchButtonCore = ({ onSelect, ...overlayProps }) => {
21
22
  document.removeEventListener("keydown", shortcutHandler);
22
23
  };
23
24
  }, [isOpen]);
24
- const handleSelect = (item) => {
25
- onSelect(item);
25
+ // Inject dialog closing into a callback
26
+ const handleSelect = React.useCallback((item, e, url) => {
26
27
  setIsOpen(false);
27
- };
28
+ return onSelect(item, e, url);
29
+ }, [onSelect, setIsOpen]);
28
30
  return (React.createElement(Button, { title: overlayProps.intl.formatMessage({ id: "gs.header.search" }), className: classNames, onClick: () => setIsOpen(true) },
29
31
  React.createElement("span", { className: "gd-icon-header-search" }),
30
32
  React.createElement("span", { className: "gd-header-search-label" },
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderSearchButton.js","sourceRoot":"","sources":["../../src/internal/HeaderSearchButton.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAC;AAGvE,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAI1C,MAAM,CAAC,MAAM,sBAAsB,GAAsC,CAAC,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE;IACvG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1G,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,MAAM,eAAe,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,SAAS,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC7D,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,YAAY,GAAG,CAAC,IAAsC,EAAE,EAAE;QAC5D,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,SAAS,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,CACH,oBAAC,MAAM,IACH,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAClE,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;QAE9B,8BAAM,SAAS,EAAC,uBAAuB,GAAQ;QAC/C,8BAAM,SAAS,EAAC,wBAAwB;YACpC,oBAAC,gBAAgB,IAAC,EAAE,EAAC,kBAAkB,GAAG,CACvC;QACN,MAAM,CAAC,CAAC,CAAC,CACN,oBAAC,OAAO,IACJ,OAAO,EAAE,KAAK,EACd,OAAO,EAAC,mBAAmB,EAC3B,WAAW,EAAE,YAAY,EACzB,aAAa,QACb,mBAAmB,QACnB,mBAAmB,EAAE,KAAK,EAC1B,gBAAgB,EAAE,KAAK,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,qBAAqB,EAAE,CAAC,YAAY,EAAE,mCAAmC,CAAC;YAE1E,6BAAK,SAAS,EAAC,yDAAyD;gBACpE,oBAAC,aAAa,IAAC,QAAQ,EAAE,YAAY,KAAM,YAAY,GAAI,CACzD,CACA,CACb,CAAC,CAAC,CAAC,IAAI,CACH,CACZ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"HeaderSearchButton.js","sourceRoot":"","sources":["../../src/internal/HeaderSearchButton.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import { ListItemProps } from "../types.js";
3
+ /**
4
+ * A single result item in the search results.
5
+ * @internal
6
+ */
7
+ export declare const HistoryItem: React.FC<ListItemProps<string>>;
8
+ //# sourceMappingURL=HistoryItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistoryItem.d.ts","sourceRoot":"","sources":["../../src/internal/HistoryItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAqBvD,CAAC"}
@@ -0,0 +1,21 @@
1
+ // (C) 2024 GoodData Corporation
2
+ import * as React from "react";
3
+ import { Icon } from "@gooddata/sdk-ui-kit";
4
+ import { useTheme } from "@gooddata/sdk-ui-theme-provider";
5
+ import classnames from "classnames";
6
+ /**
7
+ * A single result item in the search results.
8
+ * @internal
9
+ */
10
+ export const HistoryItem = ({ listItem, onSelect, isActive, setActive }) => {
11
+ const theme = useTheme();
12
+ // Use mouse enter with the target check instead of hover to prevent multiple triggers
13
+ return (React.createElement("span", { className: classnames({
14
+ "gd-semantic-search__results-item": true,
15
+ "gd-semantic-search__results-item--active": isActive,
16
+ }), onPointerOver: () => setActive(listItem), onClick: (e) => onSelect(listItem, e.nativeEvent) },
17
+ React.createElement("span", { className: "gd-semantic-search__results-item__icon gd-semantic-search__results-item__icon--history" },
18
+ React.createElement(Icon.HistoryBack, { color: theme?.palette?.complementary?.c5 ?? "#B0BECA" })),
19
+ React.createElement("span", { className: "gd-semantic-search__results-item__text gd-semantic-search__results-item__text--history" }, listItem.item)));
20
+ };
21
+ //# sourceMappingURL=HistoryItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistoryItem.js","sourceRoot":"","sources":["../../src/internal/HistoryItem.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAoC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;IACxG,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,sFAAsF;IACtF,OAAO,CACH,8BACI,SAAS,EAAE,UAAU,CAAC;YAClB,kCAAkC,EAAE,IAAI;YACxC,0CAA0C,EAAE,QAAQ;SACvD,CAAC,EACF,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC;QAEjD,8BAAM,SAAS,EAAC,wFAAwF;YACpG,oBAAC,IAAI,CAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,SAAS,GAAI,CACxE;QACP,8BAAM,SAAS,EAAC,wFAAwF,IACnG,QAAQ,CAAC,IAAI,CACX,CACJ,CACV,CAAC;AACN,CAAC,CAAC"}