@alicloudfe/components
Version:
A react component library for aliyun
46 lines (45 loc) • 1.85 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
// 弹层类组件高阶组件,默认向下 4px 弹出
import React from 'react';
import hoistNonReactStatics from 'hoist-non-react-statics';
import { useCssVar } from './useCssVar';
var HOC = function (WrappedComponents, v2) {
if (v2 === void 0) { v2 = true; }
var Wrapper = React.forwardRef(function (props, ref) {
var defaultOffsetY = useDefaultOffsetY();
var theme = useCssVar('--alicloudfe-components-theme').trim();
var openV2 = theme.startsWith('hybridcloud') && v2;
var popupProps = __assign({ align: 'tl bl', offset: [0, defaultOffsetY], v2: openV2 }, props.popupProps);
return (React.createElement(WrappedComponents, __assign({ ref: ref }, props, { popupProps: popupProps })));
});
hoistNonReactStatics(Wrapper, WrappedComponents);
return Wrapper;
};
export default HOC;
var OverlayHOC = function (WrappedComponents) {
var Wrapper = React.forwardRef(function (props, ref) {
var defaultOffsetY = useDefaultOffsetY();
return (React.createElement(WrappedComponents, __assign({ ref: ref, align: "tl bl", shouldUpdatePosition: true, offset: [0, defaultOffsetY] }, props)));
});
hoistNonReactStatics(Wrapper, WrappedComponents);
return Wrapper;
};
export { OverlayHOC };
export function useDefaultOffsetY() {
var varStr = useCssVar('--overlay-offset');
var num = parseInt(varStr.trim());
if (Number.isFinite(num)) {
return num;
}
return 4;
}