ant-design/components/_util/hooks/useOrientation.ts
EmilyyyLiu 7baf1851ef
feat(Slider): unify orientation attribute usage (#53671)
* test:useOrientation add test

* feat: util, delete type direction

* feat: change useVertical and useOrientation

* feat: change useOrientation ts

* feat: change useOrientation and test

* feat: change useOrientation types

* feat: change ts

* feat: const-function

* feat: delect includes

* feat[Slider]: Unified use of orientation attribute

* feat: change useOrientation ,Reduce return

* feat:  useOrientation ,change params name

* feat: useOrientation ,mergedOrientation

* docs: Modify document format

* docs: Modify the sorting of document properties

* docs: Modify the sorting of document properties(2)

* feat: add isValidOrientation

---------

Co-authored-by: 刘欢 <lh01217311@antgroup.com>
2025-05-16 16:07:36 +08:00

29 lines
968 B
TypeScript

import { useMemo } from 'react';
export type Orientation = 'horizontal' | 'vertical';
const isValidOrientation = (orientation?: Orientation) => {
return orientation === 'horizontal' || orientation === 'vertical';
};
export default function useOrientation(
orientation?: Orientation,
vertical?: boolean,
legacyDirection?: Orientation,
): [Orientation, boolean] {
return useMemo(() => {
const validOrientation = isValidOrientation(orientation);
let mergedOrientation: Orientation;
if (validOrientation) {
mergedOrientation = orientation;
} else if (typeof vertical === 'boolean') {
mergedOrientation = vertical ? 'vertical' : 'horizontal';
} else {
const validLegacyDirection = isValidOrientation(legacyDirection);
mergedOrientation = validLegacyDirection ? legacyDirection : 'horizontal';
}
return [mergedOrientation, mergedOrientation === 'vertical'];
}, [legacyDirection, orientation, vertical]);
}