From 5fa51d5dc5181a01765d9c33c2c7bd34507e0e7f Mon Sep 17 00:00:00 2001 From: leemanman Date: Thu, 30 Jun 2022 17:05:34 +0800 Subject: [PATCH 1/6] feat(link): link type --- pnpm-lock.yaml | 217 +++++++++++------------------ src/components/link/index.md | 20 +++ src/components/link/index.test.tsx | 31 +++++ src/components/link/index.tsx | 26 ++++ 4 files changed, 161 insertions(+), 133 deletions(-) create mode 100644 src/components/link/index.md create mode 100644 src/components/link/index.test.tsx create mode 100644 src/components/link/index.tsx diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99078ba..e66212e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: 5.4 +lockfileVersion: 5.3 specifiers: '@antfu/eslint-config': ^0.25.1 @@ -28,15 +28,15 @@ dependencies: react: 18.2.0 devDependencies: - '@antfu/eslint-config': 0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e + '@antfu/eslint-config': 0.25.1_eslint@8.18.0+typescript@4.7.4 '@testing-library/jest-dom': 5.16.4 '@testing-library/react': 12.1.5_react@18.2.0 - '@testing-library/react-hooks': 8.0.1_5jrsmvi4nbqxjmafejzgczzghm + '@testing-library/react-hooks': 8.0.1_ea6326551c686174b00522726167263b '@testing-library/user-event': 14.2.1 '@umijs/plugin-sass': 1.1.1 '@vitejs/plugin-react': 1.3.2 c8: 7.11.3 - dumi: 1.1.42_qtbnez4q7bzoc4eqybg3efzzxe + dumi: 1.1.42_react@18.2.0+typescript@4.7.4 eslint: 8.18.0 husky: 8.0.1 lint-staged: 13.0.2 @@ -56,16 +56,16 @@ packages: '@jridgewell/trace-mapping': 0.3.13 dev: true - /@antfu/eslint-config-basic/0.25.1_py5roj3ykd3sga4gtxlmfvv4pa: + /@antfu/eslint-config-basic/0.25.1_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-FiOC33yoqHJCElFjSPJ9rHIjGSvJSqbYE58PgRXtJE9E4MM00vwzbA9iKILLnj27o3r3V+1sngHWlIeGaQu/iA==} peerDependencies: eslint: '>=7.4.0' dependencies: eslint: 8.18.0 - eslint-plugin-antfu: 0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e + eslint-plugin-antfu: 0.25.1_eslint@8.18.0+typescript@4.7.4 eslint-plugin-eslint-comments: 3.2.0_eslint@8.18.0 eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.26.0_6lykrgsjl6r2vncmjcievjkgyy + eslint-plugin-import: 2.26.0_eslint@8.18.0 eslint-plugin-jsonc: 2.3.0_eslint@8.18.0 eslint-plugin-markdown: 2.2.1_eslint@8.18.0 eslint-plugin-n: 15.2.3_eslint@8.18.0 @@ -75,73 +75,64 @@ packages: jsonc-eslint-parser: 2.1.0 yaml-eslint-parser: 1.0.1 transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color - typescript dev: true - /@antfu/eslint-config-react/0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e: + /@antfu/eslint-config-react/0.25.1_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-gLdRj4nmOk4W9ORzvkwf8kklCkSxY7ox7BKE97HYcGtaq5oAQjibYC+WPkLklj2+BQuOXcZdGbqJgx/+qHfRrw==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-ts': 0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e + '@antfu/eslint-config-ts': 0.25.1_eslint@8.18.0+typescript@4.7.4 eslint: 8.18.0 eslint-plugin-react: 7.30.0_eslint@8.18.0 transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color - typescript dev: true - /@antfu/eslint-config-ts/0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e: + /@antfu/eslint-config-ts/0.25.1_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-bKaSOah8Qb5ND0i14x3kcpfMA5euxy/9VYVwZQ2XJgY6hkjEY1wTyC0Jw6JQvTYglEycEc2SDrtEZ0+0SKA/jg==} peerDependencies: eslint: '>=7.4.0' typescript: '>=3.9' dependencies: - '@antfu/eslint-config-basic': 0.25.1_py5roj3ykd3sga4gtxlmfvv4pa - '@typescript-eslint/eslint-plugin': 5.28.0_py5roj3ykd3sga4gtxlmfvv4pa - '@typescript-eslint/parser': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e + '@antfu/eslint-config-basic': 0.25.1_eslint@8.18.0+typescript@4.7.4 + '@typescript-eslint/eslint-plugin': 5.28.0_7e3b17277850f72303869dd6c2d6bc78 + '@typescript-eslint/parser': 5.28.0_eslint@8.18.0+typescript@4.7.4 eslint: 8.18.0 typescript: 4.7.4 transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color dev: true - /@antfu/eslint-config-vue/0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e: + /@antfu/eslint-config-vue/0.25.1_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-Z9MCGYKZO50eU8YwgqBYWx+GVSOfDHxbIf6+BLxpDmrVGUuJQMqT5CIcihSRkQMeH/drQwPmQKbSSmVdjOLHrg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-ts': 0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e + '@antfu/eslint-config-ts': 0.25.1_eslint@8.18.0+typescript@4.7.4 eslint: 8.18.0 eslint-plugin-vue: 9.1.1_eslint@8.18.0 transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color - typescript dev: true - /@antfu/eslint-config/0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e: + /@antfu/eslint-config/0.25.1_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-CRg2LL6bh+lWWfG5TDJh3TUQTh+immu6IWkiVaJJn4jVD7jFQSewvIQUoPo7/YEPFpL2TTCCUjmT2YpmSbnedg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-react': 0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e - '@antfu/eslint-config-vue': 0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e - '@typescript-eslint/eslint-plugin': 5.28.0_py5roj3ykd3sga4gtxlmfvv4pa - '@typescript-eslint/parser': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e + '@antfu/eslint-config-react': 0.25.1_eslint@8.18.0+typescript@4.7.4 + '@antfu/eslint-config-vue': 0.25.1_eslint@8.18.0+typescript@4.7.4 + '@typescript-eslint/eslint-plugin': 5.28.0_7e3b17277850f72303869dd6c2d6bc78 + '@typescript-eslint/parser': 5.28.0_eslint@8.18.0+typescript@4.7.4 eslint: 8.18.0 eslint-plugin-eslint-comments: 3.2.0_eslint@8.18.0 eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.26.0_6lykrgsjl6r2vncmjcievjkgyy + eslint-plugin-import: 2.26.0_eslint@8.18.0 eslint-plugin-jsonc: 2.3.0_eslint@8.18.0 eslint-plugin-n: 15.2.3_eslint@8.18.0 eslint-plugin-promise: 6.0.0_eslint@8.18.0 @@ -151,8 +142,6 @@ packages: jsonc-eslint-parser: 2.1.0 yaml-eslint-parser: 1.0.1 transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color - typescript dev: true @@ -604,7 +593,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react-hooks/8.0.1_5jrsmvi4nbqxjmafejzgczzghm: + /@testing-library/react-hooks/8.0.1_ea6326551c686174b00522726167263b: resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -820,7 +809,7 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@typescript-eslint/eslint-plugin/5.28.0_py5roj3ykd3sga4gtxlmfvv4pa: + /@typescript-eslint/eslint-plugin/5.28.0_7e3b17277850f72303869dd6c2d6bc78: resolution: {integrity: sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -831,10 +820,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e + '@typescript-eslint/parser': 5.28.0_eslint@8.18.0+typescript@4.7.4 '@typescript-eslint/scope-manager': 5.28.0 - '@typescript-eslint/type-utils': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e - '@typescript-eslint/utils': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e + '@typescript-eslint/type-utils': 5.28.0_eslint@8.18.0+typescript@4.7.4 + '@typescript-eslint/utils': 5.28.0_eslint@8.18.0+typescript@4.7.4 debug: 4.3.4 eslint: 8.18.0 functional-red-black-tree: 1.0.1 @@ -847,7 +836,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e: + /@typescript-eslint/parser/5.28.0_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -875,7 +864,7 @@ packages: '@typescript-eslint/visitor-keys': 5.28.0 dev: true - /@typescript-eslint/type-utils/5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e: + /@typescript-eslint/type-utils/5.28.0_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -885,7 +874,7 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e + '@typescript-eslint/utils': 5.28.0_eslint@8.18.0+typescript@4.7.4 debug: 4.3.4 eslint: 8.18.0 tsutils: 3.21.0_typescript@4.7.4 @@ -920,7 +909,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e: + /@typescript-eslint/utils/5.28.0_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -988,11 +977,11 @@ packages: '@umijs/deps': 3.5.26 dev: true - /@umijs/bundler-utils/3.5.26_hflg5r6ml7trnjm7sh3tgaza54: + /@umijs/bundler-utils/3.5.26_39566ec7cc5fe716a59f91f7330320ef: resolution: {integrity: sha512-beiyBrunRCJx3j4Mkdlv7Eh95Sdg7y71Sv+BI5I/IbWOYS7fHhz+T5WSrLDKp8ydzi1LC72OhV5iHr5o6UkDGg==} dependencies: '@umijs/babel-preset-umi': 3.5.26 - '@umijs/types': 3.5.26_hflg5r6ml7trnjm7sh3tgaza54 + '@umijs/types': 3.5.26_39566ec7cc5fe716a59f91f7330320ef '@umijs/utils': 3.5.26 transitivePeerDependencies: - react @@ -1000,11 +989,11 @@ packages: - react-router dev: true - /@umijs/bundler-utils/3.5.26_wcqkhtmu7mswc6yz4uyexck3ty: + /@umijs/bundler-utils/3.5.26_react-dom@16.14.0+react@16.14.0: resolution: {integrity: sha512-beiyBrunRCJx3j4Mkdlv7Eh95Sdg7y71Sv+BI5I/IbWOYS7fHhz+T5WSrLDKp8ydzi1LC72OhV5iHr5o6UkDGg==} dependencies: '@umijs/babel-preset-umi': 3.5.26 - '@umijs/types': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty + '@umijs/types': 3.5.26_react-dom@16.14.0+react@16.14.0 '@umijs/utils': 3.5.26 transitivePeerDependencies: - react @@ -1012,13 +1001,13 @@ packages: - react-router dev: true - /@umijs/bundler-webpack/3.5.26_hflg5r6ml7trnjm7sh3tgaza54: + /@umijs/bundler-webpack/3.5.26_39566ec7cc5fe716a59f91f7330320ef: resolution: {integrity: sha512-1+VrYUQiYrFlNVgz7KIclrarEFOPn+dP2H0m5GJeHYeL8PHTiF8aAmDHsZTdkb4er2OixYVoz2qqhcFwgafH1g==} hasBin: true dependencies: - '@umijs/bundler-utils': 3.5.26_hflg5r6ml7trnjm7sh3tgaza54 + '@umijs/bundler-utils': 3.5.26_39566ec7cc5fe716a59f91f7330320ef '@umijs/deps': 3.5.26 - '@umijs/types': 3.5.26_hflg5r6ml7trnjm7sh3tgaza54 + '@umijs/types': 3.5.26_39566ec7cc5fe716a59f91f7330320ef '@umijs/utils': 3.5.26 jest-worker: 26.6.2 node-libs-browser: 2.2.1 @@ -1036,13 +1025,13 @@ packages: - react-router dev: true - /@umijs/bundler-webpack/3.5.26_wcqkhtmu7mswc6yz4uyexck3ty: + /@umijs/bundler-webpack/3.5.26_react-dom@16.14.0+react@16.14.0: resolution: {integrity: sha512-1+VrYUQiYrFlNVgz7KIclrarEFOPn+dP2H0m5GJeHYeL8PHTiF8aAmDHsZTdkb4er2OixYVoz2qqhcFwgafH1g==} hasBin: true dependencies: - '@umijs/bundler-utils': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty + '@umijs/bundler-utils': 3.5.26_react-dom@16.14.0+react@16.14.0 '@umijs/deps': 3.5.26 - '@umijs/types': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty + '@umijs/types': 3.5.26_react-dom@16.14.0+react@16.14.0 '@umijs/utils': 3.5.26 jest-worker: 26.6.2 node-libs-browser: 2.2.1 @@ -1102,20 +1091,20 @@ packages: - webpack dev: true - /@umijs/preset-built-in/3.5.26_wcqkhtmu7mswc6yz4uyexck3ty: + /@umijs/preset-built-in/3.5.26_react-dom@16.14.0+react@16.14.0: resolution: {integrity: sha512-0FXZD+I4YAMa5gRZjtEKu9rny6dnAItaQFTwRK0/WgUAOp//gn0fdRJnCyzKklGDoUiy19foPe+lLUQPZF/AAA==} peerDependencies: react: 16.x || 17.x dependencies: '@types/react-router-config': 5.0.2 '@umijs/babel-preset-umi': 3.5.26 - '@umijs/bundler-webpack': 3.5.26_hflg5r6ml7trnjm7sh3tgaza54 + '@umijs/bundler-webpack': 3.5.26_39566ec7cc5fe716a59f91f7330320ef '@umijs/deps': 3.5.26 - '@umijs/renderer-mpa': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty - '@umijs/renderer-react': 3.5.26_hflg5r6ml7trnjm7sh3tgaza54 + '@umijs/renderer-mpa': 3.5.26_react-dom@16.14.0+react@16.14.0 + '@umijs/renderer-react': 3.5.26_39566ec7cc5fe716a59f91f7330320ef '@umijs/runtime': 3.5.26_react@16.14.0 '@umijs/server': 3.5.26 - '@umijs/types': 3.5.26_hflg5r6ml7trnjm7sh3tgaza54 + '@umijs/types': 3.5.26_39566ec7cc5fe716a59f91f7330320ef '@umijs/utils': 3.5.26 ansi-html: 0.0.7 core-js: 3.6.5 @@ -1129,7 +1118,7 @@ packages: react: 16.14.0 react-refresh: 0.10.0 react-router: 5.2.0_react@16.14.0 - react-router-config: 5.1.1_6flbfkch6crntn4ac2g723iqde + react-router-config: 5.1.1_react-router@5.2.0+react@16.14.0 react-router-dom: 5.2.0_react@16.14.0 regenerator-runtime: 0.13.5 schema-utils: 3.1.1 @@ -1137,7 +1126,7 @@ packages: - react-dom dev: true - /@umijs/preset-dumi/1.1.42_rc6wgmunrzm4un2iolymhpot24: + /@umijs/preset-dumi/1.1.42_88bd63328d8e59ca374872f0c3bdd3d7: resolution: {integrity: sha512-1YODNEN0HTD2fE6kkRT/sJtmLF5Frp6KClE0oOtD+Izmov95ZwjhPXPj4bVdzsMxCNhJmh83r06uaPKeIgTAAg==} peerDependencies: umi: 3.x @@ -1156,7 +1145,7 @@ packages: copy-text-to-clipboard: 2.2.0 deepmerge: 4.2.2 dumi-assets-types: 1.0.0 - dumi-theme-default: 1.1.21_g3xvpna7xud3st5hqxnakls64i + dumi-theme-default: 1.1.21_36ef57b41fbd07b94fa785da052e5ee2 enhanced-resolve: 4.5.0 github-slugger: 1.4.0 hast-util-has-property: 1.0.4 @@ -1198,7 +1187,7 @@ packages: - utf-8-validate dev: true - /@umijs/renderer-mpa/3.5.26_wcqkhtmu7mswc6yz4uyexck3ty: + /@umijs/renderer-mpa/3.5.26_react-dom@16.14.0+react@16.14.0: resolution: {integrity: sha512-aVR/SEgSdppzdqO83shBjDoWndPT1OcGQgv1cE7uZ4RFL1cs5bsTe5VDNLEkDcWPUwuX4AeurFCq1H3ufxSKKA==} peerDependencies: react: 16.x || 17.x @@ -1211,7 +1200,7 @@ packages: react-dom: 16.14.0_react@16.14.0 dev: true - /@umijs/renderer-react/3.5.26_hflg5r6ml7trnjm7sh3tgaza54: + /@umijs/renderer-react/3.5.26_39566ec7cc5fe716a59f91f7330320ef: resolution: {integrity: sha512-pMKLGUqLzMugD6pfKGkwtqWSEVNBatA49UDhrjKst2RXP5w7Q0BFcFEYCk6q6P77JfPUfTMAdod4+VxLaPFXBQ==} peerDependencies: react: 16.x || 17.x @@ -1223,12 +1212,12 @@ packages: '@umijs/runtime': 3.5.26_react@16.14.0 react: 16.14.0 react-dom: 16.14.0_react@16.14.0 - react-router-config: 5.1.1_6flbfkch6crntn4ac2g723iqde + react-router-config: 5.1.1_react-router@5.2.0+react@16.14.0 transitivePeerDependencies: - react-router dev: true - /@umijs/renderer-react/3.5.26_react@18.2.0: + /@umijs/renderer-react/3.5.26_react-dom@16.14.0+react@16.14.0: resolution: {integrity: sha512-pMKLGUqLzMugD6pfKGkwtqWSEVNBatA49UDhrjKst2RXP5w7Q0BFcFEYCk6q6P77JfPUfTMAdod4+VxLaPFXBQ==} peerDependencies: react: 16.x || 17.x @@ -1237,14 +1226,15 @@ packages: '@types/react': 16.14.28 '@types/react-dom': 16.9.16 '@types/react-router-config': 5.0.2 - '@umijs/runtime': 3.5.26_react@18.2.0 - react: 18.2.0 - react-router-config: 5.1.1_react@18.2.0 + '@umijs/runtime': 3.5.26_react@16.14.0 + react: 16.14.0 + react-dom: 16.14.0_react@16.14.0 + react-router-config: 5.1.1_react@16.14.0 transitivePeerDependencies: - react-router dev: true - /@umijs/renderer-react/3.5.26_wcqkhtmu7mswc6yz4uyexck3ty: + /@umijs/renderer-react/3.5.26_react@18.2.0: resolution: {integrity: sha512-pMKLGUqLzMugD6pfKGkwtqWSEVNBatA49UDhrjKst2RXP5w7Q0BFcFEYCk6q6P77JfPUfTMAdod4+VxLaPFXBQ==} peerDependencies: react: 16.x || 17.x @@ -1253,10 +1243,9 @@ packages: '@types/react': 16.14.28 '@types/react-dom': 16.9.16 '@types/react-router-config': 5.0.2 - '@umijs/runtime': 3.5.26_react@16.14.0 - react: 16.14.0 - react-dom: 16.14.0_react@16.14.0 - react-router-config: 5.1.1_react@16.14.0 + '@umijs/runtime': 3.5.26_react@18.2.0 + react: 18.2.0 + react-router-config: 5.1.1_react@18.2.0 transitivePeerDependencies: - react-router dev: true @@ -1296,13 +1285,13 @@ packages: '@umijs/utils': 3.5.26 dev: true - /@umijs/types/3.5.26_hflg5r6ml7trnjm7sh3tgaza54: + /@umijs/types/3.5.26_39566ec7cc5fe716a59f91f7330320ef: resolution: {integrity: sha512-6JGjwHVSWOKsb27KIGHpjwYZIIQYxP4itAJFQ+JK0zrf+3K7BaC6QC63U48Dp19ZfGqOnOYDZXg59O4cTVMZnA==} dependencies: '@umijs/babel-preset-umi': 3.5.26 '@umijs/core': 3.5.26 '@umijs/deps': 3.5.26 - '@umijs/renderer-react': 3.5.26_hflg5r6ml7trnjm7sh3tgaza54 + '@umijs/renderer-react': 3.5.26_39566ec7cc5fe716a59f91f7330320ef '@umijs/server': 3.5.26 '@umijs/utils': 3.5.26 webpack-chain: 6.5.1 @@ -1312,13 +1301,13 @@ packages: - react-router dev: true - /@umijs/types/3.5.26_react@18.2.0: + /@umijs/types/3.5.26_react-dom@16.14.0+react@16.14.0: resolution: {integrity: sha512-6JGjwHVSWOKsb27KIGHpjwYZIIQYxP4itAJFQ+JK0zrf+3K7BaC6QC63U48Dp19ZfGqOnOYDZXg59O4cTVMZnA==} dependencies: '@umijs/babel-preset-umi': 3.5.26 '@umijs/core': 3.5.26 '@umijs/deps': 3.5.26 - '@umijs/renderer-react': 3.5.26_react@18.2.0 + '@umijs/renderer-react': 3.5.26_react-dom@16.14.0+react@16.14.0 '@umijs/server': 3.5.26 '@umijs/utils': 3.5.26 webpack-chain: 6.5.1 @@ -1328,13 +1317,13 @@ packages: - react-router dev: true - /@umijs/types/3.5.26_wcqkhtmu7mswc6yz4uyexck3ty: + /@umijs/types/3.5.26_react@18.2.0: resolution: {integrity: sha512-6JGjwHVSWOKsb27KIGHpjwYZIIQYxP4itAJFQ+JK0zrf+3K7BaC6QC63U48Dp19ZfGqOnOYDZXg59O4cTVMZnA==} dependencies: '@umijs/babel-preset-umi': 3.5.26 '@umijs/core': 3.5.26 '@umijs/deps': 3.5.26 - '@umijs/renderer-react': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty + '@umijs/renderer-react': 3.5.26_react@18.2.0 '@umijs/server': 3.5.26 '@umijs/utils': 3.5.26 webpack-chain: 6.5.1 @@ -2219,22 +2208,12 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true dependencies: ms: 2.1.3 dev: true @@ -2386,13 +2365,13 @@ packages: resolution: {integrity: sha512-7nhSeWM15vybbUAMPLZsdls2jKoHB2UU4P1RM6kLPucuS8eC/HSmufquFqTTYtX4oIDLHGtil/dVtMreNGwhdA==} dev: true - /dumi-theme-default/1.1.21_g3xvpna7xud3st5hqxnakls64i: + /dumi-theme-default/1.1.21_36ef57b41fbd07b94fa785da052e5ee2: resolution: {integrity: sha512-lh3lV9GnfJhh48Sb9YMlnSBd3da8O/Qs9QfbnoQI+9paDp5P5hLO9O+UJB8skojSSzdxsXiW6VALoHgBC8NGow==} peerDependencies: '@umijs/preset-dumi': 1.x react: ^16.13.1 || ^17.0.0 dependencies: - '@umijs/preset-dumi': 1.1.42_rc6wgmunrzm4un2iolymhpot24 + '@umijs/preset-dumi': 1.1.42_88bd63328d8e59ca374872f0c3bdd3d7 lodash.throttle: 4.1.1 prism-react-renderer: 1.3.3_react@18.2.0 prismjs: 1.28.0 @@ -2404,11 +2383,11 @@ packages: - react-dom dev: true - /dumi/1.1.42_qtbnez4q7bzoc4eqybg3efzzxe: + /dumi/1.1.42_react@18.2.0+typescript@4.7.4: resolution: {integrity: sha512-zOcuEv696WaoTkZFUvUAD9Ig3v3lXS1GvD8dEgUNXmd0gi6sEgEwTEjk+r3MXa3GeNgi1XBHy6S/zLfTs1YSuw==} hasBin: true dependencies: - '@umijs/preset-dumi': 1.1.42_rc6wgmunrzm4un2iolymhpot24 + '@umijs/preset-dumi': 1.1.42_88bd63328d8e59ca374872f0c3bdd3d7 umi: 3.5.26 transitivePeerDependencies: - bufferutil @@ -2796,40 +2775,20 @@ packages: dependencies: debug: 3.2.7 resolve: 1.22.1 - transitivePeerDependencies: - - supports-color dev: true - /eslint-module-utils/2.7.3_cfsupm63rr3qvqifljk6nmy67u: + /eslint-module-utils/2.7.3: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e debug: 3.2.7 - eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 - transitivePeerDependencies: - - supports-color dev: true - /eslint-plugin-antfu/0.25.1_b5e7v2qnwxfo6hmiq56u52mz3e: + /eslint-plugin-antfu/0.25.1_eslint@8.18.0+typescript@4.7.4: resolution: {integrity: sha512-xZrk0BIHZFfrUkr2Ff1uZdnzTmCM6ZQccOxpn7/IKfUENe16sSMuZ8YHKaVrUSAMIPoUOFKG2Qpu2UxwIRTd9w==} dependencies: - '@typescript-eslint/utils': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e + '@typescript-eslint/utils': 5.28.0_eslint@8.18.0+typescript@4.7.4 transitivePeerDependencies: - eslint - supports-color @@ -2864,24 +2823,19 @@ packages: htmlparser2: 7.2.0 dev: true - /eslint-plugin-import/2.26.0_6lykrgsjl6r2vncmjcievjkgyy: + /eslint-plugin-import/2.26.0_eslint@8.18.0: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: - '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_b5e7v2qnwxfo6hmiq56u52mz3e array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.18.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_cfsupm63rr3qvqifljk6nmy67u + eslint-module-utils: 2.7.3 has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -2889,10 +2843,6 @@ packages: object.values: 1.1.5 resolve: 1.22.1 tsconfig-paths: 3.14.1 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color dev: true /eslint-plugin-jsonc/2.3.0_eslint@8.18.0: @@ -4706,7 +4656,7 @@ packages: engines: {node: '>=4'} dev: true - /mini-create-react-context/0.4.1_4vyaxm4rsh2mpfdenvlqy7kmya: + /mini-create-react-context/0.4.1_prop-types@15.8.1+react@16.14.0: resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} peerDependencies: prop-types: ^15.0.0 @@ -4718,7 +4668,7 @@ packages: tiny-warning: 1.0.3 dev: true - /mini-create-react-context/0.4.1_sh5qlbywuemxd2y3xkrw2y2kr4: + /mini-create-react-context/0.4.1_prop-types@15.8.1+react@18.2.0: resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} peerDependencies: prop-types: ^15.0.0 @@ -5896,7 +5846,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-config/5.1.1_6flbfkch6crntn4ac2g723iqde: + /react-router-config/5.1.1_react-router@5.2.0+react@16.14.0: resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: react: '>=15' @@ -5966,7 +5916,7 @@ packages: history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 - mini-create-react-context: 0.4.1_4vyaxm4rsh2mpfdenvlqy7kmya + mini-create-react-context: 0.4.1_prop-types@15.8.1+react@16.14.0 path-to-regexp: 1.8.0 prop-types: 15.8.1 react: 16.14.0 @@ -5984,7 +5934,7 @@ packages: history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 - mini-create-react-context: 0.4.1_sh5qlbywuemxd2y3xkrw2y2kr4 + mini-create-react-context: 0.4.1_prop-types@15.8.1+react@18.2.0 path-to-regexp: 1.8.0 prop-types: 15.8.1 react: 18.2.0 @@ -6028,6 +5978,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 + dev: false /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -6984,12 +6935,12 @@ packages: resolution: {integrity: sha512-81bzU5ejjiXB2voNAwBI+CQTcQVtYw0xLCpOL8SXOqDLJrg8NhXF6jTOF7Gk0crC4fHTHkzc9yHKOELzBgCLMw==} hasBin: true dependencies: - '@umijs/bundler-webpack': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty + '@umijs/bundler-webpack': 3.5.26_react-dom@16.14.0+react@16.14.0 '@umijs/core': 3.5.26 '@umijs/deps': 3.5.26 - '@umijs/preset-built-in': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty + '@umijs/preset-built-in': 3.5.26_react-dom@16.14.0+react@16.14.0 '@umijs/runtime': 3.5.26_react@16.14.0 - '@umijs/types': 3.5.26_wcqkhtmu7mswc6yz4uyexck3ty + '@umijs/types': 3.5.26_react-dom@16.14.0+react@16.14.0 '@umijs/utils': 3.5.26 react: 16.14.0 react-dom: 16.14.0_react@16.14.0 diff --git a/src/components/link/index.md b/src/components/link/index.md new file mode 100644 index 0000000..aaf4f4b --- /dev/null +++ b/src/components/link/index.md @@ -0,0 +1,20 @@ +--- +group: + title: 基础组件 +--- + +## Link + +Demo: + +```tsx +import React from 'react' +import { Link } from 'umaso' + +export default () =>
+ 测试 +
+ +``` + + diff --git a/src/components/link/index.test.tsx b/src/components/link/index.test.tsx new file mode 100644 index 0000000..d64f325 --- /dev/null +++ b/src/components/link/index.test.tsx @@ -0,0 +1,31 @@ +import React from 'react' +import type { ReactTestRendererJSON } from 'react-test-renderer' +import renderer from 'react-test-renderer' +import {render, fireEvent, waitFor, screen} from '@testing-library/react' +import { describe, expect, it } from 'vitest' + +import Link from './index' + +interface LinkAttr { + content: string + link?: string + disabled?: boolean +} + +const attr: LinkAttr = { + content: '链接文案', + link: 'https://baidu.com', + disabled: true, +} + +describe('测试链接组件', () => { + it('link type', () => { + const comp = renderer.create({attr.content}) + + const { type, props } = comp.toJSON() as ReactTestRendererJSON + expect(type).toBe('a') + expect(props.className).toContain('el-link--primary') + }) + +}) + diff --git a/src/components/link/index.tsx b/src/components/link/index.tsx new file mode 100644 index 0000000..b84b126 --- /dev/null +++ b/src/components/link/index.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import classNames from 'classnames' +import '../../theme/src/link.scss' + +interface LinkProps { + type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' + children?: React.ReactNode + disabled?: boolean + link?: string +} + +export default function Link(props: LinkProps) { + const { type, disabled } = props + const prefix = 'el-link' + const classes = classNames( + prefix, + { + [`${prefix}--${type}`]: type, + 'is-disabled': disabled, + }, + ) + + return + { props.children } + +} From 528508e551af92449e3f6c29ff24711fbae23fc2 Mon Sep 17 00:00:00 2001 From: leemanman Date: Thu, 30 Jun 2022 19:10:13 +0800 Subject: [PATCH 2/6] feat: link components --- src/components/link/index.md | 61 +++++++++++++++++++++++++++++- src/components/link/index.test.tsx | 41 +++++++++++++++++--- src/components/link/index.tsx | 9 +++-- src/index.ts | 1 + 4 files changed, 102 insertions(+), 10 deletions(-) diff --git a/src/components/link/index.md b/src/components/link/index.md index aaf4f4b..a59c47d 100644 --- a/src/components/link/index.md +++ b/src/components/link/index.md @@ -5,16 +5,73 @@ group: ## Link -Demo: +### Type ```tsx import React from 'react' import { Link } from 'umaso' export default () =>
- 测试 + 默认 + 测试 + 测试 + 测试 + 测试 + 测试
+``` + +### Disabled + +```tsx +import React from 'react' +import { Link } from 'umaso' + +export default () =>
+ 默认 + 测试 + 测试 + 测试 + 测试 + 测试 +
+``` + +### 文字下划线 + +```tsx +import React from 'react' +import { Link } from 'umaso' + +export default () =>
+ 百度 + 百度 +
+``` + + +### Link跳转 + +```tsx +import React from 'react' +import { Link } from 'umaso' + +export default () =>
+ 百度 +
+``` + +### Slot +```tsx +import React from 'react' +import { Link } from 'umaso' + +export default () =>
+ + 这是个props.children + +
``` diff --git a/src/components/link/index.test.tsx b/src/components/link/index.test.tsx index d64f325..cba0405 100644 --- a/src/components/link/index.test.tsx +++ b/src/components/link/index.test.tsx @@ -1,31 +1,62 @@ import React from 'react' import type { ReactTestRendererJSON } from 'react-test-renderer' import renderer from 'react-test-renderer' -import {render, fireEvent, waitFor, screen} from '@testing-library/react' +import { fireEvent, render, screen, waitFor } from '@testing-library/react' import { describe, expect, it } from 'vitest' import Link from './index' interface LinkAttr { content: string - link?: string + href?: string disabled?: boolean + underline?: boolean } const attr: LinkAttr = { content: '链接文案', - link: 'https://baidu.com', + href: 'https://baidu.com', disabled: true, + underline: true, } -describe('测试链接组件', () => { +describe('test link component', () => { it('link type', () => { - const comp = renderer.create({attr.content}) + const comp = renderer.create( link component) const { type, props } = comp.toJSON() as ReactTestRendererJSON expect(type).toBe('a') expect(props.className).toContain('el-link--primary') }) + it('test link disable', () => { + const comp = renderer.create(link disabled) + const { props } = comp.toJSON() as ReactTestRendererJSON + expect(props.className).toContain('is-disabled') + }) + + it('test link underline', () => { + const comp = renderer.create(link underline) + const { props } = comp.toJSON() as ReactTestRendererJSON + expect(props.className).toContain('is-underline') + }) + it('test link underline', () => { + const comp = renderer.create(link underline) + const { props } = comp.toJSON() as ReactTestRendererJSON + expect(props.className).not.toContain('is-underline') + }) + + it('test link slot', () => { + function Content(props: { desc: string }) { + return this is content, {props.desc} + } + + render( + + + ) + + expect(screen.getByText(/children component/i)).toBeInTheDocument() + }) }) diff --git a/src/components/link/index.tsx b/src/components/link/index.tsx index b84b126..f06cc00 100644 --- a/src/components/link/index.tsx +++ b/src/components/link/index.tsx @@ -6,21 +6,24 @@ interface LinkProps { type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' children?: React.ReactNode disabled?: boolean - link?: string + href?: string + underline?: boolean | undefined } export default function Link(props: LinkProps) { - const { type, disabled } = props + const { type, disabled, underline } = props const prefix = 'el-link' const classes = classNames( prefix, { [`${prefix}--${type}`]: type, 'is-disabled': disabled, + 'is-underline': underline !== false, }, ) - return + return { props.children } } diff --git a/src/index.ts b/src/index.ts index 5dd151b..2b526c4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,3 @@ export { default as Button } from './components/button/' +export { default as Link } from './components/Link/' export { ElHeader, ElAside, ElMain, ElFooter, ElContainer } from './components/container/' From be2b5ef536e2348085b9906a3c33c4b60cd4098a Mon Sep 17 00:00:00 2001 From: liyi <274195597@qq.com> Date: Thu, 30 Jun 2022 21:04:01 +0800 Subject: [PATCH 3/6] pref(eslint): defined but nerve used --- src/components/link/index.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/link/index.test.tsx b/src/components/link/index.test.tsx index cba0405..e2473fa 100644 --- a/src/components/link/index.test.tsx +++ b/src/components/link/index.test.tsx @@ -1,7 +1,7 @@ import React from 'react' import type { ReactTestRendererJSON } from 'react-test-renderer' import renderer from 'react-test-renderer' -import { fireEvent, render, screen, waitFor } from '@testing-library/react' +import { render, screen } from '@testing-library/react' import { describe, expect, it } from 'vitest' import Link from './index' From d767729db7ac66925375dd8bd408113d8a39fb25 Mon Sep 17 00:00:00 2001 From: liyi <274195597@qq.com> Date: Thu, 30 Jun 2022 21:10:00 +0800 Subject: [PATCH 4/6] pref(ci): moudule path case error --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index ec65350..e9bd318 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ export { default as Button } from './components/button/' export { default as Tag } from './components/tag' -export { default as Link } from './components/Link/' +export { default as Link } from './components/link/' export { ElHeader, ElAside, ElMain, ElFooter, ElContainer } from './components/container/' From 6091797c17446dfb11fc4ff8d0e3a54db57c8903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E6=9E=9C=E5=B1=B1=E5=A4=A7=E5=9C=A3?= <316783812@qq.com> Date: Fri, 1 Jul 2022 10:51:26 +0800 Subject: [PATCH 5/6] chore: add link test --- src/components/link/index.test.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/link/index.test.tsx b/src/components/link/index.test.tsx index e2473fa..e75baea 100644 --- a/src/components/link/index.test.tsx +++ b/src/components/link/index.test.tsx @@ -46,6 +46,14 @@ describe('test link component', () => { expect(props.className).not.toContain('is-underline') }) + it('test href props', () => { + const url = "https://github.com/course-dasheng/umaso" + const comp = renderer.create(link underline) + const { props } = comp.toJSON() as ReactTestRendererJSON + expect(props.href).toEqual(url) + }) + + it('test link slot', () => { function Content(props: { desc: string }) { return this is content, {props.desc} From 6d2bb33d78ab2df04cb7759828423160c8dece4b Mon Sep 17 00:00:00 2001 From: leemanman Date: Fri, 1 Jul 2022 11:00:57 +0800 Subject: [PATCH 6/6] pref(lint): eslint singlequote --- src/components/link/index.test.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/link/index.test.tsx b/src/components/link/index.test.tsx index e75baea..23de8e7 100644 --- a/src/components/link/index.test.tsx +++ b/src/components/link/index.test.tsx @@ -47,13 +47,12 @@ describe('test link component', () => { }) it('test href props', () => { - const url = "https://github.com/course-dasheng/umaso" + const url = 'https://github.com/course-dasheng/umaso' const comp = renderer.create(link underline) const { props } = comp.toJSON() as ReactTestRendererJSON expect(props.href).toEqual(url) }) - it('test link slot', () => { function Content(props: { desc: string }) { return this is content, {props.desc}