Skip to content

Commit

Permalink
fix(antd/next): fix editable closing being blocked by other controller
Browse files Browse the repository at this point in the history
  • Loading branch information
janryWang committed Apr 18, 2021
1 parent 9cd615b commit edd7a67
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 16 deletions.
19 changes: 11 additions & 8 deletions packages/antd/src/editable/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import cls from 'classnames'
* 默认Inline展示
*/

interface IPopoverProps extends PopoverProps {}
type IPopoverProps = PopoverProps

type ComposedEditable = React.FC<IFormItemProps> & {
Popover?: React.FC<IPopoverProps & { title?: React.ReactNode }>
Expand Down Expand Up @@ -138,13 +138,16 @@ Editable.Popover = observer((props) => {
const [visible, setVisible] = useState(false)
const prefixCls = usePrefixCls('formily-editable')
const closePopover = async () => {
await field.form.validate(`${field.address}.*`)
const errors = field.form.queryFeedbacks({
type: 'error',
address: `${field.address}.*`,
})
if (errors?.length) return
setVisible(false)
try {
await field.form.validate(`${field.address}.*`)
} finally {
const errors = field.form.queryFeedbacks({
type: 'error',
address: `${field.address}.*`,
})
if (errors?.length) return
setVisible(false)
}
}
const openPopover = () => {
setVisible(true)
Expand Down
19 changes: 11 additions & 8 deletions packages/next/src/editable/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import cls from 'classnames'
* 默认Inline展示
*/

interface IPopoverProps extends PopoverProps {}
type IPopoverProps = PopoverProps

type ComposedEditable = React.FC<IFormItemProps> & {
Popover?: React.FC<IPopoverProps & { title?: React.ReactNode }>
Expand Down Expand Up @@ -137,13 +137,16 @@ Editable.Popover = observer(({ ...props }) => {
const [visible, setVisible] = useState(false)
const prefixCls = usePrefixCls('formily-editable')
const closePopover = async () => {
await field.form.validate(`${field.address}.*`)
const errors = field.form.queryFeedbacks({
type: 'error',
address: `${field.address}.*`,
})
if (errors?.length) return
setVisible(false)
try {
await field.form.validate(`${field.address}.*`)
} finally {
const errors = field.form.queryFeedbacks({
type: 'error',
address: `${field.address}.*`,
})
if (errors?.length) return
setVisible(false)
}
}
const openPopover = () => {
setVisible(true)
Expand Down

0 comments on commit edd7a67

Please sign in to comment.