diff --git a/.editorconfig b/.editorconfig index 604c94ef..4058f08c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,9 +1,17 @@ -# top-most EditorConfig file +# http://editorconfig.org root = true -# Unix-style newlines with a newline ending every file -[*.{js,css}] -end_of_line = lf -insert_final_newline = true +[*] indent_style = space indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab + diff --git a/.gitignore b/.gitignore index e29203e5..216e8631 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,10 @@ es coverage yarn.lock package-lock.json -.vscode \ No newline at end of file +.vscode + +# umi +.umi +.umi-production +.umi-test +.env.local \ No newline at end of file diff --git a/.umirc.ts b/.umirc.ts new file mode 100644 index 00000000..6e9d67b6 --- /dev/null +++ b/.umirc.ts @@ -0,0 +1,19 @@ +// more config: https://d.umijs.org/config +import { defineConfig } from 'dumi'; + +export default defineConfig({ + title: 'rc-menu', + favicon: + 'https://avatars0.githubusercontent.com/u/9441414?s=200&v=4', + logo: + 'https://avatars0.githubusercontent.com/u/9441414?s=200&v=4', + outputPath: '.doc', + exportStatic: {}, + styles: [ + ` + .markdown table { + width: auto !important; + } + `, + ] +}); \ No newline at end of file diff --git a/HISTORY.md b/CHANGELOG.md similarity index 99% rename from HISTORY.md rename to CHANGELOG.md index 72cea571..cd0deca7 100644 --- a/HISTORY.md +++ b/CHANGELOG.md @@ -1,5 +1,4 @@ -# History ----- +# Changelog ## 8.1.0 / 2020-05-08 diff --git a/README.md b/README.md index 2bf82340..d9b09cb0 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,7 @@ React Menu Component. port from https://github.com/kissyteam/menu -[![NPM version][npm-image]][npm-url] -[![build status][github-actions-image]][github-actions-url] -[![Test coverage][coveralls-image]][coveralls-url] -[![Dependencies][david-image]][david-url] -[![DevDependencies][david-dev-image]][david-dev-url] -[![npm download][download-image]][download-url] -[![bundle size][bundlephobia-image]][bundlephobia-url] +[![NPM version][npm-image]][npm-url] [![dumi](https://img.shields.io/badge/docs%20by-dumi-blue?style=flat-square)](https://github.com/umijs/dumi) [![build status][github-actions-image]][github-actions-url] [![Test coverage][coveralls-image]][coveralls-url] [![Dependencies][david-image]][david-url] [![DevDependencies][david-dev-image]][david-dev-url] [![npm download][download-image]][download-url] [![bundle size][bundlephobia-image]][bundlephobia-url] [npm-image]: http://img.shields.io/npm/v/rc-menu.svg?style=flat-square [npm-url]: http://npmjs.org/package/rc-menu diff --git a/docs/changelog.md b/docs/changelog.md new file mode 100644 index 00000000..817bd8d2 --- /dev/null +++ b/docs/changelog.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/demo/antd-switch.md b/docs/demo/antd-switch.md new file mode 100644 index 00000000..2299b8d7 --- /dev/null +++ b/docs/demo/antd-switch.md @@ -0,0 +1,3 @@ +## antd-switch + + \ No newline at end of file diff --git a/docs/demo/antd.md b/docs/demo/antd.md new file mode 100644 index 00000000..3812591d --- /dev/null +++ b/docs/demo/antd.md @@ -0,0 +1,3 @@ +## antd + + \ No newline at end of file diff --git a/docs/demo/custom-icon.md b/docs/demo/custom-icon.md new file mode 100644 index 00000000..88105c2d --- /dev/null +++ b/docs/demo/custom-icon.md @@ -0,0 +1,3 @@ +## custom-icon + + \ No newline at end of file diff --git a/docs/demo/fragment.md b/docs/demo/fragment.md new file mode 100644 index 00000000..8cdc6e6b --- /dev/null +++ b/docs/demo/fragment.md @@ -0,0 +1,3 @@ +## fragment + + \ No newline at end of file diff --git a/docs/demo/inlineCollapsed.md b/docs/demo/inlineCollapsed.md new file mode 100644 index 00000000..be43f340 --- /dev/null +++ b/docs/demo/inlineCollapsed.md @@ -0,0 +1,3 @@ +## inlineCollapsed + + \ No newline at end of file diff --git a/docs/demo/keyPath.md b/docs/demo/keyPath.md new file mode 100644 index 00000000..f1fff1eb --- /dev/null +++ b/docs/demo/keyPath.md @@ -0,0 +1,3 @@ +## keyPath + + \ No newline at end of file diff --git a/docs/demo/menuItemGroup.md b/docs/demo/menuItemGroup.md new file mode 100644 index 00000000..bf549646 --- /dev/null +++ b/docs/demo/menuItemGroup.md @@ -0,0 +1,3 @@ +## menuItemGroup + + \ No newline at end of file diff --git a/docs/demo/multiple.md b/docs/demo/multiple.md new file mode 100644 index 00000000..95b3855f --- /dev/null +++ b/docs/demo/multiple.md @@ -0,0 +1,3 @@ +## multiple + + \ No newline at end of file diff --git a/docs/demo/openKeys.md b/docs/demo/openKeys.md new file mode 100644 index 00000000..f78bf6b9 --- /dev/null +++ b/docs/demo/openKeys.md @@ -0,0 +1,3 @@ +## openKeys + + \ No newline at end of file diff --git a/docs/demo/rtl-antd.md b/docs/demo/rtl-antd.md new file mode 100644 index 00000000..7dd19484 --- /dev/null +++ b/docs/demo/rtl-antd.md @@ -0,0 +1,3 @@ +## rtl-antd + + \ No newline at end of file diff --git a/docs/demo/scrollable.md b/docs/demo/scrollable.md new file mode 100644 index 00000000..6c31bfdf --- /dev/null +++ b/docs/demo/scrollable.md @@ -0,0 +1,3 @@ +## scrollable + + \ No newline at end of file diff --git a/docs/demo/selectedKeys.md b/docs/demo/selectedKeys.md new file mode 100644 index 00000000..965c5d1c --- /dev/null +++ b/docs/demo/selectedKeys.md @@ -0,0 +1,3 @@ +## selectedKeys + + \ No newline at end of file diff --git a/docs/demo/single.md b/docs/demo/single.md new file mode 100644 index 00000000..13ff200e --- /dev/null +++ b/docs/demo/single.md @@ -0,0 +1,3 @@ +## single + + \ No newline at end of file diff --git a/examples/antd-switch.js b/docs/examples/antd-switch.tsx similarity index 96% rename from examples/antd-switch.js rename to docs/examples/antd-switch.tsx index 53e1d3fb..fdbcc534 100644 --- a/examples/antd-switch.js +++ b/docs/examples/antd-switch.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { CommonMenu, inlineMotion } from './antd'; -import '../assets/index.less'; +import '../../assets/index.less'; const Demo = () => { const [inline, setInline] = React.useState(false); diff --git a/examples/antd.js b/docs/examples/antd.tsx similarity index 97% rename from examples/antd.js rename to docs/examples/antd.tsx index e0e3e949..b48e8803 100644 --- a/examples/antd.js +++ b/docs/examples/antd.tsx @@ -1,8 +1,8 @@ /* eslint-disable no-console, react/require-default-props, no-param-reassign */ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem, Divider } from '../src'; -import '../assets/index.less'; +import Menu, { SubMenu, Item as MenuItem, Divider } from 'rc-menu'; +import '../../assets/index.less'; function handleClick(info) { console.log(`clicked ${info.key}`); diff --git a/examples/custom-icon.js b/docs/examples/custom-icon.tsx similarity index 97% rename from examples/custom-icon.js rename to docs/examples/custom-icon.tsx index 825470fb..0ca18631 100644 --- a/examples/custom-icon.js +++ b/docs/examples/custom-icon.tsx @@ -1,7 +1,7 @@ /* eslint-disable no-console, no-param-reassign */ import * as React from 'react'; -import Menu, { SubMenu, Item as MenuItem, Divider } from '../src'; -import '../assets/index.less'; +import Menu, { SubMenu, Item as MenuItem, Divider } from 'rc-menu'; +import '../../assets/index.less'; const getSvgIcon = (style = {}, text) => { if (text) { diff --git a/examples/fragment.js b/docs/examples/fragment.tsx similarity index 89% rename from examples/fragment.js rename to docs/examples/fragment.tsx index 18feb216..8dc52457 100644 --- a/examples/fragment.js +++ b/docs/examples/fragment.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem, Divider } from '../src'; -import '../assets/index.less'; +import Menu, { SubMenu, Item as MenuItem, Divider } from 'rc-menu'; +import '../../assets/index.less'; export default () => ( diff --git a/examples/inlineCollapsed.less b/docs/examples/inlineCollapsed.less similarity index 100% rename from examples/inlineCollapsed.less rename to docs/examples/inlineCollapsed.less diff --git a/examples/inlineCollapsed.js b/docs/examples/inlineCollapsed.tsx similarity index 94% rename from examples/inlineCollapsed.js rename to docs/examples/inlineCollapsed.tsx index 8ef52eba..8a893d26 100644 --- a/examples/inlineCollapsed.js +++ b/docs/examples/inlineCollapsed.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import Menu, { SubMenu, Item } from '../src'; +import Menu, { SubMenu, Item } from 'rc-menu'; import './inlineCollapsed.less'; const App = () => { diff --git a/examples/keyPath.js b/docs/examples/keyPath.tsx similarity index 91% rename from examples/keyPath.js rename to docs/examples/keyPath.tsx index 6e943fc8..30a5542e 100644 --- a/examples/keyPath.js +++ b/docs/examples/keyPath.tsx @@ -1,9 +1,9 @@ /* eslint no-console:0 */ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem } from '../src'; +import Menu, { SubMenu, Item as MenuItem } from 'rc-menu'; -import '../assets/index.less'; +import '../../assets/index.less'; class Test extends React.Component { onClick = info => { diff --git a/examples/menuItemGroup.js b/docs/examples/menuItemGroup.tsx similarity index 91% rename from examples/menuItemGroup.js rename to docs/examples/menuItemGroup.tsx index d2952929..88eb4cf0 100644 --- a/examples/menuItemGroup.js +++ b/docs/examples/menuItemGroup.tsx @@ -1,9 +1,9 @@ /* eslint no-console:0 */ import React from 'react'; -import Menu, { Item as MenuItem, ItemGroup as MenuItemGroup } from '../src'; +import Menu, { Item as MenuItem, ItemGroup as MenuItemGroup } from 'rc-menu'; -import '../assets/index.less'; +import '../../assets/index.less'; export default () => (
diff --git a/examples/multiple.js b/docs/examples/multiple.tsx similarity index 94% rename from examples/multiple.js rename to docs/examples/multiple.tsx index 3964c2b4..9b9f5057 100644 --- a/examples/multiple.js +++ b/docs/examples/multiple.tsx @@ -1,9 +1,9 @@ /* eslint no-console:0 */ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem, Divider } from '../src'; +import Menu, { SubMenu, Item as MenuItem, Divider } from 'rc-menu'; -import '../assets/index.less'; +import '../../assets/index.less'; function handleSelect(info) { console.log('selected ', info); diff --git a/examples/openKeys.js b/docs/examples/openKeys.tsx similarity index 91% rename from examples/openKeys.js rename to docs/examples/openKeys.tsx index 19853836..f83ec15d 100644 --- a/examples/openKeys.js +++ b/docs/examples/openKeys.tsx @@ -1,9 +1,9 @@ /* eslint no-console:0 */ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem } from '../src'; +import Menu, { SubMenu, Item as MenuItem } from 'rc-menu'; -import '../assets/index.less'; +import '../../assets/index.less'; class Test extends React.Component { state = { diff --git a/examples/rtl-antd.js b/docs/examples/rtl-antd.tsx similarity index 98% rename from examples/rtl-antd.js rename to docs/examples/rtl-antd.tsx index 63530b73..6b345570 100644 --- a/examples/rtl-antd.js +++ b/docs/examples/rtl-antd.tsx @@ -1,8 +1,8 @@ /* eslint-disable no-console, react/require-default-props, no-param-reassign */ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem, Divider } from '../src'; -import '../assets/index.less'; +import Menu, { SubMenu, Item as MenuItem, Divider } from 'rc-menu'; +import '../../assets/index.less'; function handleClick(info) { console.log(`clicked ${info.key}`); diff --git a/examples/scrollable.js b/docs/examples/scrollable.tsx similarity index 81% rename from examples/scrollable.js rename to docs/examples/scrollable.tsx index 1cedb508..a7ee7b67 100644 --- a/examples/scrollable.js +++ b/docs/examples/scrollable.tsx @@ -1,9 +1,9 @@ /* eslint no-console:0 */ import React from 'react'; -import Menu, { Item as MenuItem } from '../src'; +import Menu, { Item as MenuItem } from 'rc-menu'; -import '../assets/index.less'; +import '../../assets/index.less'; const children = []; for (let i = 0; i < 20; i += 1) { diff --git a/examples/selectedKeys.js b/docs/examples/selectedKeys.tsx similarity index 97% rename from examples/selectedKeys.js rename to docs/examples/selectedKeys.tsx index 3d228f9a..4ba02ef3 100644 --- a/examples/selectedKeys.js +++ b/docs/examples/selectedKeys.tsx @@ -1,9 +1,9 @@ /* eslint no-console:0 */ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem } from '../src'; +import Menu, { SubMenu, Item as MenuItem } from 'rc-menu'; -import '../assets/index.less'; +import '../../assets/index.less'; class Test extends React.Component { state = { diff --git a/examples/single.js b/docs/examples/single.tsx similarity index 94% rename from examples/single.js rename to docs/examples/single.tsx index 00927418..ee11d9c4 100644 --- a/examples/single.js +++ b/docs/examples/single.tsx @@ -1,8 +1,8 @@ /* eslint no-console:0 */ import React from 'react'; -import Menu, { SubMenu, Item as MenuItem, Divider } from '../src'; -import '../assets/index.less'; +import Menu, { SubMenu, Item as MenuItem, Divider } from 'rc-menu'; +import '../../assets/index.less'; export default () => { const [destroy, setDestroy] = React.useState(false); diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..1cae2227 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,5 @@ +--- +title: rc-menu +--- + + diff --git a/now.json b/now.json index d73df549..2f8b73fd 100644 --- a/now.json +++ b/now.json @@ -7,5 +7,8 @@ "use": "@now/static-build", "config": { "distDir": ".doc" } } + ], + "routes": [ + { "src": "/(.*)", "dest": "/dist/$1" } ] } diff --git a/package.json b/package.json index 827d03eb..2f2341db 100644 --- a/package.json +++ b/package.json @@ -31,11 +31,12 @@ }, "license": "MIT", "scripts": { - "start": "cross-env NODE_ENV=development father doc dev --storybook", - "build": "father doc build --storybook", + "start": "dumi dev", + "docs:build": "dumi build", + "docs:deploy": "gh-pages -d .doc", "compile": "father build && lessc assets/index.less assets/index.css", "prepublishOnly": "npm run compile && np --yolo --no-publish", - "lint": "eslint src/ examples/ --ext .tsx,.ts,.jsx,.js", + "lint": "eslint src/ --ext .tsx,.ts,.jsx,.js", "test": "father test", "coverage": "father test --coverage", "now-build": "npm run build" @@ -56,16 +57,19 @@ "@types/react-dom": "^16.8.4", "@types/warning": "^3.0.0", "cross-env": "^7.0.0", + "dumi": "^1.1.0", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.0.2", "enzyme-to-json": "^3.4.0", "eslint": "^7.0.0", "father": "^2.22.0", + "father-build": "^1.18.6", + "gh-pages": "^3.1.0", "less": "^3.10.3", "np": "^6.0.0", "react": "^16.9.0", "react-dom": "^16.9.0", - "typescript": "^4.0.2" + "typescript": "^4.0.5" }, "peerDependencies": { "react": ">=16.9.0", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..80235546 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "esnext", + "moduleResolution": "node", + "baseUrl": "./", + "jsx": "preserve", + "declaration": true, + "skipLibCheck": true, + "esModuleInterop": true, + "paths": { + "@/*": ["src/*"], + "@@/*": ["src/.umi/*"], + "rc-menu": ["src/index.tsx"] + } + } +} diff --git a/type.d.ts b/type.d.ts new file mode 100644 index 00000000..a94e62f7 --- /dev/null +++ b/type.d.ts @@ -0,0 +1,3 @@ +declare module '*.css'; + +declare module '*.less'; \ No newline at end of file