ant-design/components/_util/hooks/useVariants.ts
MadCcc 5f395fbed3
feat: select/cascader/tree-select support variant filled (#46549)
* feat: Select filled style

* chore: update snapshot

* feat: Cascader and TreeSelect support variant

* feat: multiple style

* fix: import

* chore: fix lint

* chore: update auto-complete docs

* fix: clearIcon bg

* chore: code clean
2023-12-21 13:39:04 +08:00

25 lines
656 B
TypeScript

type DefaultVariant = 'outlined' | 'borderless';
/**
* Compatible for legacy `bordered` prop.
*/
const useVariant = <T extends string>(
variant: T | undefined,
legacyBordered: boolean | undefined,
variants: readonly (T | DefaultVariant)[],
): [T | DefaultVariant, boolean] => {
let mergedVariant: T | DefaultVariant;
if (typeof variant !== 'undefined') {
mergedVariant = variant;
} else if (legacyBordered === false) {
mergedVariant = 'borderless';
} else {
mergedVariant = 'outlined';
}
const enableVariantCls = variants.includes(mergedVariant);
return [mergedVariant, enableVariantCls];
};
export default useVariant;