diff --git a/docs/en/guide/schema.md b/docs/en/guide/schema.md index d88aa4993..327ec9706 100644 --- a/docs/en/guide/schema.md +++ b/docs/en/guide/schema.md @@ -111,6 +111,7 @@ interface IElement { code: string | null; min?: number; max?: number; + flexDirection: FlexDirection; valueSets: { value: string; code: string; diff --git a/docs/guide/schema.md b/docs/guide/schema.md index 079beec0f..488739cfb 100644 --- a/docs/guide/schema.md +++ b/docs/guide/schema.md @@ -111,6 +111,7 @@ interface IElement { code: string | null; min?: number; max?: number; + flexDirection: FlexDirection; valueSets: { value: string; code: string; diff --git a/src/editor/core/draw/Draw.ts b/src/editor/core/draw/Draw.ts index d188d9cc2..ff20b561b 100644 --- a/src/editor/core/draw/Draw.ts +++ b/src/editor/core/draw/Draw.ts @@ -99,7 +99,7 @@ import { EventBus } from '../event/eventbus/EventBus' import { EventBusMap } from '../../interface/EventBus' import { Group } from './interactive/Group' import { Override } from '../override/Override' -import { ImageDisplay } from '../../dataset/enum/Common' +import { FlexDirection, ImageDisplay } from '../../dataset/enum/Common' import { PUNCTUATION_REG } from '../../dataset/constant/Regular' import { LineBreakParticle } from './particle/LineBreakParticle' import { MouseObserver } from '../observer/MouseObserver' @@ -1763,6 +1763,10 @@ export class Draw { element.imgDisplay === ImageDisplay.INLINE || preElement?.listId !== element.listId || preElement?.areaId !== element.areaId || + (element.control?.flexDirection === FlexDirection.COLUMN && + (element.controlComponent === ControlComponent.CHECKBOX || + element.controlComponent === ControlComponent.RADIO) && + preElement?.controlComponent === ControlComponent.VALUE) || (i !== 0 && element.value === ZERO) // 是否宽度不足导致换行 const isWidthNotEnough = curRowWidth > availableWidth diff --git a/src/editor/dataset/enum/Common.ts b/src/editor/dataset/enum/Common.ts index 7973bd8b7..56f4628d6 100644 --- a/src/editor/dataset/enum/Common.ts +++ b/src/editor/dataset/enum/Common.ts @@ -21,3 +21,8 @@ export enum LocationPosition { BEFORE = 'before', AFTER = 'after' } + +export enum FlexDirection { + ROW = 'row', + COLUMN = 'column' +} diff --git a/src/editor/index.ts b/src/editor/index.ts index 1236ff1a8..1354c7779 100644 --- a/src/editor/index.ts +++ b/src/editor/index.ts @@ -6,7 +6,11 @@ import { Command } from './core/command/Command' import { CommandAdapt } from './core/command/CommandAdapt' import { Listener } from './core/listener/Listener' import { RowFlex } from './dataset/enum/Row' -import { ImageDisplay, LocationPosition } from './dataset/enum/Common' +import { + FlexDirection, + ImageDisplay, + LocationPosition +} from './dataset/enum/Common' import { ElementType } from './dataset/enum/Element' import { formatElementList } from './utils/element' import { Register } from './core/register/Register' @@ -197,7 +201,8 @@ export { LineNumberType, LocationPosition, AreaMode, - ControlState + ControlState, + FlexDirection } // 对外类型 diff --git a/src/editor/interface/Control.ts b/src/editor/interface/Control.ts index 000c86ddc..647ea7cf4 100644 --- a/src/editor/interface/Control.ts +++ b/src/editor/interface/Control.ts @@ -1,4 +1,4 @@ -import { LocationPosition } from '../dataset/enum/Common' +import { FlexDirection, LocationPosition } from '../dataset/enum/Common' import { ControlType, ControlIndentation, @@ -32,11 +32,13 @@ export interface IControlCheckbox { code: string | null min?: number max?: number + flexDirection: FlexDirection valueSets: IValueSet[] } export interface IControlRadio { code: string | null + flexDirection: FlexDirection valueSets: IValueSet[] }