refactor: export all hooks functions directly from main module

refactor: rename the modules to make sure tree-shaking works
This commit is contained in:
unix
2020-05-15 23:10:02 +08:00
parent d7344afd4e
commit db384acff7
46 changed files with 82 additions and 57 deletions

View File

@@ -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'

View File

@@ -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)')
})

View File

@@ -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[]

View File

@@ -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()

View File

@@ -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)

View File

@@ -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> = [
{

View File

@@ -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')

View 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', () => {

View File

@@ -0,0 +1,3 @@
import useBodyScroll from './use-body-scroll'
export default useBodyScroll

View File

@@ -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(

View File

@@ -0,0 +1,3 @@
import useClickAway from './use-click-away'
export default useClickAway

View File

@@ -1,4 +1,4 @@
import useClipboard from '../use-clipboard'
import { useClipboard } from 'components'
import { renderHook } from '@testing-library/react-hooks'
describe('UseClipboard', () => {

View File

@@ -0,0 +1,3 @@
import useClipboard from './use-clipboard'
export default useClipboard

View File

@@ -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', () => {

View File

@@ -0,0 +1,3 @@
import useCurrentState from './use-current-state'
export default useCurrentState

View File

@@ -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>

View File

@@ -0,0 +1,3 @@
import useMediaQuery from './use-media-query'
export default useMediaQuery

View File

@@ -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)

View 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,
}

View File

@@ -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,
}

View File

@@ -1,3 +1,3 @@
import useBodyScroll from '../utils-shared/use-body-scroll'
import useBodyScroll from '../utils-shared-deprecated/use-body-scroll'
export default useBodyScroll

View File

@@ -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

View File

@@ -1,3 +1,3 @@
import useClipboard from '../utils-shared/use-clipboard'
import useClipboard from '../utils-shared-deprecated/use-clipboard'
export default useClipboard

View File

@@ -1,3 +1,3 @@
import useCurrentState from '../utils-shared/use-current-state'
import useCurrentState from '../utils-shared-deprecated/use-current-state'
export default useCurrentState

View File

@@ -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

View File

@@ -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