mirror of
https://github.com/zhigang1992/react.git
synced 2026-02-01 17:18:41 +08:00
refactor: export all hooks functions directly from main module
refactor: rename the modules to make sure tree-shaking works
This commit is contained in:
@@ -1,16 +1,21 @@
|
||||
/// <reference types="styled-jsx" />
|
||||
|
||||
export * from './styles/themes'
|
||||
export { default as Utils } from './utils-shared/index'
|
||||
export { default as Utils } from './utils-shared-deprecated/index'
|
||||
export { default as useTheme } from './styles/use-theme'
|
||||
export { default as ZEITUIProvider } from './zeit-provider-deprecated'
|
||||
export { default as ZeitProvider } from './zeit-provider'
|
||||
export { default as CSSBaseline } from './css-baseline-deprecated'
|
||||
export { default as CssBaseline } from './css-baseline'
|
||||
export { default as useToasts } from './toast'
|
||||
export { default as useToasts } from './use-toasts'
|
||||
export { default as useInput } from './input/use-input'
|
||||
export { default as useModal } from './modal/use-modal'
|
||||
export { default as useTabs } from './tabs/use-tabs'
|
||||
export { default as useBodyScroll } from './use-body-scroll'
|
||||
export { default as useClickAway } from './use-click-away'
|
||||
export { default as useClipboard } from './use-clipboard'
|
||||
export { default as useCurrentState } from './use-current-state'
|
||||
export { default as useMediaQuery } from './use-media-query'
|
||||
export { default as Avatar } from './avatar'
|
||||
export { default as Text } from './text'
|
||||
export { default as Note } from './note'
|
||||
@@ -39,7 +44,7 @@ export { default as Radio } from './radio'
|
||||
export { default as Select } from './select'
|
||||
export { default as Tabs } from './tabs'
|
||||
export { default as Progress } from './progress'
|
||||
export { default as Tree } from './file-tree'
|
||||
export { default as Tree } from './tree'
|
||||
export { default as Badge } from './badge'
|
||||
export { default as AutoComplete } from './auto-complete'
|
||||
export { default as Collapse } from './collapse'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React from 'react'
|
||||
import ReactDom from 'react-dom/server'
|
||||
import { mount } from 'enzyme'
|
||||
import { Page, ZEITUIProvider } from 'components'
|
||||
import { Page, ZeitProvider } from 'components'
|
||||
|
||||
describe('Page', () => {
|
||||
it('should render correctly', () => {
|
||||
@@ -48,9 +48,9 @@ describe('Page', () => {
|
||||
|
||||
it('should disable dot style when in dark mode', () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider theme={{ type: 'dark' }}>
|
||||
<ZeitProvider theme={{ type: 'dark' }}>
|
||||
<Page dotBackdrop />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
expect(wrapper.html()).not.toContain('global(body)')
|
||||
})
|
||||
|
||||
@@ -5,7 +5,7 @@ import { SnippetTypes, CopyTypes } from '../utils/prop-types'
|
||||
import { getStyles } from './styles'
|
||||
import SnippetIcon from './snippet-icon'
|
||||
import useClipboard from '../utils/use-clipboard'
|
||||
import useToasts from '../toast/use-toast'
|
||||
import useToasts from '../use-toasts'
|
||||
|
||||
interface Props {
|
||||
text?: string | string[]
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from 'react'
|
||||
import { render, mount } from 'enzyme'
|
||||
import { deepMergeObject } from '../theme-provider/theme-provider'
|
||||
import DefaultThemes from '../themes/default'
|
||||
import { ZEITUIProvider, ZeitUIThemes, Text } from 'components'
|
||||
import { ZeitProvider, ZeitUIThemes, Text } from 'components'
|
||||
import { DeepPartial } from 'components/utils/types'
|
||||
|
||||
describe('ThemeProvider', () => {
|
||||
@@ -51,9 +51,9 @@ describe('ThemeProvider', () => {
|
||||
}
|
||||
}
|
||||
const wrapper = render(
|
||||
<ZEITUIProvider theme={customFunc}>
|
||||
<ZeitProvider theme={customFunc}>
|
||||
<Text type="success">hello</Text>
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
expect(wrapper).toMatchSnapshot()
|
||||
})
|
||||
@@ -62,9 +62,9 @@ describe('ThemeProvider', () => {
|
||||
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {})
|
||||
const customFunc = () => 0 as DeepPartial<ZeitUIThemes>
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider theme={customFunc}>
|
||||
<ZeitProvider theme={customFunc}>
|
||||
<p>test</p>
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
|
||||
expect(errorSpy).toHaveBeenCalled()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { mount, ReactWrapper } from 'enzyme'
|
||||
import { Button, Tooltip, ZEITUIProvider } from 'components'
|
||||
import { Button, Tooltip, ZeitProvider } from 'components'
|
||||
import { nativeEvent, updateWrapper } from 'tests/utils'
|
||||
import { act } from 'react-dom/test-utils'
|
||||
|
||||
@@ -15,9 +15,9 @@ const expectTooltipIsHidden = (wrapper: ReactWrapper) => {
|
||||
describe('Tooltip', () => {
|
||||
it('should render correctly', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider theme={{ type: 'dark' }}>
|
||||
<ZeitProvider theme={{ type: 'dark' }}>
|
||||
<Tooltip text={<p id="test">custom-content</p>}>some tips</Tooltip>
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
|
||||
expectTooltipIsHidden(wrapper)
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from 'react'
|
||||
import { mount } from 'enzyme'
|
||||
import { Tree } from 'components'
|
||||
import { nativeEvent } from 'tests/utils'
|
||||
import { FileTreeValue } from 'components/file-tree/tree'
|
||||
import { FileTreeValue } from 'components/tree/tree'
|
||||
|
||||
const mockFiles: Array<FileTreeValue> = [
|
||||
{
|
||||
@@ -3,7 +3,7 @@ import TreeFile from './tree-file'
|
||||
import TreeFolder from './tree-folder'
|
||||
import { TreeContext } from './tree-context'
|
||||
import { tuple } from '../utils/prop-types'
|
||||
import { sortChildren } from '../file-tree/tree-help'
|
||||
import { sortChildren } from './/tree-help'
|
||||
|
||||
const FileTreeValueType = tuple('directory', 'file')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React, { RefObject } from 'react'
|
||||
import useBodyScroll from '../use-body-scroll'
|
||||
import { useBodyScroll } from 'components'
|
||||
import { act, renderHook } from '@testing-library/react-hooks'
|
||||
|
||||
describe('UseBodyScroll', () => {
|
||||
3
components/use-body-scroll/index.ts
Normal file
3
components/use-body-scroll/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import useBodyScroll from './use-body-scroll'
|
||||
|
||||
export default useBodyScroll
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { renderHook } from '@testing-library/react-hooks'
|
||||
import useClickAway from '../use-click-away'
|
||||
import { useClickAway } from 'components'
|
||||
|
||||
const simulateNativeClick = (el: Element) => {
|
||||
el.dispatchEvent(
|
||||
3
components/use-click-away/index.ts
Normal file
3
components/use-click-away/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import useClickAway from './use-click-away'
|
||||
|
||||
export default useClickAway
|
||||
@@ -1,4 +1,4 @@
|
||||
import useClipboard from '../use-clipboard'
|
||||
import { useClipboard } from 'components'
|
||||
import { renderHook } from '@testing-library/react-hooks'
|
||||
|
||||
describe('UseClipboard', () => {
|
||||
3
components/use-clipboard/index.ts
Normal file
3
components/use-clipboard/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import useClipboard from './use-clipboard'
|
||||
|
||||
export default useClipboard
|
||||
@@ -1,6 +1,6 @@
|
||||
import React, { useEffect } from 'react'
|
||||
import { mount } from 'enzyme'
|
||||
import useCurrentState from '../use-current-state'
|
||||
import { useCurrentState } from 'components'
|
||||
import { renderHook, act } from '@testing-library/react-hooks'
|
||||
|
||||
describe('UseCurrentState', () => {
|
||||
3
components/use-current-state/index.ts
Normal file
3
components/use-current-state/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import useCurrentState from './use-current-state'
|
||||
|
||||
export default useCurrentState
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Utils } from 'components'
|
||||
import { useMediaQuery } from 'components'
|
||||
import { renderHook } from '@testing-library/react-hooks'
|
||||
// @ts-ignore
|
||||
import mediaQuery from 'css-mediaquery'
|
||||
const { useMediaQuery } = Utils
|
||||
|
||||
const mediaListMock = (width: number) => {
|
||||
;(window as any).listeners = [] as Array<Function>
|
||||
3
components/use-media-query/index.ts
Normal file
3
components/use-media-query/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import useMediaQuery from './use-media-query'
|
||||
|
||||
export default useMediaQuery
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { mount, ReactWrapper } from 'enzyme'
|
||||
import { useToasts, ZEITUIProvider } from 'components'
|
||||
import { useToasts, ZeitProvider } from 'components'
|
||||
import { nativeEvent, updateWrapper } from 'tests/utils'
|
||||
|
||||
const MockToast: React.FC<{}> = () => {
|
||||
@@ -41,9 +41,9 @@ const expectToastIsHidden = (wrapper: ReactWrapper) => {
|
||||
describe('UseToast', () => {
|
||||
it('should render correctly', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider>
|
||||
<ZeitProvider>
|
||||
<MockToast />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
|
||||
expectToastIsHidden(wrapper)
|
||||
@@ -54,9 +54,9 @@ describe('UseToast', () => {
|
||||
|
||||
it('should work with different types', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider>
|
||||
<ZeitProvider>
|
||||
<MockToast />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
|
||||
expectToastIsHidden(wrapper)
|
||||
@@ -68,9 +68,9 @@ describe('UseToast', () => {
|
||||
|
||||
it('should close toast', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider>
|
||||
<ZeitProvider>
|
||||
<MockToast />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
|
||||
expectToastIsHidden(wrapper)
|
||||
@@ -85,9 +85,9 @@ describe('UseToast', () => {
|
||||
|
||||
it('the removeal should be delayed when hover is triggerd', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider>
|
||||
<ZeitProvider>
|
||||
<MockToast />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
|
||||
expectToastIsHidden(wrapper)
|
||||
@@ -111,9 +111,9 @@ describe('UseToast', () => {
|
||||
|
||||
it('should render different actions', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider>
|
||||
<ZeitProvider>
|
||||
<MockToast />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
const actions = [
|
||||
{
|
||||
@@ -135,9 +135,9 @@ describe('UseToast', () => {
|
||||
|
||||
it('should close toast when action triggered', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider>
|
||||
<ZeitProvider>
|
||||
<MockToast />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
const actions = [
|
||||
{
|
||||
@@ -160,9 +160,9 @@ describe('UseToast', () => {
|
||||
|
||||
it('should work with multiple toasts', async () => {
|
||||
const wrapper = mount(
|
||||
<ZEITUIProvider>
|
||||
<ZeitProvider>
|
||||
<MockToast />
|
||||
</ZEITUIProvider>,
|
||||
</ZeitProvider>,
|
||||
)
|
||||
|
||||
expectToastIsHidden(wrapper)
|
||||
19
components/utils-shared-deprecated/index.ts
Normal file
19
components/utils-shared-deprecated/index.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import useBodyScroll from '../use-body-scroll'
|
||||
import useClipboard from '../use-clipboard'
|
||||
import useCurrentState from '../use-current-state'
|
||||
import useClickAway from '../use-click-away'
|
||||
import useMediaQuery from '../use-media-query'
|
||||
import useWarning from '../utils/use-warning'
|
||||
|
||||
useWarning(
|
||||
'Module "Utils" is deprecated. All hooks are now exported directly from the main module.',
|
||||
'Utils',
|
||||
)
|
||||
|
||||
export default {
|
||||
useBodyScroll,
|
||||
useClipboard,
|
||||
useCurrentState,
|
||||
useClickAway,
|
||||
useMediaQuery,
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
import { default as useBodyScroll } from './use-body-scroll'
|
||||
import { default as useClipboard } from './use-clipboard'
|
||||
import { default as useCurrentState } from './use-current-state'
|
||||
import { default as useClickAway } from './use-click-away'
|
||||
import { default as useMediaQuery } from './use-media-query'
|
||||
|
||||
export default {
|
||||
useBodyScroll,
|
||||
useClipboard,
|
||||
useCurrentState,
|
||||
useClickAway,
|
||||
useMediaQuery,
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
import useBodyScroll from '../utils-shared/use-body-scroll'
|
||||
import useBodyScroll from '../utils-shared-deprecated/use-body-scroll'
|
||||
|
||||
export default useBodyScroll
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { default as useClickAway } from '../utils-shared/use-click-away'
|
||||
import { default as useClickAway } from '../utils-shared-deprecated/use-click-away'
|
||||
|
||||
export default useClickAway
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import useClipboard from '../utils-shared/use-clipboard'
|
||||
import useClipboard from '../utils-shared-deprecated/use-clipboard'
|
||||
|
||||
export default useClipboard
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import useCurrentState from '../utils-shared/use-current-state'
|
||||
import useCurrentState from '../utils-shared-deprecated/use-current-state'
|
||||
|
||||
export default useCurrentState
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react'
|
||||
import { ToastWithID } from '../toast/toast-container'
|
||||
import { ToastWithID } from '../use-toasts/toast-container'
|
||||
|
||||
export type UpdateToastsFunction<T> = (fn: (toasts: Array<T>) => Array<T>) => any
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
import ThemeProvider from '../styles/theme-provider'
|
||||
import { ThemeParam } from '../styles/theme-provider/theme-provider'
|
||||
import useCurrentState from '../utils/use-current-state'
|
||||
import ToastContainer, { ToastWithID } from '../toast/toast-container'
|
||||
import ToastContainer, { ToastWithID } from '../use-toasts/toast-container'
|
||||
|
||||
export interface Props {
|
||||
theme?: ThemeParam
|
||||
|
||||
Reference in New Issue
Block a user