Skip to content

Commit 989c8f2

Browse files
committed
Merge branch 'master' of https://github.com/baidu/amis into feat-input-file-label-filter
2 parents 2d87436 + 1b18e47 commit 989c8f2

File tree

4 files changed

+45
-40
lines changed

4 files changed

+45
-40
lines changed

docs/zh-CN/components/form/combo.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,7 @@ combo 还有一个作用是增加层级,比如返回的数据是一个深层
824824
}
825825
```
826826

827-
如果想要赋予删除按钮更多能力,则需要将 deleteBtn 配置成[Button](../button.md)类型
827+
如果想要赋予删除按钮更多能力,则需要将 deleteBtn 配置成[Button](../button.md)类型,还可以利用`index`参数动态控制按钮的显隐或禁用状态等。
828828

829829
```schema: scope="body"
830830
{
@@ -844,7 +844,8 @@ combo 还有一个作用是增加层级,比如返回的数据是一个深层
844844
"level": "danger",
845845
"tooltip": "提示文本",
846846
"tooltipPlacement": "top",
847-
"onClick": "alert(index)"
847+
"onClick": "alert(index)",
848+
"disabledOn": "${index % 2 === 1}"
848849
},
849850
"items": [
850851
{

packages/amis/src/renderers/Form/Combo.tsx

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,7 +1293,8 @@ export default class ComboControl extends React.Component<ComboProps> {
12931293
disabled,
12941294
removable,
12951295
deleteBtn,
1296-
useMobileUI
1296+
useMobileUI,
1297+
data
12971298
} = this.props;
12981299

12991300
const mobileUI = useMobileUI && isMobile();
@@ -1315,38 +1316,44 @@ export default class ComboControl extends React.Component<ComboProps> {
13151316

13161317
// deleteBtn是对象,则根据自定义配置渲染按钮
13171318
if (isObject(deleteBtn)) {
1318-
return render('delete-btn', {
1319-
...deleteBtn,
1320-
type: 'button',
1321-
className: cx(
1322-
'Combo-delController',
1323-
deleteBtn ? deleteBtn.className : ''
1324-
),
1325-
onClick: (e: any) => {
1326-
if (!deleteBtn.onClick) {
1327-
this.deleteItem(index);
1328-
return;
1329-
}
1319+
return render(
1320+
'delete-btn',
1321+
{
1322+
...deleteBtn,
1323+
type: 'button',
1324+
className: cx(
1325+
'Combo-delController',
1326+
deleteBtn ? deleteBtn.className : ''
1327+
),
1328+
onClick: (e: any) => {
1329+
if (!deleteBtn.onClick) {
1330+
this.deleteItem(index);
1331+
return;
1332+
}
13301333

1331-
let originClickHandler = deleteBtn.onClick;
1332-
if (typeof originClickHandler === 'string') {
1333-
originClickHandler = str2AsyncFunction(
1334-
deleteBtn.onClick,
1335-
'e',
1336-
'index',
1337-
'props'
1338-
);
1339-
}
1340-
const result = originClickHandler(e, index, this.props);
1341-
if (result && result.then) {
1342-
result.then(() => {
1334+
let originClickHandler = deleteBtn.onClick;
1335+
if (typeof originClickHandler === 'string') {
1336+
originClickHandler = str2AsyncFunction(
1337+
deleteBtn.onClick,
1338+
'e',
1339+
'index',
1340+
'props'
1341+
);
1342+
}
1343+
const result = originClickHandler(e, index, this.props);
1344+
if (result && result.then) {
1345+
result.then(() => {
1346+
this.deleteItem(index);
1347+
});
1348+
} else {
13431349
this.deleteItem(index);
1344-
});
1345-
} else {
1346-
this.deleteItem(index);
1350+
}
13471351
}
1352+
},
1353+
{
1354+
data: extendObject(data, {index})
13481355
}
1349-
});
1356+
);
13501357
}
13511358

13521359
// deleteBtn是string,则渲染按钮文本

packages/amis/src/renderers/Image.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -394,12 +394,11 @@ export interface ImageFieldProps extends RendererProps {
394394
export class ImageField extends React.Component<ImageFieldProps, object> {
395395
static defaultProps: Pick<
396396
ImageFieldProps,
397-
'defaultImage' | 'thumbMode' | 'thumbRatio' | 'placeholder'
397+
'defaultImage' | 'thumbMode' | 'thumbRatio'
398398
> = {
399399
defaultImage: imagePlaceholder,
400400
thumbMode: 'contain',
401-
thumbRatio: '1:1',
402-
placeholder: '-'
401+
thumbRatio: '1:1'
403402
};
404403

405404
@autobind
@@ -472,9 +471,7 @@ export class ImageField extends React.Component<ImageFieldProps, object> {
472471
} = this.props;
473472

474473
const finnalSrc = src ? filter(src, data, '| raw') : '';
475-
let value =
476-
finnalSrc || getPropValue(this.props) || defaultImage || imagePlaceholder;
477-
474+
let value = finnalSrc || getPropValue(this.props);
478475
const finnalHref = href ? filter(href, data, '| raw') : '';
479476

480477
return (
@@ -489,14 +486,14 @@ export class ImageField extends React.Component<ImageFieldProps, object> {
489486
style={style}
490487
onClick={this.handleClick}
491488
>
492-
{value ? (
489+
{value || (!value && !placeholder) ? (
493490
<ThemedImageThumb
494491
className={innerClassName}
495492
imageClassName={imageClassName}
496493
thumbClassName={thumbClassName}
497494
height={height}
498495
width={width}
499-
src={value}
496+
src={value ? value : defaultImage}
500497
href={finnalHref}
501498
title={filter(title, data)}
502499
caption={filter(imageCaption, data)}

packages/amis/src/renderers/Nav.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ export class Navigation extends React.Component<
591591

592592
const label =
593593
typeof link.label === 'string'
594-
? link.label
594+
? filter(link.label, data)
595595
: React.isValidElement(link.label)
596596
? React.cloneElement(link.label)
597597
: render('inline', link.label as SchemaCollection);

0 commit comments

Comments
 (0)