@gooddata/sdk-ui-semantic-search 10.9.0-alpha.5 → 10.9.0-alpha.6
Sign up to get free protection for your applications and to get access to all the features.
- 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.6",
|
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": "10.9.0-alpha.
|
42
|
-
"@gooddata/sdk-ui-kit": "10.9.0-alpha.
|
43
|
-
"@gooddata/sdk-
|
44
|
-
"@gooddata/sdk-
|
40
|
+
"@gooddata/sdk-model": "10.9.0-alpha.6",
|
41
|
+
"@gooddata/sdk-ui": "10.9.0-alpha.6",
|
42
|
+
"@gooddata/sdk-ui-kit": "10.9.0-alpha.6",
|
43
|
+
"@gooddata/sdk-backend-spi": "10.9.0-alpha.6",
|
44
|
+
"@gooddata/sdk-ui-theme-provider": "10.9.0-alpha.6"
|
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.6"
|
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
|
-
}
|