Skip to content

Commit b10376e

Browse files
committed
feat:获取editable的值
1 parent 4589b45 commit b10376e

File tree

2 files changed

+43
-29
lines changed

2 files changed

+43
-29
lines changed

client/packages/barda/src/comps/comps/tableComp/column/columnTypeComps/columnTagsComp.tsx

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { ActionSelectorControl } from "comps/controls/actionSelector/actionSelec
99
import { BoolControl } from "comps/controls/boolControl";
1010
import { codeControl } from "comps/controls/codeControl";
1111
import { trans } from "i18n";
12-
import React, { useContext, useEffect, useMemo, useState } from "react";
12+
import { createContext, useContext, useEffect, useMemo, useState } from "react";
1313
import { toJson } from "really-relaxed-json";
1414
import { JSONObject } from "util/jsonTypes";
1515
import {
@@ -23,6 +23,9 @@ import {
2323
WrapperMulti,
2424
} from "./columnTypeUtils/tagUtils";
2525

26+
// Context 用于传递列基础配置的 editable 值
27+
export const ColumnEditableContext = createContext<boolean | undefined>(undefined);
28+
2629
/* ------------------------------ 工具函数区 ------------------------------ */
2730

2831
// 统一解析 value 为字符串数组
@@ -233,22 +236,28 @@ export const ColumnTagsComp = new ColumnTypeCompBuilder(
233236
</ColorMapContext.Provider>
234237
);
235238
})
236-
.setPropertyViewFn((children) => (
237-
<>
238-
{children.text.propertyView({
239-
label: trans("table.columnValue"),
240-
tooltip: ColumnValueTooltip,
241-
})}
242-
{children.colorMap.propertyView({
243-
title: trans("table.tagConfig"),
244-
})}
245-
{children.allowCustomTags.propertyView({
246-
label: trans("table.allowCustomTags"),
247-
tooltip: trans("table.allowCustomTagsTooltip"),
248-
})}
249-
{children.onTagClick.propertyView({
250-
label: trans("table.onTagClick"),
251-
})}
252-
</>
253-
))
239+
.setPropertyViewFn((children) => {
240+
const PropertyView = () => {
241+
const columnEditable = useContext(ColumnEditableContext);
242+
return (
243+
<>
244+
{children.text.propertyView({
245+
label: trans("table.columnValue"),
246+
tooltip: ColumnValueTooltip,
247+
})}
248+
{children.colorMap.propertyView({
249+
title: trans("table.tagConfig"),
250+
})}
251+
{columnEditable && children.allowCustomTags.propertyView({
252+
label: trans("table.allowCustomTags"),
253+
tooltip: trans("table.allowCustomTagsTooltip"),
254+
})}
255+
{children.onTagClick.propertyView({
256+
label: trans("table.onTagClick"),
257+
})}
258+
</>
259+
);
260+
};
261+
return <PropertyView />;
262+
})
254263
.build();

client/packages/barda/src/comps/comps/tableComp/column/tableColumnComp.tsx

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
import { BoolControl } from "comps/controls/boolControl";
2-
import { NumberControl, StringControl } from "comps/controls/codeControl";
3-
import { dropdownControl, HorizontalAlignmentControl } from "comps/controls/dropdownControl";
4-
import { MultiCompBuilder, stateComp, valueComp } from "comps/generators";
5-
import { withSelectedMultiContext } from "comps/generators/withSelectedMultiContext";
6-
import { genRandomKey } from "comps/utils/idGenerator";
7-
import { trans } from "i18n";
8-
import _ from "lodash";
91
import {
102
changeChildAction,
113
changeValueAction,
@@ -20,7 +12,16 @@ import {
2012
wrapChildAction,
2113
} from "barda-core";
2214
import { AlignClose, AlignLeft, AlignRight } from "barda-design";
15+
import { BoolControl } from "comps/controls/boolControl";
16+
import { NumberControl, StringControl } from "comps/controls/codeControl";
17+
import { dropdownControl, HorizontalAlignmentControl } from "comps/controls/dropdownControl";
18+
import { MultiCompBuilder, stateComp, valueComp } from "comps/generators";
19+
import { withSelectedMultiContext } from "comps/generators/withSelectedMultiContext";
20+
import { genRandomKey } from "comps/utils/idGenerator";
21+
import { trans } from "i18n";
22+
import _ from "lodash";
2323
import { ColumnTypeComp, ColumnTypeCompMap } from "./columnTypeComp";
24+
import { ColumnEditableContext } from "./columnTypeComps/columnTagsComp";
2425

2526
export type Render = ReturnType<ConstructorToComp<typeof RenderComp>["getOriginalComp"]>;
2627
export const RenderComp = withSelectedMultiContext(ColumnTypeComp);
@@ -114,14 +115,18 @@ export class ColumnComp extends ColumnInitComp {
114115

115116
propertyView(key: string) {
116117
const columnType = this.children.render.getSelectedComp().getComp().children.compType.getView();
118+
const editable = this.children.editable.getView();
119+
const columnTypeComp = ColumnTypeCompMap[columnType];
117120
return (
118121
<>
119122
{this.children.title.propertyView({
120123
label: trans("table.columnTitle"),
121124
})}
122125
{/* FIXME: cast type currently, return type of withContext should be corrected later */}
123-
{this.children.render.getPropertyView()}
124-
{ColumnTypeCompMap[columnType].canBeEditable() &&
126+
<ColumnEditableContext.Provider value={editable}>
127+
{this.children.render.getPropertyView()}
128+
</ColumnEditableContext.Provider>
129+
{columnTypeComp.canBeEditable() &&
125130
this.children.editable.propertyView({ label: trans("table.editable") })}
126131
{this.children.sortable.propertyView({
127132
label: trans("table.sortable"),

0 commit comments

Comments
 (0)