Skip to content

Commit

Permalink
pref: 树组件优化问题修复
Browse files Browse the repository at this point in the history
  • Loading branch information
zhouqiqi01 committed Nov 6, 2023
1 parent 440a984 commit 0bc7fed
Show file tree
Hide file tree
Showing 14 changed files with 38 additions and 14 deletions.
2 changes: 1 addition & 1 deletion docs/zh-CN/components/form/input-tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -1080,7 +1080,7 @@ true false false [{label: 'A/B/C', value: 'a/b/c'},{label: 'A
}
```

适用于需选择的数据/信息源较多时,用户可直观的知道自己所选择的数据/信息的场景。
适用于需选择的数据/信息源较多时,用户可直观的知道自己所选择的数据/信息的场景。未配置 searchApi 是前端检索,配置之后就只能通过后端检索。

## 属性表

Expand Down
2 changes: 1 addition & 1 deletion packages/amis-core/src/renderers/Options.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1075,7 +1075,7 @@ export function registerOptionsControl(config: OptionsConfig) {
}

// 如果是懒加载的,只懒加载当前节点。
if (parent.hasOwnProperty(deferField) && parent[deferField]) {
if (parent && parent.hasOwnProperty(deferField) && parent[deferField]) {
await this.deferLoad(parent);
} else if (source && addApi) {
// 如果配置了 source 且配置了 addApi 直接重新拉取接口就够了
Expand Down
9 changes: 6 additions & 3 deletions packages/amis-editor/src/plugin/Form/InputTree.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ export class TreeControlPlugin extends BasePlugin {
required: true,
draggable: false,
valueType: 'ae-formulaControl',
keyPlaceholder: 'Option中属性的Key',
value: {
label: '',
value: ''
Expand All @@ -274,7 +275,7 @@ export class TreeControlPlugin extends BasePlugin {
size: 'lg',
variables: '${variables}',
inputMode: 'input-group',
placeholder: '请输入父级数据项的值,为空则在头部插入'
placeholder: '请输入父级数据项 valueField 的值'
})
]
})
Expand All @@ -297,6 +298,7 @@ export class TreeControlPlugin extends BasePlugin {
required: true,
draggable: false,
valueType: 'ae-formulaControl',
keyPlaceholder: 'Option中属性的Key',
value: {
label: '',
value: ''
Expand All @@ -311,7 +313,7 @@ export class TreeControlPlugin extends BasePlugin {
size: 'lg',
variables: '${variables}',
inputMode: 'input-group',
placeholder: '请输入数据项编辑前的值'
placeholder: '请输入数据项编辑前 valueField 的值'
})
]
})
Expand All @@ -330,7 +332,8 @@ export class TreeControlPlugin extends BasePlugin {
required: true,
size: 'lg',
variables: '${variables}',
inputMode: 'input-group'
inputMode: 'input-group',
placeholder: '请输入删除项 valueField 的值'
})
])
},
Expand Down
9 changes: 6 additions & 3 deletions packages/amis-editor/src/plugin/Form/TreeSelect.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ export class TreeSelectControlPlugin extends BasePlugin {
required: true,
draggable: false,
valueType: 'ae-formulaControl',
keyPlaceholder: 'Option中属性的Key',
value: {
label: '',
value: ''
Expand All @@ -273,7 +274,7 @@ export class TreeSelectControlPlugin extends BasePlugin {
size: 'lg',
variables: '${variables}',
inputMode: 'input-group',
placeholder: '请输入父级数据项的值,为空则在头部插入'
placeholder: '请输入父级数据项 valueField 的值'
})
]
})
Expand All @@ -296,6 +297,7 @@ export class TreeSelectControlPlugin extends BasePlugin {
required: true,
draggable: false,
valueType: 'ae-formulaControl',
keyPlaceholder: 'Option中属性的Key',
value: {
label: '',
value: ''
Expand All @@ -310,7 +312,7 @@ export class TreeSelectControlPlugin extends BasePlugin {
size: 'lg',
variables: '${variables}',
inputMode: 'input-group',
placeholder: '请输入数据项编辑前的值'
placeholder: '请输入数据项编辑前 valueField 的值'
})
]
})
Expand All @@ -329,7 +331,8 @@ export class TreeSelectControlPlugin extends BasePlugin {
required: true,
size: 'lg',
variables: '${variables}',
inputMode: 'input-group'
inputMode: 'input-group',
placeholder: '请输入删除项 valueField 的值'
})
])
},
Expand Down
2 changes: 1 addition & 1 deletion packages/amis-editor/src/tpl/common.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1734,5 +1734,5 @@ setSchemaTpl('deferField', {
label: '懒加载字段',
name: 'deferField',
type: 'input-text',
placeholder: '懒加载对应的字段'
placeholder: '自定义开启懒加载的字段'
});
3 changes: 2 additions & 1 deletion packages/amis-ui/src/components/TabsTransfer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ export class TabsTransfer extends React.Component<
> {
static defaultProps = {
multiple: true,
onlyChildren: true
onlyChildren: true,
deferField: 'defer'
};

state = {
Expand Down
1 change: 1 addition & 0 deletions packages/amis-ui/src/locale/de-DE.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ register('de-DE', {
'Tree.addChild': 'Untergeordnetes Element hinzufügen',
'Tree.addRoot': 'Stammknoten hinzufügen',
'Tree.editNode': 'Diesen Knoten bearbeiten',
'Tree.invalidArray': '"data" muss ein Array sein',
'Tree.removeNode': 'Diesen Knoten entfernen',
'Tree.root': 'Stamm',
'validate.equals': 'Wert muss $1 sein',
Expand Down
1 change: 1 addition & 0 deletions packages/amis-ui/src/locale/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ register('en-US', {
'Tree.addChild': 'Add child',
'Tree.addRoot': 'Add root node',
'Tree.editNode': 'Edit this node',
'Tree.invalidArray': 'data must be an array',
'Tree.removeNode': 'Remove this node',
'Tree.root': 'Root',
'validate.equals': 'value must be $1',
Expand Down
1 change: 1 addition & 0 deletions packages/amis-ui/src/locale/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ register('zh-CN', {
'Tree.addChild': '添加子节点',
'Tree.addRoot': '添加一级节点',
'Tree.editNode': '编辑该节点',
'Tree.invalidArray': 'data 必须是数组',
'Tree.removeNode': '移除该节点',
'Tree.root': '顶级',
'validate.equals': '输入的数据与 $1 不一致',
Expand Down
2 changes: 1 addition & 1 deletion packages/amis/src/renderers/Form/InputTree.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
const result =
payload.data.options || payload.data.items || payload.data;
if (!Array.isArray(result)) {
throw new Error(__('CRUD.invalidArray'));
throw new Error(__('Tree.invalidArray'));
}

filterOptions = result;
Expand Down
3 changes: 2 additions & 1 deletion packages/amis/src/renderers/Form/TabsTransfer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,8 @@ export class BaseTabsTransferRenderer<
})
export class TabsTransferRenderer extends BaseTabsTransferRenderer<TabsTransferProps> {
static defaultProps = {
multiple: true
multiple: true,
deferField: 'defer'
};

@autobind
Expand Down
2 changes: 2 additions & 0 deletions packages/amis/src/renderers/Form/TabsTransferPicker.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ export class TabsTransferPickerRenderer extends BaseTabsTransferRenderer<TabsTra
loadingConfig,
labelField = 'label',
valueField = 'value',
deferField = 'defer',
mobileUI,
env,
maxTagCount,
Expand Down Expand Up @@ -144,6 +145,7 @@ export class TabsTransferPickerRenderer extends BaseTabsTransferRenderer<TabsTra
virtualThreshold={virtualThreshold}
labelField={labelField}
valueField={valueField}
deferField={deferField}
mobileUI={mobileUI}
popOverContainer={env?.getModalContainer}
maxTagCount={maxTagCount}
Expand Down
2 changes: 2 additions & 0 deletions packages/amis/src/renderers/Form/TransferPicker.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ export class TransferPickerRenderer extends BaseTransferRenderer<TabsTransferPro
loadingConfig,
labelField = 'label',
valueField = 'value',
deferField = 'defer',
menuTpl,
valueTpl,
mobileUI,
Expand Down Expand Up @@ -138,6 +139,7 @@ export class TransferPickerRenderer extends BaseTransferRenderer<TabsTransferPro
onBlur={() => this.dispatchEvent('blur')}
labelField={labelField}
valueField={valueField}
deferField={deferField}
itemHeight={
toNumber(itemHeight) > 0 ? toNumber(itemHeight) : undefined
}
Expand Down
13 changes: 11 additions & 2 deletions packages/amis/src/renderers/Form/TreeSelect.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -562,11 +562,20 @@ export default class TreeSelectControl extends React.Component<

@autobind
async resultChangeEvent(value: any) {
const {onChange, options, dispatchEvent, data} = this.props;
const {onChange, options, dispatchEvent, searchable, autoComplete} =
this.props;

let filtedOptions =
!isEffectiveApi(autoComplete) && searchable && this.state.inputValue
? this.filterOptions(options, this.state.inputValue)
: options;

const rendererEvent = await dispatchEvent(
'change',
resolveEventData(this.props, {value, items: options})
resolveEventData(this.props, {
value,
items: filtedOptions
})
);

if (rendererEvent?.prevented) {
Expand Down

0 comments on commit 0bc7fed

Please sign in to comment.