diff --git a/packages/ui/back-top/.eslintrc.js b/packages/ui/back-top/.eslintrc.js new file mode 100644 index 0000000000000000000000000000000000000000..5928ca1d6479ff7d0abd9fdec53a30df884f15f2 --- /dev/null +++ b/packages/ui/back-top/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: require.resolve('@reskript/config-lint/config/eslint'), + rules: { + 'react/jsx-uses-react': 'error', + }, + root: true, +}; diff --git a/packages/ui/back-top/.storybook/main.js b/packages/ui/back-top/.storybook/main.js new file mode 100644 index 0000000000000000000000000000000000000000..54fb0ef7d4825ec056e2be6496d462b895877421 --- /dev/null +++ b/packages/ui/back-top/.storybook/main.js @@ -0,0 +1,77 @@ +const {getBabelConfig} = require('@reskript/config-babel'); +const {loaders} = require('@reskript/config-webpack'); +const path = require('path'); + +const loaderOptions = { + cwd: process.cwd(), + srcDirectory: 'src', + projectSettings: { + build: { + extractCSS: false, + styleResources: [ + require.resolve('@osui/theme/dist/antd-vars-patch.less'), + require.resolve('@osui/theme/dist/less-functions-overrides.less'), + ], + }, + }, +}; + +module.exports = { + stories: [ + '../stories/**/*.stories.[tj]s{,x}', + '../stories/**/*.stories.mdx' + ], + addons: [ + { + name: '@storybook/addon-docs', + options: { + configureJSX: true, + babelOptions: {}, + sourceLoaderOptions: null, + }, + }, + '@storybook/addon-storysource', // https://github.com/storybookjs/storybook/tree/master/addons/storysource + '@storybook/addon-a11y/register', // https://github.com/storybookjs/storybook/tree/master/addons/a11y + '@storybook/addon-viewport/register', // https://github.com/storybookjs/storybook/tree/master/addons/viewport + ], + webpackFinal: async (config) => { + config.module.rules.push({ + test: /\.(js|jsx|ts|tsx)$/, + use: [ + { + loader: 'babel-loader', + options: getBabelConfig(), + }, + ], + }); + config.module.rules.push({ + test: /\.less$/, + loaders: [ + loaders.style(loaderOptions), + loaders.css(loaderOptions), + loaders.less(loaderOptions), + loaders.styleResources(loaderOptions), + ], + }); + config.module.rules.push({ + test: '/\.svg/', + loader: 'file-loader' + }); + // 如果使用css modules 请打开这个,并按需匹配css modules 文件 + // 这个同时打开了classnames loader, 可以用 import c from 'xxx.less' + // config.module.rules.push({ + // test: /\.less$/, + // loaders: [ + // loaders.classNames(), + // loaders.style(loaderOptions), + // loaders.cssModules(loaderOptions), + // loaders.less(loaderOptions), + // loaders.styleResources(loaderOptions), + // ], + // }); + + config.resolve.extensions.push('.ts', '.tsx'); + config.resolve.alias['@'] = path.resolve(__dirname, '../src'); + return config; + }, +}; diff --git a/packages/ui/back-top/.storybook/preview.js b/packages/ui/back-top/.storybook/preview.js new file mode 100644 index 0000000000000000000000000000000000000000..faeb11a4db47f4aea0688797db1856f7738f461c --- /dev/null +++ b/packages/ui/back-top/.storybook/preview.js @@ -0,0 +1,18 @@ +import {addParameters} from '@storybook/react'; +import {DocsPage, DocsContainer} from '@storybook/addon-docs/blocks'; +import { + INITIAL_VIEWPORTS, + } from '@storybook/addon-viewport'; +import '@osui/theme/dist/theme/vars.css'; + +addParameters({ + docs: { + container: DocsContainer, + page: DocsPage, + }, + viewport: { + viewports: { + ...INITIAL_VIEWPORTS + } + }, +}); diff --git a/packages/ui/back-top/README.md b/packages/ui/back-top/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c78e38891ccb42c56d3eb310d1fef5b770c8d3b8 --- /dev/null +++ b/packages/ui/back-top/README.md @@ -0,0 +1,30 @@ +# @osui/back-top + +## 安装说明 + +### 方式一 + +单包使用 + +``` +yarn install @osui/back-top +``` + +``` +import BackTop from '@osui/back-top' +``` + +### 方式二 + +从 `@osui/ui` 统一引入 + +``` +yarn install @osui/ui +``` + +``` +import {BackTop} from '@osui/ui'; +``` + + + diff --git a/packages/ui/back-top/babel.config.js b/packages/ui/back-top/babel.config.js new file mode 100644 index 0000000000000000000000000000000000000000..d222841daa0815ccea18188ceb097da34d13aad9 --- /dev/null +++ b/packages/ui/back-top/babel.config.js @@ -0,0 +1,11 @@ +const {getTransformBabelConfig} = require('@reskript/config-babel'); + +const options = { + browserSupport: {}, + usage: 'build', + mode: 'production', + polyfill: false, + hostType: 'library', +}; + +module.exports = getTransformBabelConfig(options); diff --git a/packages/ui/back-top/package.json b/packages/ui/back-top/package.json new file mode 100644 index 0000000000000000000000000000000000000000..e8167f384413b3827699041b93edfc81b0674498 --- /dev/null +++ b/packages/ui/back-top/package.json @@ -0,0 +1,60 @@ +{ + "name": "@osui/back-top", + "version": "0.1.0", + "description": "", + "main": "dist/index.js", + "scripts": { + "lint": "skr lint", + "build": "sh scripts/build.sh", + "storybook": "start-storybook -p 8700", + "clean": "rm -rf node_modules && rm -rf dist", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "sideEffects": [ + "dist/*.less" + ], + "devDependencies": { + "@babel/cli": "^7.10.5", + "@reskript/cli": "^0.9.0", + "@reskript/cli-lint": "^0.9.9", + "@reskript/config-babel": "^0.9.0", + "@reskript/config-lint": "^0.12.3", + "@reskript/config-webpack": "^0.11.2", + "@storybook/addon-a11y": "^5.3.19", + "@storybook/addon-docs": "^5.3.19", + "@storybook/addon-storysource": "^5.3.19", + "@storybook/addon-viewport": "^5.3.19", + "@storybook/addons": "^5.3.19", + "@storybook/client-api": "^5.3.19", + "@storybook/react": "^5.3.19", + "@types/classnames": "^2.2.10", + "@types/react-dom": "^16.9.8", + "antd": "^4.4.0", + "babel-loader": "^8.1.0", + "cpy-cli": "^3.1.1", + "husky": "^4.2.5", + "prop-types": "^15.7.2", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-is": "^16.13.1", + "typescript": "^3.9.6" + }, + "peerDependencies": { + "antd": ">=4.4.0", + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "repository": { + "type": "git", + "url": "https://gitee.com/yuxuanhuo/osui/tree/master" + }, + "author": "huoyuxuan", + "license": "MIT", + "husky": { + "hooks": { + "pre-commit": "skr lint ./src" + } + }, + "dependencies": { + } +} diff --git a/packages/ui/back-top/scripts/build.sh b/packages/ui/back-top/scripts/build.sh new file mode 100644 index 0000000000000000000000000000000000000000..f1cf5724ccdec601e43fab14da4e8f9f80d5765c --- /dev/null +++ b/packages/ui/back-top/scripts/build.sh @@ -0,0 +1,18 @@ +# export PATH=$NODEJS_BIN_LATEST:$YARN_BIN_LATEST:$PATH + +echo "node $(node -v)" +echo "npm $(npm -v)" +echo "yarn $(yarn -v)" + +rm -rf dist + +yarn install --production=false +# yarn test + +$(npm bin)/cpy '**/*' '!**/*.ts' '!**/*.tsx' '!**/*.js' '!**/*.jsx' ../tmp/ --cwd=src/ --parents +$(npm bin)/tsc +$(npm bin)/babel tmp --out-dir dist --ignore "src/**/*.test.js" --copy-files --source-maps + +rm -rf tmp + +echo "build success" diff --git a/packages/ui/back-top/src/backtop.svg b/packages/ui/back-top/src/backtop.svg new file mode 100644 index 0000000000000000000000000000000000000000..1ebe13aeb8ef5210c7eb38a6936ee5ce16e2fc89 --- /dev/null +++ b/packages/ui/back-top/src/backtop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/ui/back-top/src/index.less b/packages/ui/back-top/src/index.less new file mode 100644 index 0000000000000000000000000000000000000000..4ff68112a7e925747c91542e13d59adeecb503d7 --- /dev/null +++ b/packages/ui/back-top/src/index.less @@ -0,0 +1,15 @@ +@osui-back-top-class-prefix: osui-back-top; + +.@{osui-back-top-class-prefix} { + background: var(--color-gray-7); + border-radius: 2px; + + img { + margin: 8px 0 0 8px; + } + + &-circle { + border-radius: 50%; + overflow: hidden; + } +} diff --git a/packages/ui/back-top/src/index.tsx b/packages/ui/back-top/src/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..6cc108c5ff90e09df536497f4be086d5506ad6d5 --- /dev/null +++ b/packages/ui/back-top/src/index.tsx @@ -0,0 +1,19 @@ +import * as React from 'react'; +import { BackTop as AntdBackTop } from 'antd'; +import {BackTopProps as AntdBackTopProps} from 'antd/lib/back-top'; +import classNames from 'classnames'; +import './index.less'; +// @ts-ignore +import backTop from './backtop.svg'; + +const clsPrefix = 'osui-back-top'; + +export type BackTopProps = AntdBackTopProps; + +const OscBackTop: React.FC = props => { + return ( + {'返回顶部'} + ); +}; + +export default OscBackTop; diff --git a/packages/ui/back-top/stories/index.stories.mdx b/packages/ui/back-top/stories/index.stories.mdx new file mode 100644 index 0000000000000000000000000000000000000000..d6dfbaa563a86c28757b3dac9ed6e78c209a6693 --- /dev/null +++ b/packages/ui/back-top/stories/index.stories.mdx @@ -0,0 +1,14 @@ +import {Meta, Story, Preview} from '@storybook/addon-docs/blocks'; +import {Demo} from './index.stories' + + + +# OSUI Alert + +一些给UE看的文档说明,可以放在这里 + + + + {Demo()} + + diff --git a/packages/ui/back-top/stories/index.stories.tsx b/packages/ui/back-top/stories/index.stories.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b8de48ad9807746994873cfa3b2eb565c4106485 --- /dev/null +++ b/packages/ui/back-top/stories/index.stories.tsx @@ -0,0 +1,17 @@ +import * as React from 'react'; +import OscBackTop from '../src'; + +export default { + title: 'OSUI-BackTop', +}; + +export const Demo = () => { + return ( +
+ {/* default */} + + {/* circle */} + +

BackTop 回到顶部

+
); +}; diff --git a/packages/ui/back-top/tsconfig.json b/packages/ui/back-top/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..3a24a511df9639581444c76e59ea1b775c5d8ea6 --- /dev/null +++ b/packages/ui/back-top/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./tmp" + }, + "include": ["src"] +}