Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6923e1b

Browse files
Merge pull request#1769 from iamfaran/fix/event-handlers
[Fix]: backward compatibility for button, link and links column types
2 parents4022c65 +62285ce commit6923e1b

File tree

2 files changed

+45
-60
lines changed

2 files changed

+45
-60
lines changed

‎client/packages/lowcoder/src/comps/comps/tableComp/column/columnTypeComps/columnLinkComp.tsx

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@ import {
44
ColumnTypeCompBuilder,
55
ColumnTypeViewFn,
66
}from"comps/comps/tableComp/column/columnTypeCompBuilder";
7-
import{ActionSelectorControlInContext}from"comps/controls/actionSelector/actionSelectorControl";
87
import{BoolCodeControl,StringControl}from"comps/controls/codeControl";
98
import{trans}from"i18n";
109
import{disabledPropertyView}from"comps/utils/propertyUtils";
1110
importstyled,{css}from"styled-components";
1211
import{styleControl}from"comps/controls/styleControl";
1312
import{TableColumnLinkStyle}from"comps/controls/styleControlConstants";
1413
import{clickEvent,eventHandlerControl}from"comps/controls/eventHandlerControl";
14+
import{migrateOldData}from"@lowcoder-ee/comps/generators/simpleGenerators";
15+
import{fixOldActionData}from"comps/comps/tableComp/column/simpleColumnTypeComps";
1516

1617
exportconstColumnValueTooltip=trans("table.columnValueTooltip");
1718

1819
constLinkEventOptions=[clickEvent]asconst;
1920

2021
constchildrenMap={
2122
text:StringControl,
22-
onClick:ActionSelectorControlInContext,
23-
onEvent:eventHandlerControl(LinkEventOptions),
23+
onClick:eventHandlerControl(LinkEventOptions),
2424
disabled:BoolCodeControl,
2525
style:styleControl(TableColumnLinkStyle),
2626
};
@@ -38,12 +38,11 @@ const StyledLink = styled.a<{ $disabled: boolean }>`
3838
`;
3939

4040
// Memoized link component
41-
exportconstColumnLink=React.memo(({ disabled, label, onClick, onEvent}:{disabled:boolean;label:string;onClick?:()=>void;onEvent?:(eventName:string)=>void})=>{
41+
exportconstColumnLink=React.memo(({ disabled, label, onClick}:{disabled:boolean;label:string;onClick?:(eventName:string)=>void})=>{
4242
consthandleClick=useCallback(()=>{
4343
if(disabled)return;
44-
onClick?.();
45-
// onEvent?.("click");
46-
},[disabled,onClick,onEvent]);
44+
onClick?.("click");
45+
},[disabled,onClick]);
4746

4847
return(
4948
<StyledLink
@@ -105,7 +104,7 @@ LinkEdit.displayName = 'LinkEdit';
105104

106105
constgetBaseValue:ColumnTypeViewFn<typeofchildrenMap,string,string>=(props)=>props.text;
107106

108-
exportconstLinkComp=(function(){
107+
constLinkCompTmp=(function(){
109108
returnnewColumnTypeCompBuilder(
110109
childrenMap,
111110
(props,dispatch)=>{
@@ -129,11 +128,7 @@ export const LinkComp = (function () {
129128
tooltip:ColumnValueTooltip,
130129
})}
131130
{disabledPropertyView(children)}
132-
{/* {children.onEvent.propertyView()} */}
133-
{children.onClick.propertyView({
134-
label:trans("table.action"),
135-
placement:"table",
136-
})}
131+
{children.onClick.propertyView()}
137132
</>
138133
))
139134
.setStylePropertyViewFn((children)=>(
@@ -143,3 +138,5 @@ export const LinkComp = (function () {
143138
))
144139
.build();
145140
})();
141+
142+
exportconstLinkComp=migrateOldData(LinkCompTmp,fixOldActionData);
Lines changed: 35 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
importReact,{useState,useRef,useEffect,useCallback,useMemo}from"react";
22
import{defaultasMenu}from"antd/es/menu";
33
import{ColumnTypeCompBuilder}from"comps/comps/tableComp/column/columnTypeCompBuilder";
4-
import{ActionSelectorControlInContext}from"comps/controls/actionSelector/actionSelectorControl";
54
import{BoolCodeControl,StringControl}from"comps/controls/codeControl";
65
import{manualOptionsControl}from"comps/controls/optionsControl";
76
import{MultiCompBuilder}from"comps/generators";
@@ -11,6 +10,8 @@ import styled from "styled-components";
1110
import{ColumnLink}from"comps/comps/tableComp/column/columnTypeComps/columnLinkComp";
1211
import{LightActiveTextColor,PrimaryColor}from"constants/style";
1312
import{clickEvent,eventHandlerControl}from"comps/controls/eventHandlerControl";
13+
import{migrateOldData}from"@lowcoder-ee/comps/generators/simpleGenerators";
14+
import{fixOldActionData}from"comps/comps/tableComp/column/simpleColumnTypeComps";
1415

1516
constMenuLinkWrapper=styled.div`
1617
> a {
@@ -38,16 +39,35 @@ const MenuWrapper = styled.div`
3839
}
3940
`;
4041

41-
constLinksEventOptions=[clickEvent]asconst;
42+
constLinkEventOptions=[clickEvent]asconst;
4243

43-
// Update OptionItem to include event handlers
44-
constOptionItem=newMultiCompBuilder(
44+
// Memoized menu item component
45+
constMenuItem=React.memo(({ option, index}:{option:any;index:number})=>{
46+
consthandleClick=useCallback(()=>{
47+
if(!option.disabled&&option.onClick){
48+
option.onClick("click");
49+
}
50+
},[option.disabled,option.onClick]);
51+
52+
return(
53+
<MenuLinkWrapper>
54+
<ColumnLink
55+
disabled={option.disabled}
56+
label={option.label}
57+
onClick={handleClick}
58+
/>
59+
</MenuLinkWrapper>
60+
);
61+
});
62+
63+
MenuItem.displayName='MenuItem';
64+
65+
constOptionItemTmp=newMultiCompBuilder(
4566
{
4667
label:StringControl,
47-
onClick:ActionSelectorControlInContext,
68+
onClick:eventHandlerControl(LinkEventOptions),
4869
hidden:BoolCodeControl,
4970
disabled:BoolCodeControl,
50-
onEvent:eventHandlerControl(LinksEventOptions),
5171
},
5272
(props)=>{
5373
returnprops;
@@ -57,50 +77,18 @@ const OptionItem = new MultiCompBuilder(
5777
return(
5878
<>
5979
{children.label.propertyView({label:trans("label")})}
60-
{children.onClick.propertyView({
61-
label:trans("table.action"),
62-
placement:"table",
63-
})}
6480
{hiddenPropertyView(children)}
6581
{disabledPropertyView(children)}
66-
{/* {children.onEvent.propertyView()} */}
82+
{children.onClick.propertyView()}
6783
</>
6884
);
6985
})
7086
.build();
7187

72-
// Memoized menu item component
73-
constMenuItem=React.memo(({ option, index, onMainEvent}:{option:any;index:number;onMainEvent?:(eventName:string)=>void})=>{
74-
consthandleClick=useCallback(()=>{
75-
if(!option.disabled){
76-
if(option.onClick){
77-
option.onClick();
78-
}
79-
// if (option.onEvent) {
80-
// option.onEvent("click");
81-
// }
82-
// Trigger the main component's event handler
83-
if(onMainEvent){
84-
onMainEvent("click");
85-
}
86-
}
87-
},[option.disabled,option.onClick,option.onEvent,onMainEvent]);
88-
89-
return(
90-
<MenuLinkWrapper>
91-
<ColumnLink
92-
disabled={option.disabled}
93-
label={option.label}
94-
onEvent={handleClick}
95-
/>
96-
</MenuLinkWrapper>
97-
);
98-
});
99-
100-
MenuItem.displayName='MenuItem';
88+
constOptionItem=migrateOldData(OptionItemTmp,fixOldActionData);
10189

10290
// Memoized menu component
103-
constLinksMenu=React.memo(({ options, onEvent}:{options:any[];onEvent?:(eventName:string)=>void})=>{
91+
constLinksMenu=React.memo(({ options}:{options:any[]})=>{
10492
constmountedRef=useRef(true);
10593

10694
// Cleanup on unmount
@@ -115,9 +103,9 @@ const LinksMenu = React.memo(({ options, onEvent }: { options: any[]; onEvent?:
115103
.filter((o)=>!o.hidden)
116104
.map((option,index)=>({
117105
key:index,
118-
label:<MenuItemoption={option}index={index}onMainEvent={onEvent}/>
106+
label:<MenuItemoption={option}index={index}/>
119107
})),
120-
[options,onEvent]
108+
[options]
121109
);
122110

123111
return(
@@ -129,17 +117,16 @@ const LinksMenu = React.memo(({ options, onEvent }: { options: any[]; onEvent?:
129117

130118
LinksMenu.displayName='LinksMenu';
131119

132-
exportconstColumnLinksComp=(function(){
120+
constColumnLinksCompTmp=(function(){
133121
constchildrenMap={
134122
options:manualOptionsControl(OptionItem,{
135123
initOptions:[{label:trans("table.option1")}],
136124
}),
137-
onEvent:eventHandlerControl(LinksEventOptions),
138125
};
139126
returnnewColumnTypeCompBuilder(
140127
childrenMap,
141128
(props)=>{
142-
return<LinksMenuoptions={props.options}onEvent={props.onEvent}/>;
129+
return<LinksMenuoptions={props.options}/>;
143130
},
144131
()=>""
145132
)
@@ -149,8 +136,9 @@ export const ColumnLinksComp = (function () {
149136
newOptionLabel:trans("table.option"),
150137
title:trans("table.optionList"),
151138
})}
152-
{children.onEvent.propertyView()}
153139
</>
154140
))
155141
.build();
156142
})();
143+
144+
exportconstColumnLinksComp=migrateOldData(ColumnLinksCompTmp,fixOldActionData);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp