Skip to content

Commit ba0133c

Browse files
allow option in table to enable editing on single/double click
1 parent b31cae1 commit ba0133c

File tree

7 files changed

+30
-2
lines changed

7 files changed

+30
-2
lines changed

client/packages/lowcoder/src/components/table/EditableCell.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export interface CellProps {
3737
candidateStatus?: { text: string; status: StatusType }[];
3838
textOverflow?: boolean;
3939
cellTooltip?: string;
40+
editMode?: string;
4041
onTableEvent?: (eventName: any) => void;
4142
}
4243

@@ -94,13 +95,15 @@ export function EditableCell<T extends JSONValue>(props: EditableCellProps<T>) {
9495
candidateTags,
9596
// tagColors
9697
candidateStatus,
98+
editMode,
9799
onTableEvent,
98100
} = props;
99101
const status = _.isNil(changeValue) ? "normal" : "toSave";
100102
const editable = editViewFn ? props.editable : false;
101103
const { isEditing, setIsEditing } = useContext(TableCellContext);
102104
const value = changeValue ?? baseValue!;
103105
const [tmpValue, setTmpValue] = useState<T | null>(value);
106+
const singleClickEdit = editMode === 'single';
104107

105108
useEffect(() => {
106109
setTmpValue(value);
@@ -175,8 +178,8 @@ export function EditableCell<T extends JSONValue>(props: EditableCellProps<T>) {
175178
width: '100%',
176179
height: '100%',
177180
}}
178-
// onDoubleClick={enterEditFn}
179-
onClick={enterEditFn}
181+
onDoubleClick={!singleClickEdit ? enterEditFn : undefined}
182+
onClick={singleClickEdit ? enterEditFn : undefined}
180183
>
181184
</div>
182185
</CellWrapper>

client/packages/lowcoder/src/comps/comps/tableComp/tableCompView.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,7 @@ export function TableCompView(props: {
767767
const inlineAddNewRow = useMemo(() => compChildren.inlineAddNewRow.getView(), [compChildren.inlineAddNewRow]);
768768
const pagination = useMemo(() => compChildren.pagination.getView(), [compChildren.pagination]);
769769
const size = useMemo(() => compChildren.size.getView(), [compChildren.size]);
770+
const editModeClicks = useMemo(() => compChildren.editModeClicks.getView(), [compChildren.editModeClicks]);
770771
const onEvent = useMemo(() => compChildren.onEvent.getView(), [compChildren.onEvent]);
771772
const dynamicColumn = compChildren.dynamicColumn.getView();
772773
const dynamicColumnConfig = useMemo(
@@ -785,6 +786,7 @@ export function TableCompView(props: {
785786
dynamicColumn,
786787
dynamicColumnConfig,
787788
columnsAggrData,
789+
editModeClicks,
788790
onEvent,
789791
),
790792
[
@@ -795,6 +797,7 @@ export function TableCompView(props: {
795797
dynamicColumn,
796798
dynamicColumnConfig,
797799
columnsAggrData,
800+
editModeClicks,
798801
]
799802
);
800803

client/packages/lowcoder/src/comps/comps/tableComp/tableDynamicColumn.test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ const expectColumn = (
4545
comp.children.dynamicColumn.getView(),
4646
dynamicColumnConfig,
4747
comp.columnAggrData,
48+
comp.children.editModeClicks.getView(),
4849
onEvent,
4950
);
5051
expect(columnViews.length).toBeGreaterThanOrEqual(antdColumns.length);

client/packages/lowcoder/src/comps/comps/tableComp/tablePropertyView.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,10 @@ export function compTablePropertyView<T extends MultiBaseComp<TableChildrenType>
562562
label: trans("table.dynamicColumnConfig"),
563563
tooltip: trans("table.dynamicColumnConfigDesc"),
564564
})}
565+
{comp.children.editModeClicks.propertyView({
566+
label: trans("table.editMode"),
567+
radioButton: true,
568+
})}
565569
{comp.children.searchText.propertyView({
566570
label: trans("table.searchText"),
567571
tooltip: trans("table.searchTextTooltip"),

client/packages/lowcoder/src/comps/comps/tableComp/tableTypes.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,17 @@ import { PaginationControl } from "./paginationControl";
3737
import { SelectionControl } from "./selectionControl";
3838
import { AutoHeightControl } from "comps/controls/autoHeightControl";
3939

40+
const editModeClickOptions = [
41+
{
42+
label: trans("table.singleClick"),
43+
value: "single",
44+
},
45+
{
46+
label: trans("table.doubleClick"),
47+
value: "double",
48+
},
49+
] as const;
50+
4051
const summarRowsOptions = [
4152
{
4253
label: "1",
@@ -248,6 +259,7 @@ const tableChildrenMap = {
248259
expansion: ExpansionControl,
249260
selectedCell: stateComp<JSONObject>({}),
250261
inlineAddNewRow: BoolControl,
262+
editModeClicks: dropdownControl(editModeClickOptions, "single"),
251263
};
252264

253265
export const TableInitComp = (function () {

client/packages/lowcoder/src/comps/comps/tableComp/tableUtils.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ export function columnsToAntdFormat(
295295
dynamicColumn: boolean,
296296
dynamicColumnConfig: Array<string>,
297297
columnsAggrData: ColumnsAggrData,
298+
editMode: string,
298299
onTableEvent: (eventName: any) => void,
299300
): Array<CustomColumnType<RecordType>> {
300301
const customColumns = columns.filter(col => col.isCustom).map(col => col.dataIndex);
@@ -392,6 +393,7 @@ export function columnsToAntdFormat(
392393
currentRow: row,
393394
currentIndex: index,
394395
}),
396+
editMode,
395397
onTableEvent,
396398
});
397399
},

client/packages/lowcoder/src/i18n/locales/en.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2002,6 +2002,9 @@ export const en = {
20022002
"showSummary": "Show Summary Row",
20032003
"totalSummaryRows": "Total Rows",
20042004
"inlineAddNewRow": "Inline Add New Row",
2005+
"editMode": "Edit Mode",
2006+
"singleClick": "Single Click",
2007+
"doubleClick": "Double Click",
20052008
},
20062009

20072010

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy