antd
Version:
An enterprise-class UI design language and React components implementation
28 lines • 1.23 kB
JavaScript
import { useContext } from 'react';
import { VariantContext } from '../context';
import { ConfigContext, Variants } from '../../config-provider';
/**
* Compatible for legacy `bordered` prop.
*/
const useVariant = function (component, variant) {
let legacyBordered = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
var _a, _b;
const {
variant: configVariant,
[component]: componentConfig
} = useContext(ConfigContext);
const ctxVariant = useContext(VariantContext);
const configComponentVariant = componentConfig === null || componentConfig === void 0 ? void 0 : componentConfig.variant;
let mergedVariant;
if (typeof variant !== 'undefined') {
mergedVariant = variant;
} else if (legacyBordered === false) {
mergedVariant = 'borderless';
} else {
// form variant > component global variant > global variant
mergedVariant = (_b = (_a = ctxVariant !== null && ctxVariant !== void 0 ? ctxVariant : configComponentVariant) !== null && _a !== void 0 ? _a : configVariant) !== null && _b !== void 0 ? _b : 'outlined';
}
const enableVariantCls = Variants.includes(mergedVariant);
return [mergedVariant, enableVariantCls];
};
export default useVariant;