ng-ytl-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
129 lines (121 loc) • 3.16 kB
text/typescript
import { ConnectionPositionPair } from '@angular/cdk/overlay';
export const POSITION_MAP: { [key: string]: ConnectionPositionPair } = {
'top' : {
originX : 'center',
originY : 'top',
overlayX: 'center',
overlayY: 'bottom'
},
'topCenter' : {
originX : 'center',
originY : 'top',
overlayX: 'center',
overlayY: 'bottom'
},
'topLeft' : {
originX : 'start',
originY : 'top',
overlayX: 'start',
overlayY: 'bottom'
},
'topRight' : {
originX : 'end',
originY : 'top',
overlayX: 'end',
overlayY: 'bottom'
},
'right' : {
originX : 'end',
originY : 'center',
overlayX: 'start',
overlayY: 'center',
},
'rightTop' : {
originX : 'end',
originY : 'top',
overlayX: 'start',
overlayY: 'top',
},
'rightBottom' : {
originX : 'end',
originY : 'bottom',
overlayX: 'start',
overlayY: 'bottom',
},
'bottom' : {
originX : 'center',
originY : 'bottom',
overlayX: 'center',
overlayY: 'top',
},
'bottomCenter': {
originX : 'center',
originY : 'bottom',
overlayX: 'center',
overlayY: 'top',
},
'bottomLeft' : {
originX : 'start',
originY : 'bottom',
overlayX: 'start',
overlayY: 'top',
},
'bottomRight' : {
originX : 'end',
originY : 'bottom',
overlayX: 'end',
overlayY: 'top',
},
'left' : {
originX : 'start',
originY : 'center',
overlayX: 'end',
overlayY: 'center',
},
'leftTop' : {
originX : 'start',
originY : 'top',
overlayX: 'end',
overlayY: 'top',
},
'leftBottom' : {
originX : 'start',
originY : 'bottom',
overlayX: 'end',
overlayY: 'bottom',
},
} as { } as { [key: string]: ConnectionPositionPair };
// TODO: The whole logic does not make sense here, _objectValues just returns a copy of original array
export const DEFAULT_4_POSITIONS = _objectValues([ POSITION_MAP.top, POSITION_MAP.right, POSITION_MAP.bottom, POSITION_MAP.left]);
export const DEFAULT_DROPDOWN_POSITIONS = _objectValues([ POSITION_MAP.bottomLeft, POSITION_MAP.topLeft ]);
export const DEFAULT_DATEPICKER_POSITIONS = [
{
originX : 'start',
originY : 'top',
overlayX: 'start',
overlayY: 'top',
},
{
originX : 'start',
originY : 'bottom',
overlayX: 'start',
overlayY: 'bottom',
}
] as ConnectionPositionPair[];
function arrayMap<T, S>(array: T[], iteratee: (item: T, index: number, arr: T[]) => S): S[] {
let index = -1;
const length = array == null ? 0 : array.length;
const result = Array(length);
while (++index < length) {
result[ index ] = iteratee(array[ index ], index, array);
}
return result;
}
function baseValues<T>(object: { [key: string]: T } | T[], props: string[]): T[] {
return arrayMap(props, (key) => {
return object[ key ];
});
}
function _objectValues<T>(object: { [key: string]: T } | T[]): T[] {
return object == null ? [] : baseValues(object, Object.keys(object));
}