@gooddata/sdk-ui-semantic-search 10.9.0-alpha.0 → 10.9.0-alpha.10
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.
- package/esm/SemanticSearch.d.ts.map +1 -1
- package/esm/SemanticSearch.js +6 -17
- package/esm/SemanticSearch.js.map +1 -1
- package/esm/hooks/index.d.ts +1 -0
- package/esm/hooks/index.d.ts.map +1 -1
- package/esm/hooks/index.js +1 -0
- package/esm/hooks/index.js.map +1 -1
- package/esm/hooks/useElementWidth.d.ts +9 -0
- package/esm/hooks/useElementWidth.d.ts.map +1 -0
- package/esm/hooks/useElementWidth.js +32 -0
- package/esm/hooks/useElementWidth.js.map +1 -0
- package/esm/internal/HeaderMobileSearch.d.ts +10 -0
- package/esm/internal/HeaderMobileSearch.d.ts.map +1 -0
- package/esm/internal/HeaderMobileSearch.js +15 -0
- package/esm/internal/HeaderMobileSearch.js.map +1 -0
- package/esm/internal/HeaderSearchButton.d.ts +12 -1
- package/esm/internal/HeaderSearchButton.d.ts.map +1 -1
- package/esm/internal/HeaderSearchButton.js +10 -4
- package/esm/internal/HeaderSearchButton.js.map +1 -1
- package/esm/internal/SearchList.d.ts +1 -1
- package/esm/internal/SearchList.d.ts.map +1 -1
- package/esm/internal/SearchOverlay.d.ts +4 -0
- package/esm/internal/SearchOverlay.d.ts.map +1 -1
- package/esm/internal/SearchOverlay.js +15 -14
- package/esm/internal/SearchOverlay.js.map +1 -1
- package/esm/internal/UpdateDate.d.ts +11 -3
- package/esm/internal/UpdateDate.d.ts.map +1 -1
- package/esm/internal/UpdateDate.js +9 -1
- package/esm/internal/UpdateDate.js.map +1 -1
- package/esm/internal/timezoneContext.d.ts +12 -0
- package/esm/internal/timezoneContext.d.ts.map +1 -0
- package/esm/internal/timezoneContext.js +14 -0
- package/esm/internal/timezoneContext.js.map +1 -0
- package/esm/internal.d.ts +1 -0
- package/esm/internal.d.ts.map +1 -1
- package/esm/internal.js +1 -0
- package/esm/internal.js.map +1 -1
- package/esm/sdk-ui-semantic-search.d.ts +8 -0
- package/package.json +7 -7
- package/styles/css/internal.css +22 -22
- package/styles/css/internal.css.map +1 -1
- package/styles/scss/internal.scss +35 -30
|
@@ -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;
|
|
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;AAK/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;AA2GF;;;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"}
|
package/esm/SemanticSearch.js
CHANGED
|
@@ -5,6 +5,7 @@ import { IntlWrapper } from "@gooddata/sdk-ui";
|
|
|
5
5
|
import { SearchResultsDropdownList } from "./SearchResultsDropdownList.js";
|
|
6
6
|
import { useSemanticSearch } from "./hooks/index.js";
|
|
7
7
|
import classnames from "classnames";
|
|
8
|
+
import { useElementWidth } from "./hooks/useElementWidth.js";
|
|
8
9
|
/**
|
|
9
10
|
* Search input debounce time.
|
|
10
11
|
* I.e. how long to wait after the user stops typing before sending the search request.
|
|
@@ -17,6 +18,7 @@ const DEBOUNCE = 300;
|
|
|
17
18
|
const SemanticSearchCore = ({ backend, workspace, onSelect, onError, objectTypes, deepSearch = false, limit = 10, className, placeholder, }) => {
|
|
18
19
|
// Input value handling
|
|
19
20
|
const [value, setValue, searchTerm, setImmediate] = useDebouncedState("", DEBOUNCE);
|
|
21
|
+
const inputRef = React.useRef(null);
|
|
20
22
|
// Search results
|
|
21
23
|
const { searchStatus, searchResults, searchError } = useSemanticSearch({
|
|
22
24
|
backend,
|
|
@@ -28,22 +30,8 @@ const SemanticSearchCore = ({ backend, workspace, onSelect, onError, objectTypes
|
|
|
28
30
|
});
|
|
29
31
|
// Build list items for rendering
|
|
30
32
|
const listItems = React.useMemo(() => searchResults.map((item) => ({ item })), [searchResults]);
|
|
31
|
-
//
|
|
32
|
-
const [
|
|
33
|
-
const inputRef = React.useRef(null);
|
|
34
|
-
React.useLayoutEffect(() => {
|
|
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
|
-
};
|
|
46
|
-
}, []);
|
|
33
|
+
// The List component requires explicit width
|
|
34
|
+
const [ref, width] = useElementWidth();
|
|
47
35
|
// Report errors
|
|
48
36
|
React.useEffect(() => {
|
|
49
37
|
if (onError && searchStatus === "error") {
|
|
@@ -70,7 +58,8 @@ const SemanticSearchCore = ({ backend, workspace, onSelect, onError, objectTypes
|
|
|
70
58
|
onSelect(item);
|
|
71
59
|
} }));
|
|
72
60
|
}, renderButton: ({ openDropdown }) => {
|
|
73
|
-
return (React.createElement(
|
|
61
|
+
return (React.createElement("div", { ref: ref },
|
|
62
|
+
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 })));
|
|
74
63
|
} }));
|
|
75
64
|
};
|
|
76
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SemanticSearch.js","sourceRoot":"","sources":["../src/SemanticSearch.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,UAAU,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"SemanticSearch.js","sourceRoot":"","sources":["../src/SemanticSearch.tsx"],"names":[],"mappings":"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"}
|
package/esm/hooks/index.d.ts
CHANGED
package/esm/hooks/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAEA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAEA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
package/esm/hooks/index.js
CHANGED
package/esm/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* List and DropdownList components require explicit width to render correctly.
|
|
4
|
+
* This hook measures the width of the input element and returns it.
|
|
5
|
+
* There are no UTs for this because jsdom does not compute element dimensions.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const useElementWidth: () => [React.RefCallback<HTMLElement>, number];
|
|
9
|
+
//# sourceMappingURL=useElementWidth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useElementWidth.d.ts","sourceRoot":"","sources":["../../src/hooks/useElementWidth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,CAAC,MAAM,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,CA2BzE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// (C) 2007-2024 GoodData Corporation
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* List and DropdownList components require explicit width to render correctly.
|
|
5
|
+
* This hook measures the width of the input element and returns it.
|
|
6
|
+
* There are no UTs for this because jsdom does not compute element dimensions.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export const useElementWidth = () => {
|
|
10
|
+
const [width, setWidth] = React.useState(0);
|
|
11
|
+
const observer = React.useMemo(() => {
|
|
12
|
+
return new ResizeObserver((entries) => {
|
|
13
|
+
// We're always listening to one element at a time
|
|
14
|
+
const entry = entries[0];
|
|
15
|
+
if (entry) {
|
|
16
|
+
setWidth(entry.target.offsetWidth);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}, []);
|
|
20
|
+
const elementRef = React.useCallback((element) => {
|
|
21
|
+
if (!element) {
|
|
22
|
+
// React will call the ref with null when unmounting
|
|
23
|
+
observer.disconnect();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// Capture width and assign a resize observer
|
|
27
|
+
setWidth(element.offsetWidth);
|
|
28
|
+
observer.observe(element);
|
|
29
|
+
}, [observer]);
|
|
30
|
+
return [elementRef, width];
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=useElementWidth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useElementWidth.js","sourceRoot":"","sources":["../../src/hooks/useElementWidth.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAA6C,EAAE;IAC1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAChC,OAAO,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAClC,kDAAkD;YAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,EAAE,CAAC;gBACR,QAAQ,CAAE,KAAK,CAAC,MAAsB,CAAC,WAAW,CAAC,CAAC;YACxD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,OAA2B,EAAE,EAAE;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,oDAAoD;YACpD,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,6CAA6C;QAC7C,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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: React.FC<import("react-intl").WithIntlProps<HeaderSearchButtonProps>> & {
|
|
8
|
+
WrappedComponent: React.ComponentType<HeaderSearchButtonProps>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=HeaderMobileSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAqBlE;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;CAAqC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// (C) 2007-2024 GoodData Corporation
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { SearchOverlay } from "./SearchOverlay.js";
|
|
4
|
+
import { TimezoneProvider } from "./timezoneContext.js";
|
|
5
|
+
import { injectIntl } from "react-intl";
|
|
6
|
+
const HeaderMobileSearchCore = ({ onSelect, metadataTimezone, ...overlayProps }) => {
|
|
7
|
+
return (React.createElement(TimezoneProvider, { value: metadataTimezone },
|
|
8
|
+
React.createElement(SearchOverlay, { onSelect: onSelect, className: "gd-semantic-search__overlay--mobile", ...overlayProps })));
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* A version of the search overlay that is optimized for mobile devices.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export const HeaderMobileSearch = injectIntl(HeaderMobileSearchCore);
|
|
15
|
+
//# sourceMappingURL=HeaderMobileSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,sBAAsB,GAAsC,CAAC,EAC/D,QAAQ,EACR,gBAAgB,EAChB,GAAG,YAAY,EAClB,EAAE,EAAE;IACD,OAAO,CACH,oBAAC,gBAAgB,IAAC,KAAK,EAAE,gBAAgB;QACrC,oBAAC,aAAa,IACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,qCAAqC,KAC3C,YAAY,GAClB,CACa,CACtB,CAAC;AACN,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { SearchOverlayProps } from "./SearchOverlay.js";
|
|
3
3
|
import { ISemanticSearchResultItem } from "@gooddata/sdk-model";
|
|
4
|
+
/**
|
|
5
|
+
* Props for the HeaderSearchButton component.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
4
8
|
export type HeaderSearchButtonProps = SearchOverlayProps & {
|
|
5
9
|
/**
|
|
6
10
|
* Callback to be called when an item is selected.
|
|
@@ -9,8 +13,15 @@ export type HeaderSearchButtonProps = SearchOverlayProps & {
|
|
|
9
13
|
* @param itemUrl - the URL of the selected item, if available
|
|
10
14
|
*/
|
|
11
15
|
onSelect: (item: ISemanticSearchResultItem, e: MouseEvent | KeyboardEvent, itemUrl?: string) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Timezone to use for formatting dates.
|
|
18
|
+
*/
|
|
19
|
+
metadataTimezone?: string;
|
|
12
20
|
};
|
|
13
|
-
|
|
21
|
+
/**
|
|
22
|
+
* A search button / drop down trigger for the Header menu
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
14
25
|
export declare const HeaderSearchButton: React.FC<import("react-intl").WithIntlProps<HeaderSearchButtonProps>> & {
|
|
15
26
|
WrappedComponent: React.ComponentType<HeaderSearchButtonProps>;
|
|
16
27
|
};
|
|
@@ -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;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,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;AAKhE;;;GAGG;AACH,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;IACrG;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAyEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;CAAqC,CAAC"}
|
|
@@ -4,8 +4,9 @@ import cx from "classnames";
|
|
|
4
4
|
import { FormattedMessage, injectIntl } from "react-intl";
|
|
5
5
|
import { Button, Overlay } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import { SearchOverlay } from "./SearchOverlay.js";
|
|
7
|
+
import { TimezoneProvider } from "./timezoneContext.js";
|
|
7
8
|
const ALIGN_POINTS = [{ align: "br tr" }];
|
|
8
|
-
|
|
9
|
+
const HeaderSearchButtonCore = ({ onSelect, metadataTimezone, ...overlayProps }) => {
|
|
9
10
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
10
11
|
const classNames = cx("gd-header-measure", "gd-header-button", "gd-header-search", { "is-open": isOpen });
|
|
11
12
|
// Handle Cmd+K and Ctrl+K shortcuts
|
|
@@ -28,12 +29,17 @@ export const HeaderSearchButtonCore = ({ onSelect, ...overlayProps }) => {
|
|
|
28
29
|
return onSelect(item, e, url);
|
|
29
30
|
}, [onSelect, setIsOpen]);
|
|
30
31
|
return (React.createElement(Button, { title: overlayProps.intl.formatMessage({ id: "gs.header.search" }), className: classNames, onClick: () => setIsOpen(true) },
|
|
31
|
-
React.createElement("span", { className: "gd-icon-header-search" }),
|
|
32
|
+
React.createElement("span", { className: "gd-icon-header-search-button" }),
|
|
32
33
|
React.createElement("span", { className: "gd-header-search-label" },
|
|
33
34
|
React.createElement(FormattedMessage, { id: "gs.header.search" })),
|
|
34
35
|
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"] },
|
|
35
|
-
React.createElement(
|
|
36
|
-
React.createElement(
|
|
36
|
+
React.createElement(TimezoneProvider, { value: metadataTimezone },
|
|
37
|
+
React.createElement("div", { className: "gd-dialog gd-dropdown overlay gd-header-search-dropdown" },
|
|
38
|
+
React.createElement(SearchOverlay, { onSelect: handleSelect, className: "gd-semantic-search__overlay--fixed", ...overlayProps }))))) : null));
|
|
37
39
|
};
|
|
40
|
+
/**
|
|
41
|
+
* A search button / drop down trigger for the Header menu
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
38
44
|
export const HeaderSearchButton = injectIntl(HeaderSearchButtonCore);
|
|
39
45
|
//# sourceMappingURL=HeaderSearchButton.js.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"HeaderSearchButton.js","sourceRoot":"","sources":["../../src/internal/HeaderSearchButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchList.d.ts","sourceRoot":"","sources":["../../src/internal/SearchList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAItD;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchList.d.ts","sourceRoot":"","sources":["../../src/internal/SearchList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAItD;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;IACrE;;OAEG;IACH,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,yFAqBtB,CAAC"}
|
|
@@ -31,6 +31,10 @@ export type SearchOverlayProps = WrappedComponentProps & {
|
|
|
31
31
|
* A limit of search results to return.
|
|
32
32
|
*/
|
|
33
33
|
limit?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Additional CSS class for the component.
|
|
36
|
+
*/
|
|
37
|
+
className?: string;
|
|
34
38
|
};
|
|
35
39
|
/**
|
|
36
40
|
* A component that allows users to search for insights, metrics, attributes, and other objects using semantic search.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchOverlay.d.ts","sourceRoot":"","sources":["../../src/internal/SearchOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchOverlay.d.ts","sourceRoot":"","sources":["../../src/internal/SearchOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAoB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AA+B/D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG;IACrD;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrG;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;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,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6JtD,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// (C) 2024 GoodData Corporation
|
|
2
2
|
import * as React from "react";
|
|
3
|
+
import classnames from "classnames";
|
|
3
4
|
import { FormattedMessage } from "react-intl";
|
|
4
5
|
import { Input, LoadingMask, Message, useDebouncedState } from "@gooddata/sdk-ui-kit";
|
|
5
6
|
import { useWorkspaceStrict, useLocalStorage } from "@gooddata/sdk-ui";
|
|
6
|
-
import { useSemanticSearch } from "../hooks/index.js";
|
|
7
|
+
import { useSemanticSearch, useElementWidth } from "../hooks/index.js";
|
|
7
8
|
import { getUIPath } from "../utils/getUIPath.js";
|
|
8
9
|
import { SearchList } from "./SearchList.js";
|
|
9
10
|
import { HistoryItem } from "./HistoryItem.js";
|
|
@@ -16,10 +17,6 @@ const DEBOUNCE = 300;
|
|
|
16
17
|
* A height of the loading mask.
|
|
17
18
|
*/
|
|
18
19
|
const LOADING_HEIGHT = 100;
|
|
19
|
-
/**
|
|
20
|
-
* A width of the search drop-down.
|
|
21
|
-
*/
|
|
22
|
-
const SEARCH_OVERLAY_WIDTH = 440;
|
|
23
20
|
/**
|
|
24
21
|
* Max search history length.
|
|
25
22
|
*/
|
|
@@ -37,7 +34,7 @@ const SEARCH_HISTORY_EMPTY = [];
|
|
|
37
34
|
* The internal version is meant to be used in an overlay inside the Header.
|
|
38
35
|
* @internal
|
|
39
36
|
*/
|
|
40
|
-
export const SearchOverlay = ({ onSelect, backend, workspace, objectTypes, deepSearch, limit = 6, intl, }) => {
|
|
37
|
+
export const SearchOverlay = ({ onSelect, backend, workspace, objectTypes, deepSearch, limit = 6, className, intl, }) => {
|
|
41
38
|
// Input value handling
|
|
42
39
|
const [value, setValue, searchTerm, setImmediate] = useDebouncedState("", DEBOUNCE);
|
|
43
40
|
// Search results
|
|
@@ -53,13 +50,15 @@ export const SearchOverlay = ({ onSelect, backend, workspace, objectTypes, deepS
|
|
|
53
50
|
// Results wrapped into ListItems
|
|
54
51
|
const searchResultsItems = React.useMemo(() => searchResults.flatMap((item) => {
|
|
55
52
|
// Look up parent items if available
|
|
56
|
-
const
|
|
57
|
-
|
|
53
|
+
const parentDashboards = relationships.filter((rel) => rel.targetObjectId === item.id &&
|
|
54
|
+
rel.targetObjectType === item.type &&
|
|
55
|
+
rel.sourceObjectType === "dashboard");
|
|
56
|
+
if (!parentDashboards.length)
|
|
58
57
|
return {
|
|
59
58
|
item,
|
|
60
59
|
url: getUIPath(item.type, item.id, effectiveWorkspace),
|
|
61
60
|
};
|
|
62
|
-
return
|
|
61
|
+
return parentDashboards.map((parent) => ({
|
|
63
62
|
item,
|
|
64
63
|
parentRef: parent,
|
|
65
64
|
url: getUIPath(parent.sourceObjectType, parent.sourceObjectId, effectiveWorkspace),
|
|
@@ -93,12 +92,14 @@ export const SearchOverlay = ({ onSelect, backend, workspace, objectTypes, deepS
|
|
|
93
92
|
console.error(searchError);
|
|
94
93
|
}
|
|
95
94
|
}, [searchStatus, searchError]);
|
|
96
|
-
|
|
95
|
+
// The List component requires explicit width
|
|
96
|
+
const [ref, width] = useElementWidth();
|
|
97
|
+
return (React.createElement("div", { ref: ref, className: classnames("gd-semantic-search__overlay", className) },
|
|
97
98
|
React.createElement(Input, { className: "gd-semantic-search__overlay-input", autofocus: true, placeholder: intl.formatMessage({ id: "semantic-search.placeholder" }), isSearch: true, clearOnEsc: true, value: value, onChange: (e) => setValue(String(e)) }),
|
|
98
99
|
(() => {
|
|
99
100
|
switch (searchStatus) {
|
|
100
101
|
case "loading":
|
|
101
|
-
return React.createElement(LoadingMask, {
|
|
102
|
+
return React.createElement(LoadingMask, { height: LOADING_HEIGHT });
|
|
102
103
|
case "error":
|
|
103
104
|
return (React.createElement("div", { className: "gd-semantic-search__overlay-error" },
|
|
104
105
|
React.createElement(Message, { type: "error" },
|
|
@@ -110,10 +111,10 @@ export const SearchOverlay = ({ onSelect, backend, workspace, objectTypes, deepS
|
|
|
110
111
|
return (React.createElement("div", { className: "gd-semantic-search__overlay-no-results" },
|
|
111
112
|
React.createElement(FormattedMessage, { id: "semantic-search.no-results", values: { query: searchTerm } })));
|
|
112
113
|
}
|
|
113
|
-
return (React.createElement(SearchList, { items: searchResultsItems, width:
|
|
114
|
+
return (React.createElement(SearchList, { items: searchResultsItems, width: width, onSelect: onResultSelect, ItemComponent: AnnotatedResultsItem }));
|
|
114
115
|
case "idle":
|
|
115
|
-
if (
|
|
116
|
-
return (React.createElement(SearchList, { items: searchHistoryItems, width:
|
|
116
|
+
if (searchHistoryItems.length) {
|
|
117
|
+
return (React.createElement(SearchList, { items: searchHistoryItems, width: width, onSelect: onHistorySelect, ItemComponent: HistoryItem }));
|
|
117
118
|
}
|
|
118
119
|
// fallthrough
|
|
119
120
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchOverlay.js","sourceRoot":"","sources":["../../src/internal/SearchOverlay.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;AAGrE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchOverlay.js","sourceRoot":"","sources":["../../src/internal/SearchOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { ListItem } from "../types.js";
|
|
2
2
|
import { ISemanticSearchResultItem } from "@gooddata/sdk-model";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Props for the update date component.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export type UpdateDateProps = {
|
|
5
9
|
listItem: ListItem<ISemanticSearchResultItem>;
|
|
6
|
-
timezone?: string;
|
|
7
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Rendering the update date as memoized component.
|
|
13
|
+
* The list rendering was lagging and React Performance tools showed that
|
|
14
|
+
* the date formatting was one of the bottlenecks.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
8
17
|
export declare const UpdatedDate: React.NamedExoticComponent<UpdateDateProps>;
|
|
9
|
-
export {};
|
|
10
18
|
//# sourceMappingURL=UpdateDate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateDate.d.ts","sourceRoot":"","sources":["../../src/internal/UpdateDate.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UpdateDate.d.ts","sourceRoot":"","sources":["../../src/internal/UpdateDate.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;CACjD,CAAC;AAQF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,6CAyBtB,CAAC"}
|
|
@@ -2,12 +2,20 @@
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { getDateTimeConfig } from "@gooddata/sdk-ui-kit";
|
|
4
4
|
import { defineMessages, FormattedDate, FormattedMessage, FormattedTime } from "react-intl";
|
|
5
|
+
import { useTimezone } from "./timezoneContext.js";
|
|
5
6
|
const messages = defineMessages({
|
|
6
7
|
today: { id: "gs.date.today" },
|
|
7
8
|
yesterday: { id: "gs.date.yesterday" },
|
|
8
9
|
at: { id: "gs.date.at" },
|
|
9
10
|
});
|
|
10
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Rendering the update date as memoized component.
|
|
13
|
+
* The list rendering was lagging and React Performance tools showed that
|
|
14
|
+
* the date formatting was one of the bottlenecks.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export const UpdatedDate = React.memo(function UpdatedDate({ listItem: { item } }) {
|
|
18
|
+
const timezone = useTimezone();
|
|
11
19
|
const timestamp = item.modifiedAt ?? item.createdAt;
|
|
12
20
|
if (!timestamp)
|
|
13
21
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateDate.js","sourceRoot":"","sources":["../../src/internal/UpdateDate.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAIhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"UpdateDate.js","sourceRoot":"","sources":["../../src/internal/UpdateDate.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAIhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAUnD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC5B,KAAK,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE;IAC9B,SAAS,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE;IACtC,EAAE,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;CAC3B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAmB;IAC9F,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;IAEpD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;IAEhF,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,CACH;YACI,oBAAC,gBAAgB,IAAC,EAAE,EAAE,YAAY,GAAI;;YAEtC,oBAAC,gBAAgB,IAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAI;;YAExC,oBAAC,aAAa,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAC,SAAS,EAAC,MAAM,EAAC,SAAS,GAAG,CAClE,CACV,CAAC;IACN,CAAC;SAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QAC9B,OAAO,oBAAC,aAAa,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,GAAG,CAAC;IAC7E,CAAC;IAED,OAAO,oBAAC,aAAa,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,SAAS,GAAG,CAAC;AAC5F,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Provider for the timezone context.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare const TimezoneProvider: React.Provider<string | undefined>;
|
|
7
|
+
/**
|
|
8
|
+
* Hook for accessing the timezone from the context.
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare const useTimezone: () => string | undefined;
|
|
12
|
+
//# sourceMappingURL=timezoneContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezoneContext.d.ts","sourceRoot":"","sources":["../../src/internal/timezoneContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;GAGG;AACH,eAAO,MAAM,gBAAgB,oCAA2B,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,WAAW,0BAA0C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
const timezoneContext = React.createContext(undefined);
|
|
4
|
+
/**
|
|
5
|
+
* Provider for the timezone context.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export const TimezoneProvider = timezoneContext.Provider;
|
|
9
|
+
/**
|
|
10
|
+
* Hook for accessing the timezone from the context.
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export const useTimezone = () => React.useContext(timezoneContext);
|
|
14
|
+
//# sourceMappingURL=timezoneContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezoneContext.js","sourceRoot":"","sources":["../../src/internal/timezoneContext.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAqB,SAAS,CAAC,CAAC;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC"}
|
package/esm/internal.d.ts
CHANGED
package/esm/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC"}
|
package/esm/internal.js
CHANGED
package/esm/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC;;;;;GAKG;AAEH,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC;;;;;GAKG;AAEH,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC"}
|
|
@@ -125,6 +125,14 @@ export declare type SemanticSearchProps = SemanticSearchCoreProps & {
|
|
|
125
125
|
locale?: string;
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
+
/**
|
|
129
|
+
* List and DropdownList components require explicit width to render correctly.
|
|
130
|
+
* This hook measures the width of the input element and returns it.
|
|
131
|
+
* There are no UTs for this because jsdom does not compute element dimensions.
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
export declare const useElementWidth: () => [React_2.RefCallback<HTMLElement>, number];
|
|
135
|
+
|
|
128
136
|
/**
|
|
129
137
|
* This hook provides keyboard navigation for a list of items. It listens to ArrowUp, ArrowDown and Enter keys and
|
|
130
138
|
* calls the onSelect callback when Enter is pressed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-semantic-search",
|
|
3
|
-
"version": "10.9.0-alpha.
|
|
3
|
+
"version": "10.9.0-alpha.10",
|
|
4
4
|
"description": "GoodData SDK TypeScript & React skeleton",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -37,11 +37,11 @@
|
|
|
37
37
|
"react-intl": "^6.4.1",
|
|
38
38
|
"tslib": "^2.5.0",
|
|
39
39
|
"classnames": "^2.3.1",
|
|
40
|
-
"@gooddata/sdk-model": "10.9.0-alpha.
|
|
41
|
-
"@gooddata/sdk-ui
|
|
42
|
-
"@gooddata/sdk-backend-spi": "10.9.0-alpha.
|
|
43
|
-
"@gooddata/sdk-ui": "10.9.0-alpha.
|
|
44
|
-
"@gooddata/sdk-ui-
|
|
40
|
+
"@gooddata/sdk-model": "10.9.0-alpha.10",
|
|
41
|
+
"@gooddata/sdk-ui": "10.9.0-alpha.10",
|
|
42
|
+
"@gooddata/sdk-backend-spi": "10.9.0-alpha.10",
|
|
43
|
+
"@gooddata/sdk-ui-theme-provider": "10.9.0-alpha.10",
|
|
44
|
+
"@gooddata/sdk-ui-kit": "10.9.0-alpha.10"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"react": "^16.10.0 || ^17.0.0 || ^18.0.0",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"stylelint": "^13.8.0",
|
|
84
84
|
"stylelint-checkstyle-formatter": "^0.1.2",
|
|
85
85
|
"stylelint-config-prettier": "^8.0.2",
|
|
86
|
-
"@gooddata/sdk-backend-mockingbird": "10.9.0-alpha.
|
|
86
|
+
"@gooddata/sdk-backend-mockingbird": "10.9.0-alpha.10"
|
|
87
87
|
},
|
|
88
88
|
"scripts": {
|
|
89
89
|
"clean": "rm -rf ci dist esm coverage *.log styles/css tsconfig.tsbuildinfo",
|
package/styles/css/internal.css
CHANGED
|
@@ -111,10 +111,15 @@
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
.gd-semantic-search__overlay {
|
|
114
|
-
width: 440px;
|
|
115
114
|
background: var(--gd-palette-complementary-0, #fff);
|
|
116
115
|
margin: 10px 0;
|
|
117
116
|
}
|
|
117
|
+
.gd-semantic-search__overlay--fixed {
|
|
118
|
+
width: 440px;
|
|
119
|
+
}
|
|
120
|
+
.gd-semantic-search__overlay--mobile .gd-semantic-search__overlay-input {
|
|
121
|
+
margin-bottom: 10px;
|
|
122
|
+
}
|
|
118
123
|
.gd-semantic-search__overlay-input {
|
|
119
124
|
margin: 0 10px;
|
|
120
125
|
}
|
|
@@ -140,7 +145,9 @@
|
|
|
140
145
|
transition: all 0.2s;
|
|
141
146
|
font-size: 14px;
|
|
142
147
|
font-weight: 400;
|
|
143
|
-
|
|
148
|
+
position: relative;
|
|
149
|
+
box-sizing: border-box;
|
|
150
|
+
padding: 0 34px 2px 13px;
|
|
144
151
|
overflow: hidden;
|
|
145
152
|
white-space: nowrap;
|
|
146
153
|
text-overflow: ellipsis;
|
|
@@ -148,18 +155,6 @@
|
|
|
148
155
|
.gd-header-search:hover, .gd-header-search.is-open {
|
|
149
156
|
opacity: 1;
|
|
150
157
|
}
|
|
151
|
-
.gd-header-search.is-open {
|
|
152
|
-
background-color: rgba(255, 255, 255, 0.3);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
.gd-header-search {
|
|
156
|
-
position: relative;
|
|
157
|
-
box-sizing: border-box;
|
|
158
|
-
padding-right: 34px;
|
|
159
|
-
}
|
|
160
|
-
.gd-header-search:hover {
|
|
161
|
-
background: rgba(255, 255, 255, 0.3);
|
|
162
|
-
}
|
|
163
158
|
.gd-header-search::after {
|
|
164
159
|
content: "\e612";
|
|
165
160
|
position: absolute;
|
|
@@ -176,16 +171,12 @@
|
|
|
176
171
|
.gd-header-search.is-open::after {
|
|
177
172
|
content: "\e613";
|
|
178
173
|
}
|
|
179
|
-
|
|
180
|
-
.
|
|
181
|
-
vertical-align: middle;
|
|
182
|
-
opacity: 0.8;
|
|
183
|
-
margin-right: 6px;
|
|
174
|
+
.gd-header-search:hover {
|
|
175
|
+
background: rgba(255, 255, 255, 0.3);
|
|
184
176
|
}
|
|
185
|
-
.gd-
|
|
186
|
-
|
|
177
|
+
.gd-header-search.is-open {
|
|
178
|
+
background-color: rgba(255, 255, 255, 0.3);
|
|
187
179
|
}
|
|
188
|
-
|
|
189
180
|
.gd-header-search-dropdown {
|
|
190
181
|
overflow: hidden;
|
|
191
182
|
}
|
|
@@ -197,4 +188,13 @@
|
|
|
197
188
|
font-weight: 400;
|
|
198
189
|
}
|
|
199
190
|
|
|
191
|
+
.gd-icon-header-search-button {
|
|
192
|
+
vertical-align: middle;
|
|
193
|
+
opacity: 0.8;
|
|
194
|
+
margin-right: 6px;
|
|
195
|
+
}
|
|
196
|
+
.gd-icon-header-search-button::before {
|
|
197
|
+
content: "\e62b";
|
|
198
|
+
}
|
|
199
|
+
|
|
200
200
|
/*# sourceMappingURL=internal.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../node_modules/@gooddata/sdk-ui-kit/styles/scss/mixins.scss","../scss/main.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/variables.scss","../scss/internal.scss"],"names":[],"mappings":";AA0HA;AA4DA;AC1JI;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;EApDR;EACA,aAoD8B;EAnD9B;EACA;EACA;;AAoDQ;EAxDR;EACA,aAwD8B;EAvD9B;EACA;EACA;EAsDY,OCvDO;;AD2Df;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA,OCzFG;;AD+FX;EACI;;AAGJ;EACI;;;AAMhB;EACI,YCjHa;;;ACRb;EACI
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../node_modules/@gooddata/sdk-ui-kit/styles/scss/mixins.scss","../scss/main.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/variables.scss","../scss/internal.scss"],"names":[],"mappings":";AA0HA;AA4DA;AC1JI;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;EApDR;EACA,aAoD8B;EAnD9B;EACA;EACA;;AAoDQ;EAxDR;EACA,aAwD8B;EAvD9B;EACA;EACA;EAsDY,OCvDO;;AD2Df;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA,OCzFG;;AD+FX;EACI;;AAGJ;EACI;;;AAMhB;EACI,YCjHa;;;ACRb;EACI,YDOS;ECNT;;AAEA;EACI;;AAIA;EACI;;AAKZ;EACI;;AAGJ;EAEI;EACA;EACA;EACA,ODVe;;ACanB;EACI;;AAGJ;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EH6DA;EACA;EACA,eAHwB;;AGxDxB;EAEI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aDqBS;ECpBT;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAEA;EACI;;AAEA;EACI,aDJE;ECKF;;;AAMhB;EACI;EACA;EACA;;AAEA;EACI","file":"internal.css"}
|
|
@@ -8,9 +8,18 @@
|
|
|
8
8
|
|
|
9
9
|
.gd-semantic-search {
|
|
10
10
|
&__overlay {
|
|
11
|
-
width: 440px;
|
|
12
11
|
background: kit-variables.$gd-color-white;
|
|
13
12
|
margin: 10px 0;
|
|
13
|
+
|
|
14
|
+
&--fixed {
|
|
15
|
+
width: 440px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&--mobile {
|
|
19
|
+
.gd-semantic-search__overlay-input {
|
|
20
|
+
margin-bottom: 10px;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
14
23
|
}
|
|
15
24
|
|
|
16
25
|
&__overlay-input {
|
|
@@ -43,7 +52,9 @@
|
|
|
43
52
|
transition: all 0.2s;
|
|
44
53
|
font-size: 14px;
|
|
45
54
|
font-weight: 400;
|
|
46
|
-
|
|
55
|
+
position: relative;
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
padding: 0 34px 2px 13px;
|
|
47
58
|
|
|
48
59
|
@include kit-mixins.text-overflow;
|
|
49
60
|
|
|
@@ -52,20 +63,6 @@
|
|
|
52
63
|
opacity: 1;
|
|
53
64
|
}
|
|
54
65
|
|
|
55
|
-
&.is-open {
|
|
56
|
-
background-color: rgba(255, 255, 255, 0.3);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.gd-header-search {
|
|
61
|
-
position: relative;
|
|
62
|
-
box-sizing: border-box;
|
|
63
|
-
padding-right: 34px;
|
|
64
|
-
|
|
65
|
-
&:hover {
|
|
66
|
-
background: rgba(255, 255, 255, 0.3);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
66
|
&::after {
|
|
70
67
|
content: "\e612";
|
|
71
68
|
position: absolute;
|
|
@@ -83,9 +80,30 @@
|
|
|
83
80
|
&.is-open::after {
|
|
84
81
|
content: "\e613";
|
|
85
82
|
}
|
|
83
|
+
|
|
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
|
+
}
|
|
91
|
+
|
|
92
|
+
&-dropdown {
|
|
93
|
+
overflow: hidden;
|
|
94
|
+
|
|
95
|
+
.gd-list {
|
|
96
|
+
min-width: 210px;
|
|
97
|
+
|
|
98
|
+
.gd-list-item {
|
|
99
|
+
font-family: kit-variables.$gd-font-primary;
|
|
100
|
+
font-weight: 400;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
86
104
|
}
|
|
87
105
|
|
|
88
|
-
.gd-icon-header-search {
|
|
106
|
+
.gd-icon-header-search-button {
|
|
89
107
|
vertical-align: middle;
|
|
90
108
|
opacity: 0.8;
|
|
91
109
|
margin-right: 6px;
|
|
@@ -94,16 +112,3 @@
|
|
|
94
112
|
content: "\e62b";
|
|
95
113
|
}
|
|
96
114
|
}
|
|
97
|
-
|
|
98
|
-
.gd-header-search-dropdown {
|
|
99
|
-
overflow: hidden;
|
|
100
|
-
|
|
101
|
-
.gd-list {
|
|
102
|
-
min-width: 210px;
|
|
103
|
-
|
|
104
|
-
.gd-list-item {
|
|
105
|
-
font-family: kit-variables.$gd-font-primary;
|
|
106
|
-
font-weight: 400;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|