zent
Version:
一套前端设计语言和基于React的实现
38 lines (29 loc) • 861 B
text/typescript
import capitalize from './capitalize';
import Popover, { IPositionFunction } from '../popover';
import { PopPositions } from '../pop';
const { Position } = Popover;
const { Arrow } = Position;
export default function getPosition(
position: PopPositions | IPositionFunction,
centerArrow: boolean
) {
if (typeof position === 'function') {
return position;
}
let positionName = position
.split('-')
.map(s => capitalize(s))
.join('');
let pos = Position[positionName];
// Choose a fallback in case position is invalid
if (!pos) {
pos = Position.TopCenter;
positionName = 'TopCenter';
}
// *-center postions are not affected by centerArrow parameter
if (!centerArrow || /^.+Center$/.test(positionName)) {
return pos;
}
positionName = 'Arrow' + positionName + 'Position';
return Arrow[positionName];
}