diff --git a/.changeset/little-rabbits-change.md b/.changeset/little-rabbits-change.md index bae3e287c..b52375da6 100644 --- a/.changeset/little-rabbits-change.md +++ b/.changeset/little-rabbits-change.md @@ -1,12 +1,12 @@ --- -"@hi-ui/core": patch -"@hi-ui/container-context": patch -"@hi-ui/drawer": patch -"@hi-ui/hiui": patch -"@hi-ui/loading": patch -"@hi-ui/modal": patch -"@hi-ui/preview": patch -"@hi-ui/provider": patch +"@hi-ui/core": minor +"@hi-ui/container-context": minor +"@hi-ui/drawer": minor +"@hi-ui/hiui": minor +"@hi-ui/loading": minor +"@hi-ui/modal": minor +"@hi-ui/preview": minor +"@hi-ui/provider": minor --- feat(container-context): add container package (#3060) diff --git a/packages/core/core/package.json b/packages/core/core/package.json index 5cb6117c0..7db5b834e 100644 --- a/packages/core/core/package.json +++ b/packages/core/core/package.json @@ -46,6 +46,6 @@ "dependencies": { "@hi-ui/core-css": "^4.1.5", "@hi-ui/locale-context": "^4.0.8", - "@hi-ui/container-context": "^4.0.0" + "@hi-ui/portal-context": "^4.0.0" } } diff --git a/packages/core/core/src/index.ts b/packages/core/core/src/index.ts index 2386c22bf..62fb093b8 100644 --- a/packages/core/core/src/index.ts +++ b/packages/core/core/src/index.ts @@ -74,5 +74,5 @@ export type HiBaseSizeEnum = ValueOf export { useLocaleContext, LocaleProvider } from '@hi-ui/locale-context' export type { UseLocaleContext, LocaleProviderProps } from '@hi-ui/locale-context' -export { useContainerContext, ContainerProvider } from '@hi-ui/container-context' -export type { UseContainerContext, ContainerProviderProps } from '@hi-ui/container-context' +export { usePortalContext, PortalProvider } from '@hi-ui/portal-context' +export type { UsePortalContext, PortalProviderProps } from '@hi-ui/portal-context' diff --git a/packages/ui/container-context/CHANGELOG.md b/packages/ui/container-context/CHANGELOG.md deleted file mode 100644 index 66989f062..000000000 --- a/packages/ui/container-context/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# @hi-ui/locale-context - -## 4.0.0 - -### Patch Changes - -- [#2393](https://github.com/XiaoMi/hiui/pull/2393) [`a7d47168b`](https://github.com/XiaoMi/hiui/commit/a7d47168b519cacfd7b34edf6ba239c5b0b92284) Thanks [@zyprepare](https://github.com/zyprepare)! - 优化多语言获取文案时的空值判断 diff --git a/packages/ui/container-context/README.md b/packages/ui/container-context/README.md deleted file mode 100644 index 3e227121e..000000000 --- a/packages/ui/container-context/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# `@hi-ui/container-context` - -> TODO: description - -## Usage - -``` -const ContainerContext = require('@hi-ui/container-context'); - -// TODO: DEMONSTRATE API -``` diff --git a/packages/ui/container-context/__tests__/locale-context.test.js b/packages/ui/container-context/__tests__/locale-context.test.js deleted file mode 100644 index 1280afc6d..000000000 --- a/packages/ui/container-context/__tests__/locale-context.test.js +++ /dev/null @@ -1,5 +0,0 @@ -const ContainerContext = require('../src') - -describe('@hi-ui/container-context', () => { - it('needs tests', () => {}) -}) diff --git a/packages/ui/container-context/src/ContainerContext.tsx b/packages/ui/container-context/src/ContainerContext.tsx deleted file mode 100644 index 6d74605f8..000000000 --- a/packages/ui/container-context/src/ContainerContext.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createContext, useContext } from 'react' - -export const ContainerContext = createContext(null) - -export const useContainerContext = () => { - const context = useContext(ContainerContext) - - return context -} - -export type UseContainerContext = HTMLElement | null | undefined diff --git a/packages/ui/container-context/src/ContainerProvider.tsx b/packages/ui/container-context/src/ContainerProvider.tsx deleted file mode 100644 index 2b6cc3edd..000000000 --- a/packages/ui/container-context/src/ContainerProvider.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react' -import { ContainerContext } from './ContainerContext' - -export const ContainerProvider: React.FC = ({ children, container }) => { - return {children} -} - -export interface ContainerProviderProps { - /** - * 指定 portal 的容器 - */ - container?: HTMLElement | null -} diff --git a/packages/ui/container-context/src/index.ts b/packages/ui/container-context/src/index.ts deleted file mode 100644 index 34ded8b11..000000000 --- a/packages/ui/container-context/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './ContainerContext' -export * from './ContainerProvider' - -export { ContainerProvider as default } from './ContainerProvider' diff --git a/packages/ui/container-context/stories/basic.stories.tsx b/packages/ui/container-context/stories/basic.stories.tsx deleted file mode 100644 index 28e1f4795..000000000 --- a/packages/ui/container-context/stories/basic.stories.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React, { useContext } from 'react' -import { ContainerContext } from '../src' - -/** - * @title 基础用法 - */ -export const Basic = () => { - const container = useContext(ContainerContext) - - return ( - <> -

Basic

-
{container}
- - ) -} diff --git a/packages/ui/drawer/src/Drawer.tsx b/packages/ui/drawer/src/Drawer.tsx index 067ad1ff9..0e9178545 100644 --- a/packages/ui/drawer/src/Drawer.tsx +++ b/packages/ui/drawer/src/Drawer.tsx @@ -1,7 +1,7 @@ import React, { forwardRef, useCallback, useEffect } from 'react' import { cx, getPrefixCls, getPrefixStyleVar } from '@hi-ui/classname' import { __DEV__ } from '@hi-ui/env' -import { HiBaseHTMLProps, useContainerContext } from '@hi-ui/core' +import { HiBaseHTMLProps, usePortalContext } from '@hi-ui/core' import { CSSTransition } from 'react-transition-group' import { Portal } from '@hi-ui/portal' import { useModal, UseModalProps } from '@hi-ui/modal' @@ -51,7 +51,7 @@ export const Drawer = forwardRef( ) => { const [transitionVisible, transitionVisibleAction] = useToggle(false) const [transitionExited, transitionExitedAction] = useToggle(true) - const globalContainer = useContainerContext() + const globalContainer = usePortalContext()?.container const container = containerProp ?? globalContainer const { rootProps, getModalProps, getModalWrapperProps } = useModal({ diff --git a/packages/ui/hiui/src/index.ts b/packages/ui/hiui/src/index.ts index 7a838dc8b..85064388b 100644 --- a/packages/ui/hiui/src/index.ts +++ b/packages/ui/hiui/src/index.ts @@ -96,11 +96,11 @@ export { default as LocaleContext } from '@hi-ui/locale-context' /** * @deprecated Please use the `Provider` instead of it. */ -export * from '@hi-ui/container-context' +export * from '@hi-ui/portal-context' /** * @deprecated Please use the `Provider` instead of it. */ -export { default as ContainerContext } from '@hi-ui/container-context' +export { default as PortalContext } from '@hi-ui/portal-context' export * from '@hi-ui/menu' export { default as Menu } from '@hi-ui/menu' diff --git a/packages/ui/loading/src/Loading.tsx b/packages/ui/loading/src/Loading.tsx index 866ab3ee3..e71c49e11 100644 --- a/packages/ui/loading/src/Loading.tsx +++ b/packages/ui/loading/src/Loading.tsx @@ -3,7 +3,7 @@ import { CSSTransition } from 'react-transition-group' import { cx, getPrefixCls } from '@hi-ui/classname' import { __DEV__ } from '@hi-ui/env' import { Portal } from '@hi-ui/portal' -import { HiBaseHTMLProps, HiBaseSizeEnum, useContainerContext } from '@hi-ui/core' +import { HiBaseHTMLProps, HiBaseSizeEnum, usePortalContext } from '@hi-ui/core' import { useLatestCallback } from '@hi-ui/use-latest' import Spinner from '@hi-ui/spinner' import { useLoading } from './use-loading' @@ -38,7 +38,7 @@ export const Loading = forwardRef( ) => { const { internalVisible, setInternalVisible } = useLoading({ visible, delay }) - const globalContainer = useContainerContext() + const globalContainer = usePortalContext()?.container const container = containerProp ?? globalContainer useImperativeHandle(innerRef, () => ({ diff --git a/packages/ui/modal/src/Modal.tsx b/packages/ui/modal/src/Modal.tsx index 7ce43fddb..f3115b0e0 100644 --- a/packages/ui/modal/src/Modal.tsx +++ b/packages/ui/modal/src/Modal.tsx @@ -1,6 +1,6 @@ import React, { useEffect, forwardRef, useCallback, useImperativeHandle } from 'react' import { cx, getPrefixCls } from '@hi-ui/classname' -import { HiBaseHTMLProps, HiBaseSizeEnum, useLocaleContext, useContainerContext } from '@hi-ui/core' +import { HiBaseHTMLProps, HiBaseSizeEnum, useLocaleContext, usePortalContext } from '@hi-ui/core' import { __DEV__ } from '@hi-ui/env' import { CSSTransition } from 'react-transition-group' import { Portal } from '@hi-ui/portal' @@ -74,7 +74,7 @@ export const Modal = forwardRef( ) => { const i18n = useLocaleContext() - const globalContainer = useContainerContext() + const globalContainer = usePortalContext()?.container const container = containerProp ?? globalContainer const cancelText = isUndef(cancelTextProp) ? i18n.get('modal.cancelText') : cancelTextProp diff --git a/packages/ui/portal-context/README.md b/packages/ui/portal-context/README.md new file mode 100644 index 000000000..4dc431622 --- /dev/null +++ b/packages/ui/portal-context/README.md @@ -0,0 +1,11 @@ +# `@hi-ui/portal-context` + +> TODO: description + +## Usage + +``` +const PortalContext = require('@hi-ui/portal-context'); + +// TODO: DEMONSTRATE API +``` diff --git a/packages/ui/portal-context/__tests__/portal-context.test.js b/packages/ui/portal-context/__tests__/portal-context.test.js new file mode 100644 index 000000000..3f29b2da5 --- /dev/null +++ b/packages/ui/portal-context/__tests__/portal-context.test.js @@ -0,0 +1,5 @@ +const PortalContext = require('../src') + +describe('@hi-ui/portal-context', () => { + it('needs tests', () => {}) +}) diff --git a/packages/ui/container-context/hi-docs.config.mdx b/packages/ui/portal-context/hi-docs.config.mdx similarity index 81% rename from packages/ui/container-context/hi-docs.config.mdx rename to packages/ui/portal-context/hi-docs.config.mdx index dfe717b4c..9eb1b9a64 100644 --- a/packages/ui/container-context/hi-docs.config.mdx +++ b/packages/ui/portal-context/hi-docs.config.mdx @@ -1,4 +1,4 @@ -# ContainerContext 语言上下文 +# PortalContext 上下文 容器设置上下文。 diff --git a/packages/ui/container-context/jest.config.js b/packages/ui/portal-context/jest.config.js similarity index 100% rename from packages/ui/container-context/jest.config.js rename to packages/ui/portal-context/jest.config.js diff --git a/packages/ui/container-context/package.json b/packages/ui/portal-context/package.json similarity index 97% rename from packages/ui/container-context/package.json rename to packages/ui/portal-context/package.json index e0b3e0802..031673f4a 100644 --- a/packages/ui/container-context/package.json +++ b/packages/ui/portal-context/package.json @@ -1,5 +1,5 @@ { - "name": "@hi-ui/container-context", + "name": "@hi-ui/portal-context", "version": "4.0.0", "description": "A sub-package for @hi-ui/hiui.", "keywords": [], diff --git a/packages/ui/portal-context/src/PortalContext.tsx b/packages/ui/portal-context/src/PortalContext.tsx new file mode 100644 index 000000000..cc1ad4650 --- /dev/null +++ b/packages/ui/portal-context/src/PortalContext.tsx @@ -0,0 +1,11 @@ +import { createContext, useContext } from 'react' + +export const PortalContext = createContext(null) + +export const usePortalContext = () => { + const context = useContext(PortalContext) + + return context +} + +export type UsePortalContext = { container?: HTMLElement | null | undefined } | null | undefined diff --git a/packages/ui/portal-context/src/PortalProvider.tsx b/packages/ui/portal-context/src/PortalProvider.tsx new file mode 100644 index 000000000..b07ac6fa5 --- /dev/null +++ b/packages/ui/portal-context/src/PortalProvider.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import { PortalContext, UsePortalContext } from './PortalContext' +import { __DEV__ } from '@hi-ui/env' + +export const PortalProvider: React.FC = ({ children, portal }) => { + return {children} +} + +export interface PortalProviderProps { + /** + * 指定 portal 的容器 + */ + portal?: UsePortalContext +} + +if (__DEV__) { + PortalProvider.displayName = 'PortalProvider' +} diff --git a/packages/ui/portal-context/src/index.ts b/packages/ui/portal-context/src/index.ts new file mode 100644 index 000000000..b8bb08a2c --- /dev/null +++ b/packages/ui/portal-context/src/index.ts @@ -0,0 +1,4 @@ +export * from './PortalContext' +export * from './PortalProvider' + +export { PortalProvider as default } from './PortalProvider' diff --git a/packages/ui/portal-context/stories/basic.stories.tsx b/packages/ui/portal-context/stories/basic.stories.tsx new file mode 100644 index 000000000..798c4a5b4 --- /dev/null +++ b/packages/ui/portal-context/stories/basic.stories.tsx @@ -0,0 +1,16 @@ +import React, { useContext } from 'react' +import { PortalContext } from '../src' + +/** + * @title 基础用法 + */ +export const Basic = () => { + useContext(PortalContext) + + return ( + <> +

Basic

+
+ + ) +} diff --git a/packages/ui/container-context/stories/index.stories.tsx b/packages/ui/portal-context/stories/index.stories.tsx similarity index 71% rename from packages/ui/container-context/stories/index.stories.tsx rename to packages/ui/portal-context/stories/index.stories.tsx index 3e14b4e19..a856fc7e8 100644 --- a/packages/ui/container-context/stories/index.stories.tsx +++ b/packages/ui/portal-context/stories/index.stories.tsx @@ -3,6 +3,6 @@ import React from 'react' export * from './basic.stories' export default { - title: 'Private(暂不对外)/ContainerContext', + title: 'Private(暂不对外)/PortalContext', decorators: [(story: Function) =>
{story()}
], } diff --git a/packages/ui/container-context/tsconfig.json b/packages/ui/portal-context/tsconfig.json similarity index 100% rename from packages/ui/container-context/tsconfig.json rename to packages/ui/portal-context/tsconfig.json diff --git a/packages/ui/preview/src/Preview.tsx b/packages/ui/preview/src/Preview.tsx index 561551fc5..608368fd5 100644 --- a/packages/ui/preview/src/Preview.tsx +++ b/packages/ui/preview/src/Preview.tsx @@ -5,7 +5,7 @@ import { Portal } from '@hi-ui/portal' import { Watermark, WatermarkProps } from '@hi-ui/watermark' import { CSSTransition } from 'react-transition-group' import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state' -import { HiBaseHTMLProps, useContainerContext } from '@hi-ui/core' +import { HiBaseHTMLProps, usePortalContext } from '@hi-ui/core' import { useLatestCallback } from '@hi-ui/use-latest' import { ZoomInOutlined, @@ -53,7 +53,7 @@ export const Preview = forwardRef( ) => { const cls = cx(prefixCls, className) - const globalContainer = useContainerContext() + const globalContainer = usePortalContext()?.container const container = containerProp ?? globalContainer const [active, setActive] = useUncontrolledState(defaultCurrent || 0, current, onPreviewChange) diff --git a/packages/ui/provider/src/Provider.tsx b/packages/ui/provider/src/Provider.tsx index f76d730c6..fdb1b4960 100644 --- a/packages/ui/provider/src/Provider.tsx +++ b/packages/ui/provider/src/Provider.tsx @@ -3,8 +3,8 @@ import { __DEV__ } from '@hi-ui/env' import { LocaleProvider, LocaleProviderProps, - ContainerProvider, - ContainerProviderProps, + PortalProvider, + PortalProviderProps, } from '@hi-ui/core' import { DesignSystemAccentColorEnum, DesignSystemProps } from './types' import { createSystem, extendsTheme } from './theme' @@ -18,7 +18,7 @@ export const Provider: React.FC & { extends: ProviderExtendsFunc languages, accentColor, theme, - container, + portal, }) => { /** * global css var config @@ -37,17 +37,17 @@ export const Provider: React.FC & { extends: ProviderExtendsFunc }, [accentColor, theme]) return ( - + {children} - + ) } export interface ProviderProps extends LocaleProviderProps, - ContainerProviderProps, + PortalProviderProps, ThemeProviderProps {} interface ThemeProviderProps {