Skip to content

Commit

Permalink
Adapting KeyValueListControl for better imports
Browse files Browse the repository at this point in the history
  • Loading branch information
FalkWolsky committed Jan 31, 2025
1 parent 8071763 commit 84e1903
Show file tree
Hide file tree
Showing 13 changed files with 75 additions and 65 deletions.
20 changes: 10 additions & 10 deletions client/packages/lowcoder/src/comps/comps/allComp.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,16 @@ const COMPS_MAP = {
string: StringControl,
test: TestComp,
input: InputComp,
// query: QueryComp,
// js: JSQuery,
// mysql: SQLQuery,
// params: ParamsStringControl,
// layout: AppLayoutComp,
// root: RootComp,
// listView: ListViewComp,
// table: TableComp,
// tableColumn: ColumnComp,
// tableColumnRender: RenderComp,
query: QueryComp,
js: JSQuery,
mysql: SQLQuery,
params: ParamsStringControl,
layout: AppLayoutComp,
root: RootComp,
listView: ListViewComp,
table: TableComp,
tableColumn: ColumnComp,
tableColumnRender: RenderComp,
} as Record<string, CompConstructor>;

Object.entries(uiCompRegistry).forEach(async ([key, value]) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Dropdown } from "components/Dropdown";
import { StringControl } from "comps/controls/codeControl";
import { BranchDiv, Treediv } from "components/Trees";
import { AppSelectComp } from "comps/comps/layout/appSelectComp";
import { keyValueListControl } from "comps/controls/keyValueControl";
import { keyValueListControl } from "comps/controls/keyValueListControl";
import { trans } from "i18n";
import { KeyValue } from "types/common";
import { keyValueListToSearchStr } from "util/appUtils";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import { BranchDiv, Dropdown } from "lowcoder-design";
import { BottomResTypeEnum } from "types/bottomRes";
import { getPromiseAfterDispatch } from "util/promiseUtils";
import { trans } from "i18n";
import {keyValueListControl, keyValueListToSearchStr, withDefault} from "lowcoder-sdk";
import {KeyValue} from "@lowcoder-ee/types/common";
import { useCallback, useContext, useEffect, useMemo } from "react";
import { withDefault } from "comps/generators";
import { keyValueListControl} from "comps/controls/keyValueListControl";
import { useCallback } from "react";

const ExecuteQueryPropertyView = ({
comp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { BranchDiv } from "lowcoder-design";
import { KeyValue } from "types/common";
import { BoolControl } from "comps/controls/boolControl";
import { StringControl } from "comps/controls/codeControl";
import { keyValueListControl } from "../keyValueControl";
import { keyValueListControl } from "../keyValueListControl";
import { keyValueListToSearchStr } from "../../../util/appUtils";
import { trans } from "i18n";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { BranchDiv } from "lowcoder-design";
import { KeyValue } from "types/common";
import ApplicationSelectControl from "../appSelectControl";
import { BoolControl } from "../boolControl";
import { keyValueListControl } from "../keyValueControl";
import { keyValueListControl } from "../keyValueListControl";
import { keyValueListToSearchStr, openApp } from "../../../util/appUtils";
import { trans } from "i18n";

Expand Down
47 changes: 3 additions & 44 deletions client/packages/lowcoder/src/comps/controls/keyValueControl.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { ControlPropertyViewWrapper, KeyValueList, OptionsType } from "lowcoder-design";
import { OptionsType } from "lowcoder-design";
import { ReactNode } from "react";
import styled from "styled-components";
import { MultiCompBuilder } from "../generators";
import { list } from "../generators/list";
import { StringControl } from "./codeControl";
import { ControlParams } from "./controlParams";
import { dropdownControl } from "./dropdownControl";
import { ParamsControlType, ParamsStringControl } from "./paramsControl";
import { FunctionProperty } from "../queries/queryCompUtils";
import { ParamsStringControl } from "./paramsControl";

const KeyValueWrapper = styled.div`
display: flex;
Expand Down Expand Up @@ -57,7 +55,7 @@ export type KeyValueControlParams = ControlParams & {
* controlType: params output: {key: {"1+2": () => "3"}, value: {"-1": () => "-1"}}
* controlType: string output: {key: "xxx", value: "xxxx"}
*/
function keyValueControl<T extends OptionsType>(
export function keyValueControl<T extends OptionsType>(
hasType: boolean = false,
types: T,
controlType: "params" | "string" = "params"
Expand Down Expand Up @@ -112,42 +110,3 @@ function keyValueControl<T extends OptionsType>(
};
}

/**
* Provides a list of kv input boxes with add and delete buttons
* output [{key: "", value: ""}, {key: "", value: ""}]
*/
export function keyValueListControl<T extends OptionsType>(
hasType: boolean = false,
types: T | OptionsType = [],
controlType: "params" | "string" = "params"
) {
return class extends list(keyValueControl(hasType, types, controlType)) {
getQueryParams() {
if (controlType === "params") {
return this.getView().reduce(
(result: FunctionProperty[], kv) => [
...result,
...(kv.children.key as InstanceType<ParamsControlType>).getQueryParams(),
...(kv.children.value as InstanceType<ParamsControlType>).getQueryParams(),
],
[]
);
}
return [];
}

propertyView(params: KeyValueControlParams): ReactNode {
return (
<ControlPropertyViewWrapper {...params}>
<KeyValueList
list={this.getView().map((child) => child.propertyView(params))}
onAdd={() => this.dispatch(this.pushAction({}))}
onDelete={(item, index) => this.dispatch(this.deleteAction(index))}
isStatic={params.isStatic}
indicatorForAll={params.indicatorForAll}
/>
</ControlPropertyViewWrapper>
);
}
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { ControlPropertyViewWrapper, KeyValueList, OptionsType } from "lowcoder-design";
import { ReactNode } from "react";
import styled from "styled-components";
import { list } from "../generators/list";
import { ControlParams } from "./controlParams";
import { ParamsControlType, ParamsStringControl } from "./paramsControl";
import { FunctionProperty } from "../queries/queryCompUtils";
import { keyValueControl, KeyValueControlParams } from "./keyValueControl"

/**
* Provides a list of kv input boxes with add and delete buttons
* output [{key: "", value: ""}, {key: "", value: ""}]
*/
export function keyValueListControl<T extends OptionsType>(
hasType: boolean = false,
types: T | OptionsType = [],
controlType: "params" | "string" = "params"
) {
return class extends list(keyValueControl(hasType, types, controlType)) {
getQueryParams() {
if (controlType === "params") {
return this.getView().reduce(
(result: FunctionProperty[], kv) => [
...result,
...(kv.children.key as InstanceType<ParamsControlType>).getQueryParams(),
...(kv.children.value as InstanceType<ParamsControlType>).getQueryParams(),
],
[]
);
}
return [];
}

propertyView(params: KeyValueControlParams): ReactNode {
return (
<ControlPropertyViewWrapper {...params}>
<KeyValueList
list={this.getView().map((child) => child.propertyView(params))}
onAdd={() => this.dispatch(this.pushAction({}))}
onDelete={(item, index) => this.dispatch(this.deleteAction(index))}
isStatic={params.isStatic}
indicatorForAll={params.indicatorForAll}
/>
</ControlPropertyViewWrapper>
);
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { QueryConfigItemWrapper, QueryConfigLabel, QueryConfigWrapper } from "co
import { simpleMultiComp } from "comps/generators/multi";
import { ReactNode } from "react";
import { JSONValue } from "../../../util/jsonTypes";
import { keyValueListControl } from "../../controls/keyValueControl";
import { keyValueListControl } from "../../controls/keyValueListControl";
import { ParamsJsonControl, ParamsStringControl } from "../../controls/paramsControl";
import { list } from "../../generators/list";
import { valueComp, withDefault } from "../../generators/simpleGenerators";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { valueComp, withDefault } from "comps/generators";
import { trans } from "i18n";
import { includes } from "lodash";
import { CompAction, MultiBaseComp } from "lowcoder-core";
import { keyValueListControl } from "../../controls/keyValueControl";
import { keyValueListControl } from "../../controls/keyValueListControl";
import { ParamsJsonControl, ParamsStringControl } from "../../controls/paramsControl";
import { withTypeAndChildrenAbstract } from "../../generators/withType";
import { toQueryView } from "../queryCompUtils";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ import { CompConstructor } from "lowcoder-core";
import { dropdownControl } from "comps/controls/dropdownControl";
import { ControlParams, ControlType } from "comps/controls/controlParams";
import MarkdownTooltip from "lowcoder-design/src/components/MarkdownTooltip";
import { KeyValueControlParams, keyValueListControl } from "comps/controls/keyValueControl";
import { KeyValueControlParams } from "comps/controls/keyValueControl";
import { keyValueListControl } from "comps/controls/keyValueListControl";
import { VariablesControl } from "../httpQuery/graphqlQuery";
import { HttpHeaderPropertyView } from "../httpQuery/httpQueryConstants";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {MultiCompBuilder, withDefault} from "../../generators";
import {keyValueListControl} from "lowcoder-sdk";
import { keyValueListControl } from "../../controls/keyValueListControl";

export const VariablesComp = new MultiCompBuilder(
{
Expand Down
3 changes: 2 additions & 1 deletion client/packages/lowcoder/src/i18n/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -855,7 +855,8 @@ export const en = {
"categoryDocumentHandling" : "Report & Document Generation",
"categoryRPA" : "Robotic Process Automation",
"componentsUsingQueryTitle" : "Query Usage",
"componentsUsingQuery" : "Where is this Query in use"
"componentsUsingQuery" : "Where is this Query in use",
"query.variables" : "Variables"
},


Expand Down
1 change: 1 addition & 0 deletions client/packages/lowcoder/src/index.sdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ export * from "comps/controls/actionSelector/actionSelectorControl";
export * from "comps/controls/iconControl";
export * from "comps/controls/shapeControl";
export * from "comps/controls/keyValueControl";
export * from "comps/controls/keyValueListControl";
export * from "comps/controls/labelControl";
export * from "comps/controls/millisecondControl";
export * from "comps/controls/optionsControl";
Expand Down

0 comments on commit 84e1903

Please sign in to comment.