Skip to content

Commit 92f64f6

Browse files
added forwardRef to py-terminal
1 parent ad06874 commit 92f64f6

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

source/library/components/py-terminal/py-terminal.tsx

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
import propTypes from "prop-types";
2-
import { PyTerminalProperties, PyTerminalTag } from "./py-terminal.types";
2+
import { forwardRef } from "react";
3+
import type { PyTerminalProperties, PyTerminalTag } from "./py-terminal.types";
34

4-
const PyTerminal: PyTerminalTag = <T extends object>({
5-
...rest
6-
}: PyTerminalProperties<T>): JSX.Element => {
7-
return <py-terminal {...rest} />;
8-
};
5+
const PyTerminal: PyTerminalTag = forwardRef(
6+
<OptionalProperties extends object>(
7+
properties: PyTerminalProperties<OptionalProperties>,
8+
): JSX.Element => {
9+
return <py-terminal {...properties} />;
10+
},
11+
) as PyTerminalTag;
12+
13+
PyTerminal.displayName = "PyTerminal";
914

1015
PyTerminal.propTypes = {
1116
auto: propTypes.bool,
Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import { DetailedHTMLProps, HTMLAttributes, WeakValidationMap } from "react";
2-
import ReactElementProps from "~types/react-element-properties/react-element-properties";
1+
import type {
2+
DetailedHTMLProps,
3+
HTMLAttributes,
4+
WeakValidationMap,
5+
} from "react";
6+
import type ReactElementProps from "~types/react-element-properties/react-element-properties";
37

48
export type PyTerminalPropertiesBase = Omit<
59
ReactElementProps<
@@ -10,13 +14,19 @@ export type PyTerminalPropertiesBase = Omit<
1014
auto?: boolean;
1115
};
1216

13-
export type PyTerminalProperties<T> = T extends infer T
14-
? T & PyTerminalPropertiesBase
15-
: PyTerminalPropertiesBase;
17+
export type PyTerminalProperties<OptionalProperties> =
18+
OptionalProperties extends infer OptionalProperties
19+
? OptionalProperties & PyTerminalPropertiesBase
20+
: PyTerminalPropertiesBase;
1621

17-
export type PyTerminalProps<T> = PyTerminalProperties<T>;
22+
export type PyTerminalProps<OptionalProperties> =
23+
PyTerminalProperties<OptionalProperties>;
1824

1925
export type PyTerminalTag = {
20-
<T extends object>(properties: PyTerminalProperties<T>): JSX.Element;
21-
propTypes: WeakValidationMap<PyTerminalPropertiesBase>;
26+
<OptionalProperties extends object>(
27+
properties: PyTerminalProperties<OptionalProperties>,
28+
): JSX.Element;
29+
displayName?: string;
30+
defaultProps?: Partial<PyTerminalPropertiesBase>;
31+
propTypes?: WeakValidationMap<PyTerminalPropertiesBase>;
2232
};

0 commit comments

Comments
 (0)