@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
46 lines (45 loc) • 1.93 kB
TypeScript
/**
* Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ComputedRef } from 'vue';
import { TooltipPlacement } from '../tooltip.props';
export type RectDirection = 'top' | 'bottom' | 'right' | 'left';
export type RectSizeProperty = 'height' | 'width';
export interface RectPosition {
top: number;
left: number;
right?: number;
}
export interface TooltipPosition {
arrow: RectPosition;
tooltip: RectPosition;
}
export interface UseTooltipPosition {
tooltipPlacement: ComputedRef<TooltipPlacement>;
tooltipPosition: ComputedRef<RectPosition>;
arrowPosition: ComputedRef<RectPosition>;
}
export interface UseCalculatePosition {
calculate: (placementAndAlignment: TooltipPlacement, hostBound: DOMRect, tooltipBound: DOMRect, tooltipContentBound: DOMRect, arrowBound: DOMRect) => TooltipPosition;
}
export interface UseRelative {
getRelativeElementBound: () => DOMRect;
}
export interface UseAdjustPlacement {
adjustPlacement: (placementAndAlignment: TooltipPlacement, referenceBoundingRect: DOMRect, arrowReferenceBoundingRect: DOMRect, tooltipBound: DOMRect, arrowBound: DOMRect) => TooltipPlacement;
}
export interface UseAdjustPosition {
adjustPosition: (placementAndAlignment: TooltipPlacement, originalPosition: RectPosition, relativeElementRect: DOMRect, tooltipRect: DOMRect) => RectPosition;
}