@redocly/theme 0.18.0 → 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/Dropdown/Dropdown.js +1 -1
- package/lib/components/Search/Search.js +10 -2
- package/lib/components/Select/Select.js +1 -1
- package/lib/components/Tabs/Tabs.d.ts +1 -0
- package/lib/components/Tabs/Tabs.js +3 -3
- package/lib/config.d.ts +8 -0
- package/lib/config.js +1 -0
- package/lib/mocks/telemetry.d.ts +2 -0
- package/lib/mocks/telemetry.js +7 -0
- package/package.json +3 -2
- package/src/components/Dropdown/Dropdown.tsx +1 -1
- package/src/components/Search/Search.tsx +14 -2
- package/src/components/Select/Select.tsx +1 -1
- package/src/components/Tabs/Tabs.tsx +11 -4
- package/src/config.ts +1 -0
- package/src/mocks/telemetry.ts +5 -0
|
@@ -45,7 +45,7 @@ const Dropdown = ({ children, className, items, withArrow, triggerEvent = 'click
|
|
|
45
45
|
onChange === null || onChange === void 0 ? void 0 : onChange(value);
|
|
46
46
|
};
|
|
47
47
|
(0, hooks_1.useOutsideClick)(dropdownRef, handleClose);
|
|
48
|
-
return (react_1.default.createElement(DropdownContainer, Object.assign({}, dataAttributes, { "data-
|
|
48
|
+
return (react_1.default.createElement(DropdownContainer, Object.assign({}, dataAttributes, { "data-testid": "dropdown", className: className, ref: dropdownRef, onPointerEnter: triggerEvent === 'hover' ? handleOpen : undefined, onPointerLeave: handleClose, onClick: triggerEvent === 'click' ? handleToggle : undefined }),
|
|
49
49
|
react_1.default.createElement(exports.DropdownHeader, null,
|
|
50
50
|
children,
|
|
51
51
|
withArrow ? isOpen ? react_1.default.createElement(icons_1.ArrowIcon, { direction: "up" }) : react_1.default.createElement(icons_1.ArrowIcon, { direction: "down" }) : null),
|
|
@@ -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;
|
|
@@ -54,7 +54,7 @@ const Select = ({ className, selected, options, dataAttributes, withArrow, trigg
|
|
|
54
54
|
handleSelect(selected);
|
|
55
55
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
56
56
|
}, [selected]);
|
|
57
|
-
return (react_1.default.createElement(exports.SelectContainer, Object.assign({}, dataAttributes, { "data-
|
|
57
|
+
return (react_1.default.createElement(exports.SelectContainer, Object.assign({}, dataAttributes, { "data-testid": "select", className: className, ref: selectRef, onPointerEnter: triggerEvent === 'hover' ? handleOpen : undefined, onPointerLeave: triggerEvent === 'hover' ? handleClose : undefined, onClick: triggerEvent === 'click' ? handleToggle : undefined }),
|
|
58
58
|
react_1.default.createElement(exports.SelectInput, null,
|
|
59
59
|
react_1.default.createElement(exports.SelectInputValue, { withArrow: withArrow }, _selected),
|
|
60
60
|
withArrow ? isOpen ? react_1.default.createElement(icons_1.ArrowIcon, { direction: "up" }) : react_1.default.createElement(icons_1.ArrowIcon, { direction: "down" }) : null),
|
|
@@ -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/lib/config.d.ts
CHANGED
|
@@ -352,6 +352,10 @@ declare const scorecardConfigSchema: {
|
|
|
352
352
|
readonly additionalProperties: true;
|
|
353
353
|
readonly required: readonly ["levels"];
|
|
354
354
|
readonly properties: {
|
|
355
|
+
readonly failBuildIfBelowMinimum: {
|
|
356
|
+
readonly type: "boolean";
|
|
357
|
+
readonly default: false;
|
|
358
|
+
};
|
|
355
359
|
readonly levels: {
|
|
356
360
|
readonly type: "array";
|
|
357
361
|
readonly items: {
|
|
@@ -1829,6 +1833,10 @@ export declare const themeConfigSchema: {
|
|
|
1829
1833
|
readonly additionalProperties: true;
|
|
1830
1834
|
readonly required: readonly ["levels"];
|
|
1831
1835
|
readonly properties: {
|
|
1836
|
+
readonly failBuildIfBelowMinimum: {
|
|
1837
|
+
readonly type: "boolean";
|
|
1838
|
+
readonly default: false;
|
|
1839
|
+
};
|
|
1832
1840
|
readonly levels: {
|
|
1833
1841
|
readonly type: "array";
|
|
1834
1842
|
readonly items: {
|
package/lib/config.js
CHANGED
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>
|
package/src/config.ts
CHANGED