@redocly/theme 0.18.1 → 0.18.2
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/lib/components/Search/Search.js +10 -2
- package/lib/components/Tabs/Tabs.d.ts +1 -0
- package/lib/components/Tabs/Tabs.js +3 -3
- package/lib/mocks/telemetry.d.ts +2 -0
- package/lib/mocks/telemetry.js +7 -0
- package/package.json +3 -2
- package/src/components/Search/Search.tsx +14 -2
- package/src/components/Tabs/Tabs.tsx +11 -4
- package/src/mocks/telemetry.ts +5 -0
|
@@ -35,6 +35,7 @@ const SearchTrigger_1 = require("../../components/Search/SearchTrigger");
|
|
|
35
35
|
const MobileSearchTrigger_1 = require("../../components/Search/MobileSearchTrigger");
|
|
36
36
|
const SearchDialog_1 = require("../../components/Search/SearchDialog");
|
|
37
37
|
const hooks_1 = require("../../hooks");
|
|
38
|
+
const telemetry_1 = require("../../mocks/telemetry");
|
|
38
39
|
function Search({ className }) {
|
|
39
40
|
var _a, _b;
|
|
40
41
|
const [isOpen, setIsOpen] = (0, react_1.useState)(false);
|
|
@@ -46,6 +47,7 @@ function Search({ className }) {
|
|
|
46
47
|
if (hotkeysKeys) {
|
|
47
48
|
(0, hotkeys_js_1.default)(hotkeysKeys, (ev) => {
|
|
48
49
|
setIsOpen(true);
|
|
50
|
+
telemetry_1.telemetry.send('search_opened', { method: 'shortcut' });
|
|
49
51
|
ev.preventDefault();
|
|
50
52
|
});
|
|
51
53
|
return () => hotkeys_js_1.default.unbind(hotkeysKeys);
|
|
@@ -56,8 +58,14 @@ function Search({ className }) {
|
|
|
56
58
|
}, []);
|
|
57
59
|
(0, react_1.useEffect)(onClose, [location, onClose]);
|
|
58
60
|
return (react_1.default.createElement(Wrapper, { "data-component-name": "Search/Search", className: className },
|
|
59
|
-
react_1.default.createElement(SearchTrigger_1.SearchTrigger, { onClick: () =>
|
|
60
|
-
|
|
61
|
+
react_1.default.createElement(SearchTrigger_1.SearchTrigger, { onClick: () => {
|
|
62
|
+
telemetry_1.telemetry.send('search_opened', { method: 'click' });
|
|
63
|
+
setIsOpen(true);
|
|
64
|
+
} }),
|
|
65
|
+
react_1.default.createElement(MobileSearchTrigger_1.MobileSearchTrigger, { onClick: () => {
|
|
66
|
+
telemetry_1.telemetry.send('search_opened', { method: 'click' });
|
|
67
|
+
setIsOpen(true);
|
|
68
|
+
} }),
|
|
61
69
|
isOpen && react_1.default.createElement(SearchDialog_1.SearchDialog, { onClose: onClose })));
|
|
62
70
|
}
|
|
63
71
|
exports.Search = Search;
|
|
@@ -36,9 +36,9 @@ function Tabs(props) {
|
|
|
36
36
|
const [activeTab, setActiveTab] = (0, react_1.useState)((_a = children[0]) === null || _a === void 0 ? void 0 : _a.props.label);
|
|
37
37
|
const onTabSelect = (label) => setActiveTab(label);
|
|
38
38
|
return (react_1.default.createElement(TabsContainer, { "data-component-name": "Markdown/Tabs/Tabs", className: props.className },
|
|
39
|
-
react_1.default.createElement(TabList, null, children.map((child) => {
|
|
40
|
-
const { label } = child.props;
|
|
41
|
-
return react_1.default.createElement(Tabs_1.Tab, { activeTab: activeTab, key: label
|
|
39
|
+
react_1.default.createElement(TabList, null, children.map((child, idx) => {
|
|
40
|
+
const { label, key } = child.props;
|
|
41
|
+
return (react_1.default.createElement(Tabs_1.Tab, { activeTab: activeTab, key: `${key || label}-${idx}`, label: label, onClick: onTabSelect }));
|
|
42
42
|
})),
|
|
43
43
|
react_1.default.createElement(TabContent, null, children.map((child) => {
|
|
44
44
|
if (child.props.label !== activeTab)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/theme",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.2",
|
|
4
4
|
"description": "Shared UI components lib",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"theme",
|
|
@@ -80,7 +80,8 @@
|
|
|
80
80
|
"tsconfig-paths": "^4.2.0",
|
|
81
81
|
"tsconfig-paths-webpack-plugin": "^3.5.2",
|
|
82
82
|
"typescript": "^4.8.4",
|
|
83
|
-
"webpack": "^5.72.0"
|
|
83
|
+
"webpack": "^5.72.0",
|
|
84
|
+
"@redocly/portal-types": "1.0.1"
|
|
84
85
|
},
|
|
85
86
|
"dependencies": {
|
|
86
87
|
"@redocly/ajv": "^8.11.0",
|
|
@@ -7,6 +7,7 @@ import { SearchTrigger } from '@theme/components/Search/SearchTrigger';
|
|
|
7
7
|
import { MobileSearchTrigger } from '@theme/components/Search/MobileSearchTrigger';
|
|
8
8
|
import { SearchDialog } from '@theme/components/Search/SearchDialog';
|
|
9
9
|
import { useThemeConfig } from '@theme/hooks';
|
|
10
|
+
import { telemetry } from '@portal/telemetry';
|
|
10
11
|
|
|
11
12
|
export function Search({ className }: { className?: string }): JSX.Element {
|
|
12
13
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -19,6 +20,7 @@ export function Search({ className }: { className?: string }): JSX.Element {
|
|
|
19
20
|
if (hotkeysKeys) {
|
|
20
21
|
hotkeys(hotkeysKeys, (ev) => {
|
|
21
22
|
setIsOpen(true);
|
|
23
|
+
telemetry.send('search_opened', { method: 'shortcut' });
|
|
22
24
|
ev.preventDefault();
|
|
23
25
|
});
|
|
24
26
|
|
|
@@ -34,8 +36,18 @@ export function Search({ className }: { className?: string }): JSX.Element {
|
|
|
34
36
|
|
|
35
37
|
return (
|
|
36
38
|
<Wrapper data-component-name="Search/Search" className={className}>
|
|
37
|
-
<SearchTrigger
|
|
38
|
-
|
|
39
|
+
<SearchTrigger
|
|
40
|
+
onClick={() => {
|
|
41
|
+
telemetry.send('search_opened', { method: 'click' });
|
|
42
|
+
setIsOpen(true);
|
|
43
|
+
}}
|
|
44
|
+
/>
|
|
45
|
+
<MobileSearchTrigger
|
|
46
|
+
onClick={() => {
|
|
47
|
+
telemetry.send('search_opened', { method: 'click' });
|
|
48
|
+
setIsOpen(true);
|
|
49
|
+
}}
|
|
50
|
+
/>
|
|
39
51
|
|
|
40
52
|
{isOpen && <SearchDialog onClose={onClose} />}
|
|
41
53
|
</Wrapper>
|
|
@@ -5,7 +5,7 @@ import type { PropsWithChildren } from 'react';
|
|
|
5
5
|
|
|
6
6
|
import { Tab } from '@theme/components/Tabs';
|
|
7
7
|
|
|
8
|
-
type Child = { props: { label: string } & TabsProps };
|
|
8
|
+
type Child = { props: { label: string; key?: string } & TabsProps };
|
|
9
9
|
type TabsProps = PropsWithChildren<{ children: Child[]; className?: string }>;
|
|
10
10
|
|
|
11
11
|
export function Tabs(props: TabsProps): JSX.Element {
|
|
@@ -16,9 +16,16 @@ export function Tabs(props: TabsProps): JSX.Element {
|
|
|
16
16
|
return (
|
|
17
17
|
<TabsContainer data-component-name="Markdown/Tabs/Tabs" className={props.className}>
|
|
18
18
|
<TabList>
|
|
19
|
-
{children.map((child) => {
|
|
20
|
-
const { label } = child.props;
|
|
21
|
-
return
|
|
19
|
+
{children.map((child, idx) => {
|
|
20
|
+
const { label, key } = child.props;
|
|
21
|
+
return (
|
|
22
|
+
<Tab
|
|
23
|
+
activeTab={activeTab}
|
|
24
|
+
key={`${key || label}-${idx}`}
|
|
25
|
+
label={label}
|
|
26
|
+
onClick={onTabSelect}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
22
29
|
})}
|
|
23
30
|
</TabList>
|
|
24
31
|
<TabContent>
|