@gooddata/sdk-ui-semantic-search 10.10.0-alpha.9 → 10.11.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. package/esm/ResultsItem.d.ts.map +1 -1
  2. package/esm/ResultsItem.js +5 -13
  3. package/esm/ResultsItem.js.map +1 -1
  4. package/esm/SearchListItem.d.ts +14 -0
  5. package/esm/SearchListItem.d.ts.map +1 -0
  6. package/esm/SearchListItem.js +28 -0
  7. package/esm/SearchListItem.js.map +1 -0
  8. package/esm/SearchResultsDropdownList.d.ts.map +1 -1
  9. package/esm/SearchResultsDropdownList.js +2 -1
  10. package/esm/SearchResultsDropdownList.js.map +1 -1
  11. package/esm/SemanticSearch.d.ts.map +1 -1
  12. package/esm/SemanticSearch.js +1 -2
  13. package/esm/SemanticSearch.js.map +1 -1
  14. package/esm/hooks/useSearchMetrics.d.ts +43 -0
  15. package/esm/hooks/useSearchMetrics.d.ts.map +1 -0
  16. package/esm/hooks/useSearchMetrics.js +75 -0
  17. package/esm/hooks/useSearchMetrics.js.map +1 -0
  18. package/esm/internal/AnnotatedResultsItem.d.ts +4 -0
  19. package/esm/internal/AnnotatedResultsItem.d.ts.map +1 -1
  20. package/esm/internal/AnnotatedResultsItem.js +14 -22
  21. package/esm/internal/AnnotatedResultsItem.js.map +1 -1
  22. package/esm/internal/HistoryItem.d.ts +1 -1
  23. package/esm/internal/HistoryItem.d.ts.map +1 -1
  24. package/esm/internal/HistoryItem.js +7 -13
  25. package/esm/internal/HistoryItem.js.map +1 -1
  26. package/esm/internal/SearchList.d.ts.map +1 -1
  27. package/esm/internal/SearchList.js +2 -1
  28. package/esm/internal/SearchList.js.map +1 -1
  29. package/esm/internal/SearchOverlay.d.ts +24 -3
  30. package/esm/internal/SearchOverlay.d.ts.map +1 -1
  31. package/esm/internal/SearchOverlay.js +72 -29
  32. package/esm/internal/SearchOverlay.js.map +1 -1
  33. package/esm/internal.d.ts +2 -2
  34. package/esm/internal.d.ts.map +1 -1
  35. package/esm/internal.js +2 -2
  36. package/esm/internal.js.map +1 -1
  37. package/esm/utils/renderDetails.js +1 -1
  38. package/esm/utils/renderDetails.js.map +1 -1
  39. package/esm/utils/renderItemIcon.d.ts +2 -3
  40. package/esm/utils/renderItemIcon.d.ts.map +1 -1
  41. package/esm/utils/renderItemIcon.js +2 -1
  42. package/esm/utils/renderItemIcon.js.map +1 -1
  43. package/esm/utils/{renderLoack.d.ts → renderLock.d.ts} +1 -1
  44. package/esm/utils/renderLock.d.ts.map +1 -0
  45. package/esm/utils/{renderLoack.js → renderLock.js} +1 -1
  46. package/esm/utils/renderLock.js.map +1 -0
  47. package/package.json +7 -7
  48. package/styles/css/internal.css +38 -108
  49. package/styles/css/internal.css.map +1 -1
  50. package/styles/css/main.css +21 -51
  51. package/styles/css/main.css.map +1 -1
  52. package/styles/scss/internal.scss +21 -66
  53. package/styles/scss/main.scss +26 -46
  54. package/esm/internal/HeaderMobileSearch.d.ts +0 -8
  55. package/esm/internal/HeaderMobileSearch.d.ts.map +0 -1
  56. package/esm/internal/HeaderMobileSearch.js +0 -18
  57. package/esm/internal/HeaderMobileSearch.js.map +0 -1
  58. package/esm/internal/HeaderSearchButton.d.ts +0 -31
  59. package/esm/internal/HeaderSearchButton.d.ts.map +0 -1
  60. package/esm/internal/HeaderSearchButton.js +0 -50
  61. package/esm/internal/HeaderSearchButton.js.map +0 -1
  62. package/esm/utils/renderLoack.d.ts.map +0 -1
  63. package/esm/utils/renderLoack.js.map +0 -1
@@ -1,4 +1,3 @@
1
- @charset "UTF-8";
2
1
  .gd-semantic-search__results-item {
3
2
  display: flex;
4
3
  flex-direction: row;
@@ -9,7 +8,7 @@
9
8
  height: 50px;
10
9
  text-decoration: none;
11
10
  }
12
- .gd-semantic-search__results-item:hover {
11
+ .gd-semantic-search__results-item:hover, .gd-semantic-search__results-item:focus, .gd-semantic-search__results-item:active, .gd-semantic-search__results-item:visited {
13
12
  text-decoration: none;
14
13
  }
15
14
  .gd-semantic-search__results-item--active {
@@ -17,63 +16,38 @@
17
16
  background: var(--gd-palette-complementary-2, #ebeff4);
18
17
  }
19
18
  .gd-semantic-search__results-item__icon {
20
- width: 32px;
21
- height: 32px;
19
+ width: 26px;
20
+ height: 26px;
22
21
  display: flex;
23
22
  align-items: center;
24
23
  }
25
24
  .gd-semantic-search__results-item__icon > svg {
26
- width: 32px;
27
- height: 32px;
28
- }
29
- .gd-semantic-search__results-item__icon--history {
30
- width: 17px;
31
- height: 17px;
32
- display: flex;
33
- align-items: center;
34
- }
35
- .gd-semantic-search__results-item__icon--history > svg {
36
- width: 17px;
37
- height: 17px;
25
+ width: 26px;
26
+ height: 26px;
38
27
  }
39
28
  .gd-semantic-search__results-item__text {
40
- flex-grow: 1;
41
- font-weight: 400;
42
- color: var(--gd-palette-complementary-8, #464e56);
43
- font-size: 14px;
44
- }
45
- .gd-semantic-search__results-item__text--history {
29
+ flex: 1;
46
30
  min-width: 0;
47
- line-height: 1.4rem;
48
- overflow: hidden;
49
- text-overflow: ellipsis;
50
- white-space: nowrap;
51
- }
52
- .gd-semantic-search__results-item__text--result {
53
31
  display: flex;
54
32
  flex-direction: column;
33
+ font-weight: 400;
34
+ color: var(--gd-palette-complementary-8, #464e56);
35
+ font-size: 14px;
36
+ line-height: 20px;
55
37
  }
56
- .gd-semantic-search__results-item__text__1 {
38
+ .gd-semantic-search__results-item__text__row {
57
39
  display: flex;
58
40
  flex-direction: row;
59
- align-items: center;
60
- gap: 0.3em;
61
- min-width: 0;
62
- line-height: 20px;
63
- overflow: hidden;
64
- text-overflow: ellipsis;
65
- white-space: nowrap;
41
+ gap: 5px;
66
42
  }
67
- .gd-semantic-search__results-item__text__2 {
68
- min-width: 0;
69
- line-height: 20px;
70
- overflow: hidden;
71
- text-overflow: ellipsis;
72
- white-space: nowrap;
43
+ .gd-semantic-search__results-item__text__row:not(:first-child) {
73
44
  color: var(--gd-palette-complementary-6, #94a1ad);
74
45
  }
75
- .gd-semantic-search__results-item__text__lock-icon {
76
- width: 14px;
46
+ .gd-semantic-search__results-item__text__ellipsis {
47
+ white-space: nowrap;
48
+ overflow: hidden;
49
+ text-overflow: ellipsis;
50
+ flex-shrink: 1;
77
51
  }
78
52
  .gd-semantic-search__results-item__details {
79
53
  width: 16px;
@@ -113,15 +87,11 @@
113
87
  text-transform: none;
114
88
  font-size: 12px;
115
89
  }
116
- .gd-semantic-search__results-item__annotation:after {
117
- content: " • ";
118
- }
119
- .gd-semantic-search__results-item__annotation:last-child:after {
120
- content: "";
121
- }
122
-
123
90
  .gd-semantic-search__bubble.bubble.bubble-light {
124
91
  background: var(--gd-palette-complementary-0, #fff);
125
92
  }
93
+ .gd-semantic-search__bubble_trigger {
94
+ display: flex;
95
+ }
126
96
 
127
97
  /*# sourceMappingURL=main.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../scss/main.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/variables.scss"],"names":[],"mappings":";AA4BI;EAGI;EACA;EACA;EACA;EACA;EACA;EACA,QARc;EASd;;AAEA;EACI;;AAGJ;EACI,OCTI;EDUJ,YC+DY;;AD5DhB;EA1CJ,OA2CsB;EA1CtB,QA0CsB;EAzCtB;EACA;;AAEA;EAEI,OAoCkB;EAnClB,QAmCkB;;AAEd;EA7CR,OA8C0B;EA7C1B,QA6C0B;EA5C1B;EACA;;AAEA;EAEI,OAuCsB;EAtCtB,QAsCsB;;AAItB;EACI;EACA;EACA,OC9BI;ED+BJ;;AAEA;EA3CR;EACA,aA2C8B;EA1C9B;EACA;EACA;;AA2CQ;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EAxDZ;EACA,aAwD8B;EAvD9B;EACA;EACA;;AAwDQ;EA5DR;EACA,aA4D8B;EA3D9B;EACA;EACA;EA0DY,OC3DO;;AD8DX;EACI;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA,OCjGG;;ADoGP;EACI;EACA;EACA;;AAIA;EACI;EACA;;AAOZ;EACI;;AAGJ;EACI;;;AAMhB;EACI,YCtIa","file":"main.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../scss/main.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/variables.scss"],"names":[],"mappings":"AAoBI;EAGI;EACA;EACA;EACA;EACA;EACA;EACA,QARc;EASd;;AAEA;EAII;;AAGJ;EACI,OCJI;EDKJ,YCoEY;;ADjEhB;EArCJ,OAsCsB;EArCtB,QAqCsB;EApCtB;EACA;;AAEA;EAEI,OA+BkB;EA9BlB,QA8BkB;;AAGlB;EACI;EACA;EACA;EACA;EACA;EACA,OCxBI;EDyBJ;EACA;;AAEA;EACI;EACA;EACA;;AAEA;EACI,OCzCG;;AD6CX;EACI;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA,OCnFG;;ADsFP;EACI;EACA;EACA;;AAIA;EACI;EACA;;AAOpB;EACI,YC7GS;;ADgHb;EACI","file":"main.css"}
@@ -4,18 +4,20 @@
4
4
  @use "sass:meta";
5
5
  @use "@gooddata/sdk-ui-kit/styles/scss/variables" as kit-variables;
6
6
  @use "@gooddata/sdk-ui-kit/styles/scss/mixins" as kit-mixins;
7
- @use "./main.scss";
7
+ @use "./main.scss" as main;
8
8
 
9
9
  .gd-semantic-search {
10
10
  &__overlay {
11
11
  background: kit-variables.$gd-color-white;
12
12
  margin: 10px 0;
13
13
 
14
- &--fixed {
14
+ // Desktop view
15
+ .gd-header-search-dropdown & {
15
16
  width: 440px;
16
17
  }
17
18
 
18
- &--mobile {
19
+ // Mobile view
20
+ .gd-header-menu-search & {
19
21
  .gd-semantic-search__overlay-input {
20
22
  margin-bottom: 10px;
21
23
  }
@@ -41,74 +43,27 @@
41
43
  &__overlay-no-results {
42
44
  height: 100px;
43
45
  }
44
- }
45
-
46
- .gd-header-search {
47
- height: 100%;
48
- margin: 0;
49
- line-height: 42px;
50
- opacity: 0.8;
51
- cursor: pointer;
52
- transition: all 0.2s;
53
- font-size: 14px;
54
- font-weight: 400;
55
- position: relative;
56
- box-sizing: border-box;
57
- padding: 0 34px 2px 13px;
58
-
59
- @include kit-mixins.text-overflow;
60
-
61
- &:hover,
62
- &.is-open {
63
- opacity: 1;
64
- }
65
-
66
- &::after {
67
- content: "\e612";
68
- position: absolute;
69
- top: 0;
70
- right: 11px;
71
- margin-left: 11px;
72
- width: 12px;
73
- opacity: 0.5;
74
- text-align: center;
75
- font-family: kit-variables.$gd-font-indigo;
76
- font-size: 18px;
77
- font-weight: 700;
78
- }
79
-
80
- &.is-open::after {
81
- content: "\e613";
82
- }
83
46
 
84
- &:hover {
85
- background: rgba(255, 255, 255, 0.3);
86
- }
87
-
88
- &.is-open {
89
- background-color: rgba(255, 255, 255, 0.3);
90
- }
47
+ &__results-item {
48
+ &--history &__icon {
49
+ @include main.icon(17px);
50
+ }
91
51
 
92
- &-dropdown {
93
- overflow: hidden;
52
+ &__text {
53
+ &__lock-icon {
54
+ width: 14px;
94
55
 
95
- .gd-list {
96
- min-width: 210px;
56
+ & svg {
57
+ width: 14px;
58
+ height: 14px;
59
+ }
60
+ }
97
61
 
98
- .gd-list-item {
99
- font-family: kit-variables.$gd-font-primary;
100
- font-weight: 400;
62
+ &__row:not(:first-child) {
63
+ :not(:first-child):before {
64
+ content: "•\0000a0";
65
+ }
101
66
  }
102
67
  }
103
68
  }
104
69
  }
105
-
106
- .gd-icon-header-search-button {
107
- vertical-align: middle;
108
- opacity: 0.8;
109
- margin-right: 6px;
110
-
111
- &::before {
112
- content: "\e62b";
113
- }
114
- }
@@ -17,14 +17,6 @@
17
17
  }
18
18
  }
19
19
 
20
- @mixin ellipsis($line-height) {
21
- min-width: 0; // A hack to make ellipsis work in flexbox
22
- line-height: $line-height;
23
- overflow: hidden;
24
- text-overflow: ellipsis;
25
- white-space: nowrap;
26
- }
27
-
28
20
  .gd-semantic-search {
29
21
  &__results-item {
30
22
  $line-height: 50px;
@@ -38,7 +30,10 @@
38
30
  height: $line-height;
39
31
  text-decoration: none;
40
32
 
41
- &:hover {
33
+ &:hover,
34
+ &:focus,
35
+ &:active,
36
+ &:visited {
42
37
  text-decoration: none;
43
38
  }
44
39
 
@@ -48,43 +43,34 @@
48
43
  }
49
44
 
50
45
  &__icon {
51
- @include icon(32px);
52
-
53
- &--history {
54
- @include icon(17px);
55
- }
46
+ @include icon(26px);
56
47
  }
57
48
 
58
49
  &__text {
59
- flex-grow: 1;
50
+ flex: 1;
51
+ min-width: 0; // A hack to make ellipsis work in flexbox
52
+ display: flex;
53
+ flex-direction: column;
60
54
  font-weight: 400;
61
55
  color: kit-variables.$gd-color-text;
62
56
  font-size: 14px;
57
+ line-height: 20px;
63
58
 
64
- &--history {
65
- @include ellipsis(1.4rem);
66
- }
67
-
68
- &--result {
69
- display: flex;
70
- flex-direction: column;
71
- }
72
-
73
- &__1 {
59
+ &__row {
74
60
  display: flex;
75
61
  flex-direction: row;
76
- align-items: center;
77
- gap: 0.3em;
78
- @include ellipsis(20px);
79
- }
62
+ gap: 5px;
80
63
 
81
- &__2 {
82
- @include ellipsis(20px);
83
- color: kit-variables.$gd-color-state-blank;
64
+ &:not(:first-child) {
65
+ color: kit-variables.$gd-color-state-blank;
66
+ }
84
67
  }
85
68
 
86
- &__lock-icon {
87
- width: 14px;
69
+ &__ellipsis {
70
+ white-space: nowrap;
71
+ overflow: hidden;
72
+ text-overflow: ellipsis;
73
+ flex-shrink: 1;
88
74
  }
89
75
  }
90
76
 
@@ -135,19 +121,13 @@
135
121
  }
136
122
  }
137
123
  }
124
+ }
138
125
 
139
- &__annotation {
140
- &:after {
141
- content: "\0000a0•\0000a0";
142
- }
143
-
144
- &:last-child:after {
145
- content: "";
146
- }
147
- }
126
+ &__bubble.bubble.bubble-light {
127
+ background: kit-variables.$gd-color-white;
148
128
  }
149
- }
150
129
 
151
- .gd-semantic-search__bubble.bubble.bubble-light {
152
- background: kit-variables.$gd-color-white;
130
+ &__bubble_trigger {
131
+ display: flex;
132
+ }
153
133
  }
@@ -1,8 +0,0 @@
1
- import * as React from "react";
2
- import { HeaderSearchButtonProps } from "./HeaderSearchButton.js";
3
- /**
4
- * A version of the search overlay that is optimized for mobile devices.
5
- * @internal
6
- */
7
- export declare const HeaderMobileSearch: ({ locale, ...props }: HeaderSearchButtonProps) => React.JSX.Element;
8
- //# sourceMappingURL=HeaderMobileSearch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeaderMobileSearch.d.ts","sourceRoot":"","sources":["../../src/internal/HeaderMobileSearch.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA+B,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAwB/F;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yBAA0B,uBAAuB,sBAI/E,CAAC"}
@@ -1,18 +0,0 @@
1
- // (C) 2007-2024 GoodData Corporation
2
- import * as React from "react";
3
- import { SearchOverlay } from "./SearchOverlay.js";
4
- import { MetadataTimezoneProvider } from "./metadataTimezoneContext.js";
5
- import { injectIntl } from "react-intl";
6
- import { IntlWrapper } from "@gooddata/sdk-ui";
7
- const HeaderMobileSearchCore = ({ onSelect, metadataTimezone, ...overlayProps }) => {
8
- return (React.createElement(MetadataTimezoneProvider, { value: metadataTimezone },
9
- React.createElement(SearchOverlay, { onSelect: onSelect, className: "gd-semantic-search__overlay--mobile", ...overlayProps })));
10
- };
11
- const HeaderMobileSearchWithIntl = injectIntl(HeaderMobileSearchCore);
12
- /**
13
- * A version of the search overlay that is optimized for mobile devices.
14
- * @internal
15
- */
16
- export const HeaderMobileSearch = ({ locale, ...props }) => (React.createElement(IntlWrapper, { locale: locale },
17
- React.createElement(HeaderMobileSearchWithIntl, { ...props })));
18
- //# sourceMappingURL=HeaderMobileSearch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeaderMobileSearch.js","sourceRoot":"","sources":["../../src/internal/HeaderMobileSearch.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,sBAAsB,GAA0C,CAAC,EACnE,QAAQ,EACR,gBAAgB,EAChB,GAAG,YAAY,EAClB,EAAE,EAAE;IACD,OAAO,CACH,oBAAC,wBAAwB,IAAC,KAAK,EAAE,gBAAgB;QAC7C,oBAAC,aAAa,IACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,qCAAqC,KAC3C,YAAY,GAClB,CACqB,CAC9B,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAEtE;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAA2B,EAAE,EAAE,CAAC,CACjF,oBAAC,WAAW,IAAC,MAAM,EAAE,MAAM;IACvB,oBAAC,0BAA0B,OAAK,KAAK,GAAI,CAC/B,CACjB,CAAC"}
@@ -1,31 +0,0 @@
1
- import React from "react";
2
- import { SearchOverlayProps } from "./SearchOverlay.js";
3
- import { ISemanticSearchResultItem } from "@gooddata/sdk-model";
4
- import { IIntlWrapperProps } from "@gooddata/sdk-ui";
5
- /**
6
- * Props for the HeaderSearchButton component.
7
- * @internal
8
- */
9
- export type HeaderSearchButtonCoreProps = SearchOverlayProps & {
10
- /**
11
- * Callback to be called when an item is selected.
12
- * @param item - the selected item
13
- * @param e - the event that triggered the selection
14
- * @param itemUrl - the URL of the selected item, if available
15
- */
16
- onSelect: (item: ISemanticSearchResultItem, e: MouseEvent | KeyboardEvent, itemUrl?: string) => void;
17
- /**
18
- * Timezone in which metadata created and updated dates are saved.
19
- * It's used to convert the date to the user's local timezone for display.
20
- */
21
- metadataTimezone?: string;
22
- };
23
- export type HeaderSearchButtonProps = Omit<HeaderSearchButtonCoreProps, "intl"> & Pick<IIntlWrapperProps, "locale">;
24
- /**
25
- * A search button / drop down trigger for the Header menu
26
- * @internal
27
- */
28
- export declare const HeaderSearchButton: ({ locale, ...props }: Omit<HeaderSearchButtonProps, "intl"> & {
29
- locale?: string | undefined;
30
- }) => React.JSX.Element;
31
- //# sourceMappingURL=HeaderSearchButton.d.ts.map
@@ -1 +0,0 @@
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;AAEhE,OAAO,EAAE,iBAAiB,EAAe,MAAM,kBAAkB,CAAC;AAIlE;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,kBAAkB,GAAG;IAC3D;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrG;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AA2EF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,GAC3E,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;uBAS9B,CAAC"}
@@ -1,50 +0,0 @@
1
- // (C) 2007-2024 GoodData Corporation
2
- import React from "react";
3
- import cx from "classnames";
4
- import { FormattedMessage, injectIntl } from "react-intl";
5
- import { Button, Overlay } from "@gooddata/sdk-ui-kit";
6
- import { SearchOverlay } from "./SearchOverlay.js";
7
- import { MetadataTimezoneProvider } from "./metadataTimezoneContext.js";
8
- import { IntlWrapper } from "@gooddata/sdk-ui";
9
- const ALIGN_POINTS = [{ align: "br tr" }];
10
- const HeaderSearchButtonCore = ({ onSelect, metadataTimezone, ...overlayProps }) => {
11
- const [isOpen, setIsOpen] = React.useState(false);
12
- const classNames = cx("gd-header-measure", "gd-header-button", "gd-header-search", { "is-open": isOpen });
13
- // Handle Cmd+K and Ctrl+K shortcuts
14
- React.useEffect(() => {
15
- const shortcutHandler = (event) => {
16
- if (event.key === "k" && (event.ctrlKey || event.metaKey)) {
17
- setIsOpen(true);
18
- }
19
- };
20
- if (!isOpen) {
21
- document.addEventListener("keydown", shortcutHandler);
22
- }
23
- return () => {
24
- document.removeEventListener("keydown", shortcutHandler);
25
- };
26
- }, [isOpen]);
27
- // Inject dialog closing into a callback
28
- const handleSelect = React.useCallback((item, e, url) => {
29
- setIsOpen(false);
30
- return onSelect(item, e, url);
31
- }, [onSelect, setIsOpen]);
32
- return (React.createElement(Button, { title: overlayProps.intl.formatMessage({ id: "gs.header.search" }), className: classNames, onClick: () => setIsOpen(true) },
33
- React.createElement("span", { className: "gd-icon-header-search-button" }),
34
- React.createElement("span", { className: "gd-header-search-label" },
35
- React.createElement(FormattedMessage, { id: "gs.header.search" })),
36
- isOpen ? (React.createElement(Overlay, { isModal: false, alignTo: ".gd-header-search", alignPoints: ALIGN_POINTS, closeOnEscape: true, closeOnOutsideClick: true, closeOnParentScroll: false, closeOnMouseDrag: false, onClose: () => setIsOpen(false), ignoreClicksOnByClass: [".gd-bubble", ".gd-semantic-search__results-item"] },
37
- React.createElement(MetadataTimezoneProvider, { value: metadataTimezone },
38
- React.createElement("div", { className: "gd-dialog gd-dropdown overlay gd-header-search-dropdown" },
39
- React.createElement(SearchOverlay, { onSelect: handleSelect, className: "gd-semantic-search__overlay--fixed", ...overlayProps }))))) : null));
40
- };
41
- const HeaderSearchButtonWithIntl = injectIntl(HeaderSearchButtonCore);
42
- /**
43
- * A search button / drop down trigger for the Header menu
44
- * @internal
45
- */
46
- export const HeaderSearchButton = ({ locale, ...props }) => {
47
- return (React.createElement(IntlWrapper, { locale: locale },
48
- React.createElement(HeaderSearchButtonWithIntl, { ...props })));
49
- };
50
- //# sourceMappingURL=HeaderSearchButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeaderSearchButton.js","sourceRoot":"","sources":["../../src/internal/HeaderSearchButton.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderLoack.d.ts","sourceRoot":"","sources":["../../src/utils/renderLoack.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,eAAO,MAAM,UAAU,aAAc,SAAS,yBAAyB,CAAC,6BAIvE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderLoack.js","sourceRoot":"","sources":["../../src/utils/renderLoack.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAA6C,EAAE,EAAE;IACxE,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,oBAAC,IAAI,CAAC,IAAI,IAAC,SAAS,EAAC,mDAAmD,GAAG,CAAC;AACvF,CAAC,CAAC"}