Skip to content

Commit

Permalink
✨ feat: 新增 useResponse hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
arvinxx committed Jan 25, 2023
1 parent 265c942 commit 7e4f632
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 14 deletions.
4 changes: 2 additions & 2 deletions src/functions/createStyles/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import type {
} from '@/types';
import { isReactCssResult } from '@/utils';

import { convertResponsiveStyleToString, useResponsiveMap } from './response';
import { convertResponsiveStyleToString, useMediaQueryMap } from './response';

import { reactCss } from '../react';

Expand Down Expand Up @@ -63,7 +63,7 @@ export const createStyles =
) =>
(props?: Props): ReturnStyles<Input> => {
const theme = useTheme();
const responsiveMap = useResponsiveMap();
const responsiveMap = useMediaQueryMap();
const { css, cx } = useEmotion();

const styles = useMemo(() => {
Expand Down
15 changes: 3 additions & 12 deletions src/functions/createStyles/response.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,23 @@ import { reactCss } from '@/functions/react';
import { useAntdToken } from '@/hooks';
import type { Breakpoint, BreakpointMapParams, CSSObject, ResponsiveMap } from '@/types';
import { isReactCssResult } from '@/utils';
import { convertBreakpointToResponsive } from '@/utils/responsive';
import type { SerializedStyles } from '@emotion/react';
import { useMemo } from 'react';

export const useResponsiveMap = (): ResponsiveMap => {
export const useMediaQueryMap = (): ResponsiveMap => {
const token = useAntdToken();

const breakpoints: Record<Breakpoint, string> = {
xs: `@media (max-width: ${token.screenXSMax}px)`,
sm: `@media (max-width: ${token.screenSMMax}px)`,
md: `@media (max-width: ${token.screenMDMax}px)`,

lg: `@media (max-width: ${token.screenLGMax}px)`,
xl: `@media (max-width: ${token.screenXLMax}px)`,
xxl: `@media (min-width: ${token.screenXXLMin}px)`,
};

return useMemo(
() => ({
...breakpoints,
mobile: breakpoints.xs,
tablet: breakpoints.md,
laptop: breakpoints.lg,
desktop: breakpoints.xxl,
}),
[token],
);
return useMemo(() => convertBreakpointToResponsive(breakpoints), [token]);
};

/**
Expand Down
1 change: 1 addition & 0 deletions src/hooks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ export * from './useAntdStylish';
export * from './useAntdTheme';
export * from './useAntdToken';
export * from './useEmotion';
export * from './useResponsive';
export * from './useTheme';
export * from './useThemeMode';
10 changes: 10 additions & 0 deletions src/hooks/useResponsive.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ResponsiveKey } from '@/types';
import { convertBreakpointToResponsive } from '@/utils/responsive';
import { Grid } from 'antd';
import { useMemo } from 'react';

export const useResponsive = (): Partial<Record<ResponsiveKey, boolean>> => {
const breakpoints = Grid.useBreakpoint();

return useMemo(() => convertBreakpointToResponsive(breakpoints), [breakpoints]);
};
11 changes: 11 additions & 0 deletions src/utils/responsive.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Breakpoint } from '@/types';

export const convertBreakpointToResponsive = <T extends Partial<Record<Breakpoint, any>>>(
breakpoints: T,
): any => ({
...breakpoints,
mobile: breakpoints.xs,
tablet: breakpoints.md,
laptop: breakpoints.lg,
desktop: breakpoints.xxl,
});

0 comments on commit 7e4f632

Please sign in to comment.