Skip to content

Commit aa3fb60

Browse files
authored
Merge pull request #467 from easyops-cn/steve/jsx
Steve/jsx
2 parents 887e63f + d2f6dc6 commit aa3fb60

File tree

19 files changed

+605
-49
lines changed

19 files changed

+605
-49
lines changed

bricks/advanced/src/cascader/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export interface CascaderProps
4949
* @author nlicroshan
5050
* @category form-input-basic
5151
*/
52+
export
5253
@defineElement("eo-cascader", {
5354
alias: ["advanced.general-cascader"],
5455
styleTexts: [styleText],
@@ -280,5 +281,3 @@ function CascaderElement(props: CascaderProps): React.ReactElement {
280281
</ConfigProvider>
281282
);
282283
}
283-
284-
export { CascaderBrick };

bricks/advanced/src/jsx.ts

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
import type { DetailedHTMLProps, HTMLAttributes } from "react";
2+
import type { DefaultOptionType } from "antd/es/cascader";
3+
import type { RowSelectMethod } from "antd/es/table/interface";
4+
import type { EoTree, EoTreeProps } from "./tree";
5+
import type { TreeSelectBrick, TreeSelectProps } from "./tree-select";
6+
import type { CascaderBrick, CascaderProps } from "./cascader";
7+
import type { PdfViewer, PdfViewerProps } from "./pdf-viewer";
8+
import type { EoTextTooltip, EoTextTooltipProps } from "./text-tooltip";
9+
import type { EoNextTable, NextTableProps } from "./next-table";
10+
import type { RecordType, Sort } from "./next-table/interface";
11+
12+
declare global {
13+
// eslint-disable-next-line @typescript-eslint/no-namespace
14+
namespace JSX {
15+
interface IntrinsicElements {
16+
"eo-text-tooltip": DetailedHTMLProps<
17+
HTMLAttributes<EoTextTooltip>,
18+
EoTextTooltip
19+
> &
20+
EoTextTooltipProps;
21+
22+
"eo-tree": DetailedHTMLProps<HTMLAttributes<EoTree>, EoTree> &
23+
EoTreeProps & {
24+
onCheck?: (event: CustomEvent<(string | number)[]>) => void;
25+
onCheckDetail?: (
26+
event: CustomEvent<{
27+
checkedKeys: (string | number)[];
28+
halfCheckedKeys: (string | number)[];
29+
}>
30+
) => void;
31+
onExpand?: (event: CustomEvent<(string | number)[]>) => void;
32+
onNodeDrop?: (event: CustomEvent) => void;
33+
onSelect?: (event: CustomEvent<(string | number)[]>) => void;
34+
onSelectNode?: (event: CustomEvent) => void;
35+
};
36+
37+
"eo-tree-select": DetailedHTMLProps<
38+
HTMLAttributes<TreeSelectBrick>,
39+
TreeSelectBrick
40+
> &
41+
TreeSelectProps & {
42+
onChange?: (event: CustomEvent<{ value: any }>) => void;
43+
onSearch?: (event: CustomEvent<string>) => void;
44+
onSelect?: (event: CustomEvent<{ value: any }>) => void;
45+
onExpand?: (event: CustomEvent<{ keys: React.Key[] }>) => void;
46+
};
47+
48+
"eo-cascader": DetailedHTMLProps<
49+
HTMLAttributes<CascaderBrick>,
50+
CascaderBrick
51+
> &
52+
CascaderProps & {
53+
onCascaderChange?: (
54+
event: CustomEvent<{
55+
value: (string | number | null)[] | undefined;
56+
selectedOptions: DefaultOptionType[] | DefaultOptionType[][];
57+
}>
58+
) => void;
59+
};
60+
61+
"eo-next-table": DetailedHTMLProps<
62+
HTMLAttributes<EoNextTable>,
63+
EoNextTable
64+
> &
65+
NextTableProps & {
66+
onPageChange?: (
67+
event: CustomEvent<{ page: number; pageSize: number }>
68+
) => void;
69+
onSortChange?: (
70+
event: CustomEvent<Sort | Sort[] | undefined>
71+
) => void;
72+
onRowSelect?: (
73+
event: CustomEvent<{
74+
keys: (string | number)[];
75+
rows: RecordType[];
76+
info: { type: RowSelectMethod };
77+
}>
78+
) => void;
79+
onRowSelectV2?: (event: CustomEvent<RecordType[]>) => void;
80+
onRowExpand?: (
81+
event: CustomEvent<{
82+
expanded: boolean;
83+
record: RecordType;
84+
}>
85+
) => void;
86+
onExpandedRowsChange?: (
87+
event: CustomEvent<(string | number)[]>
88+
) => void;
89+
onRowDrag?: (
90+
event: CustomEvent<{
91+
list: RecordType[];
92+
active: RecordType;
93+
over: RecordType;
94+
}>
95+
) => void;
96+
};
97+
98+
"advanced.pdf-viewer": DetailedHTMLProps<
99+
HTMLAttributes<PdfViewer>,
100+
PdfViewer
101+
> &
102+
PdfViewerProps;
103+
}
104+
}
105+
}

bricks/advanced/src/text-tooltip/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export
2626
@defineElement("eo-text-tooltip", {
2727
styleTexts: [styleText],
2828
})
29-
class EoTextTooltip extends ReactNextElement {
29+
class EoTextTooltip extends ReactNextElement implements EoTextTooltipProps {
3030
/**
3131
* 文案
3232
* @default
@@ -48,12 +48,12 @@ class EoTextTooltip extends ReactNextElement {
4848
}
4949
}
5050

51-
interface TooltipPropsEoTextTooltipProps {
51+
export interface EoTextTooltipProps {
5252
label?: string;
5353
lineClamp?: number;
5454
}
5555

56-
export function EoTextTooltipComponent(props: TooltipPropsEoTextTooltipProps) {
56+
export function EoTextTooltipComponent(props: EoTextTooltipProps) {
5757
const { lineClamp, label } = props;
5858
const ref = useRef<HTMLDivElement>(null);
5959
// 是否显示tooltip

bricks/advanced/src/tree-select/index.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ export interface TreeSelectProps
5050
dropdownStyle?: CSSProperties;
5151
maxTagCount?: number | "responsive";
5252
popupMatchSelectWidth?: boolean;
53-
onChange?: (value: AntdTreeSelectProps["value"]) => void;
5453
}
5554

5655
/**
@@ -236,7 +235,13 @@ class TreeSelectBrick extends FormItemElementBase implements TreeSelectProps {
236235
}
237236
}
238237

239-
function TreeSelectElement(props: TreeSelectProps): React.ReactElement {
238+
interface TreeSelectComponentProps extends TreeSelectProps {
239+
onChange?: (value: AntdTreeSelectProps["value"]) => void;
240+
}
241+
242+
function TreeSelectElement(
243+
props: TreeSelectComponentProps
244+
): React.ReactElement {
240245
const {
241246
shadowRoot,
242247
checkable,

bricks/ai-portal/src/action-buttons/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const WrapperButton = wrapBrick<Button, ButtonProps>("eo-button");
1818

1919
const { defineElement, property, event } = createDecorators();
2020

21-
interface ActionItem {
21+
export interface ActionItem {
2222
text: string;
2323
key: string;
2424
icon?: GeneralIconProps;

bricks/ai-portal/src/chat-stream/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export interface ChatStreamProps {
4040
aiEmployees?: AIEmployee[];
4141
commands?: Command[];
4242
uploadOptions?: UploadOptions;
43+
hideMermaid?: boolean;
4344
}
4445

4546
export interface ConversationDetail {

bricks/ai-portal/src/cruise-canvas/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface CruiseCanvasProps {
4343
aiEmployees?: AIEmployee[];
4444
commands?: Command[];
4545
uploadOptions?: UploadOptions;
46+
hideMermaid?: boolean;
4647
}
4748

4849
export interface ConversationDetail {

bricks/ai-portal/src/dropdown-select/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export interface DropdownSelectProps {
6565
loading?: boolean;
6666
}
6767

68-
interface DropdownOptions {
68+
export interface DropdownOptions {
6969
label: string;
7070
value: string;
7171
disabled?: boolean;

bricks/ai-portal/src/home-container/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@ import styleText from "./styles.shadow.css";
66

77
const { defineElement, property } = createDecorators();
88

9+
export interface HomeContainerProps {
10+
sticky?: boolean;
11+
}
12+
913
/**
1014
* 构件 `ai-portal.home-container`
1115
*/
1216
export
1317
@defineElement("ai-portal.home-container", {
1418
styleTexts: [styleText],
1519
})
16-
class HomeContainer extends ReactNextElement {
20+
class HomeContainer extends ReactNextElement implements HomeContainerProps {
1721
@property({ type: Boolean, render: false })
1822
accessor sticky: boolean | undefined;
1923

bricks/ai-portal/src/icon-button/index.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useRef } from "react";
1+
import React, { useRef, type HTMLAttributes } from "react";
22
import { createDecorators } from "@next-core/element";
33
import { ReactNextElement, wrapBrick } from "@next-core/react-element";
44
import "@next-core/theme";
@@ -16,11 +16,12 @@ const WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>("eo-tooltip");
1616
const { defineElement, property } = createDecorators();
1717

1818
export interface IconButtonProps {
19-
icon?: GeneralIconProps;
19+
icon?: GeneralIconProps & HTMLAttributes<GeneralIcon>;
2020
tooltip?: string;
2121
tooltipHoist?: boolean;
2222
disabled?: boolean;
2323
variant?: IconButtonVariant;
24+
reduceIconSize?: boolean;
2425
}
2526

2627
export type IconButtonVariant =
@@ -39,7 +40,7 @@ export
3940
})
4041
class IconButton extends ReactNextElement implements IconButtonProps {
4142
@property({ attribute: false })
42-
accessor icon: GeneralIconProps | undefined;
43+
accessor icon: (GeneralIconProps & HTMLAttributes<GeneralIcon>) | undefined;
4344

4445
@property()
4546
accessor tooltip: string | undefined;

0 commit comments

Comments
 (0)