From e729aa7adb2880525387dfc2bf5ae781886743b9 Mon Sep 17 00:00:00 2001 From: Cassiel Date: Sat, 1 Oct 2022 10:44:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AE=9E=E7=8E=B0button=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E3=80=81=E5=B0=BA=E5=AF=B8=E5=8F=8A=E7=A6=81=E7=94=A8=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes CONTRIBUTING.md | 40 + commitlint.config.js | 110 + lerna.json | 4 +- package.json | 35 +- packages/.DS_Store | Bin 0 -> 6148 bytes packages/docs-vue/src/App.vue | 2 +- .../src/components/hello-world.vue} | 6 +- packages/docs-vue/src/vite-env.d.ts | 9 +- packages/docs-vue/tsconfig.json | 3 +- packages/eslint-config/.DS_Store | Bin 0 -> 6148 bytes packages/eslint-config/index.js | 169 + packages/eslint-config/jest.config.js | 4 + packages/eslint-config/jest.resolver.js | 13 + packages/eslint-config/package.json | 27 + packages/eslint-config/test/.eslintrc | 4 + packages/eslint-config/test/index.spec.js | 41 + packages/eslint-config/test/vue-tsx/app.tsx | 12 + packages/eslint-config/test/vue-tsx/index.tsx | 23 + packages/eslint-config/test/vue-tsx/main.ts | 1 + .../eslint-config/test/vue-tsx/tsconfig.json | 19 + packages/eslint-config/test/vue/index.vue | 20 + packages/eslint-config/test/vue/main.js | 2 + packages/ui-vue/.gitignore | 1 + packages/ui-vue/components/according/index.ts | 0 .../according/src/according.component.tsx | 25 + .../components/according/src/according.css | 4 + .../according/src/according.props.ts | 10 + .../components/according-item.component.tsx | 58 + .../src/components/according-item.props.ts | 10 + .../according/src/composition/types.ts | 0 packages/ui-vue/components/avatar/index.ts | 0 .../components/avatar/src/avatar.component.ts | 308 + .../avatar/src/avatar.component.tsx | 66 + .../components/avatar/src/avatar.props.ts | 40 + .../avatar/src/composition/types.ts | 19 + .../avatar/src/composition/use-file.ts | 92 + .../avatar/src/composition/use-image.ts | 71 + .../ui-vue/components/button-edit/index.ts | 12 + .../button-edit/src/button-edit.component.tsx | 112 + .../button-edit/src/button-edit.props.ts | 81 + .../button-edit/src/composition/types.ts | 106 + .../button-edit/src/composition/use-button.ts | 39 + .../button-edit/src/composition/use-clear.ts | 67 + .../src/composition/use-text-box.ts | 105 + .../button-edit/test/button-edit.spec.tsx | 208 + .../{input-group => button}/index.ts | 12 +- .../button/src/button-group.component.tsx | 28 + .../button/src/button-group.props.ts | 26 + .../button/src/button.component.tsx | 102 + .../components/button/src/button.props.ts | 26 + .../button/src/composition/types-group.ts | 13 + .../button/src/composition/types.ts | 13 + .../src/composition/use-button-group.ts | 24 + .../button/src/composition/use-button.ts | 24 + .../input-group/src/input-group.component.tsx | 101 - .../input-group/src/input-group.props.ts | 22 - packages/ui-vue/components/notify/index.ts | 0 .../notify/src/components/toast.component.tsx | 131 + .../notify/src/components/toast.css | 63 + .../notify/src/components/toast.props.ts | 9 + .../notify/src/composition/types.ts | 0 .../notify/src/notify.component.tsx | 86 + .../components/notify/src/notify.props.ts | 55 + packages/ui-vue/components/popover/index.ts | 1 + .../popover/src/composition/types.ts | 0 .../popover/src/popover.component.tsx | 26 + .../components/popover/src/popover.props.ts | 10 + packages/ui-vue/components/switch/index.ts | 0 .../switch/src/composition/types.ts | 0 .../switch/src/switch.component.tsx | 94 + .../components/switch/src/switch.props.ts | 22 + packages/ui-vue/components/text/index.ts | 0 .../components/text/src/composition/types.ts | 0 .../components/text/src/text.component.tsx | 41 + .../ui-vue/components/text/src/text.props.ts | 4 + packages/ui-vue/components/tooltip/index.ts | 0 .../tooltip/src/composition/types.ts | 0 .../tooltip/src/tooltip.component.tsx | 35 + .../ui-vue/components/tooltip/src/tooltip.css | 8 + .../components/tooltip/src/tooltip.props.ts | 23 + packages/ui-vue/jest.config.js | 38 + packages/ui-vue/jest.setup.js | 7 + packages/ui-vue/package-lock.json | 10789 ++++++++++++++++ packages/ui-vue/package.json | 45 +- packages/ui-vue/src/App.vue | 55 +- .../src/components/hello-world.vue} | 0 packages/ui-vue/src/main.ts | 2 +- packages/ui-vue/tsconfig.json | 8 +- packages/ui-vue/tsconfig.node.json | 4 +- packages/ui-vue/vite.config.ts | 10 +- style-guide/typescript_style_guide.md | 1667 +++ style-guide/vue_component_style_guide.md | 165 + yarn.lock | 8505 +++++++++--- 94 files changed, 22447 insertions(+), 1825 deletions(-) create mode 100644 .DS_Store create mode 100644 commitlint.config.js create mode 100644 packages/.DS_Store rename packages/{ui-vue/src/components/HelloWorld.vue => docs-vue/src/components/hello-world.vue} (89%) create mode 100644 packages/eslint-config/.DS_Store create mode 100644 packages/eslint-config/index.js create mode 100644 packages/eslint-config/jest.config.js create mode 100644 packages/eslint-config/jest.resolver.js create mode 100644 packages/eslint-config/package.json create mode 100644 packages/eslint-config/test/.eslintrc create mode 100644 packages/eslint-config/test/index.spec.js create mode 100644 packages/eslint-config/test/vue-tsx/app.tsx create mode 100644 packages/eslint-config/test/vue-tsx/index.tsx create mode 100644 packages/eslint-config/test/vue-tsx/main.ts create mode 100644 packages/eslint-config/test/vue-tsx/tsconfig.json create mode 100644 packages/eslint-config/test/vue/index.vue create mode 100644 packages/eslint-config/test/vue/main.js create mode 100644 packages/ui-vue/components/according/index.ts create mode 100644 packages/ui-vue/components/according/src/according.component.tsx create mode 100644 packages/ui-vue/components/according/src/according.css create mode 100644 packages/ui-vue/components/according/src/according.props.ts create mode 100644 packages/ui-vue/components/according/src/components/according-item.component.tsx create mode 100644 packages/ui-vue/components/according/src/components/according-item.props.ts create mode 100644 packages/ui-vue/components/according/src/composition/types.ts create mode 100644 packages/ui-vue/components/avatar/index.ts create mode 100644 packages/ui-vue/components/avatar/src/avatar.component.ts create mode 100644 packages/ui-vue/components/avatar/src/avatar.component.tsx create mode 100644 packages/ui-vue/components/avatar/src/avatar.props.ts create mode 100644 packages/ui-vue/components/avatar/src/composition/types.ts create mode 100644 packages/ui-vue/components/avatar/src/composition/use-file.ts create mode 100644 packages/ui-vue/components/avatar/src/composition/use-image.ts create mode 100644 packages/ui-vue/components/button-edit/index.ts create mode 100644 packages/ui-vue/components/button-edit/src/button-edit.component.tsx create mode 100644 packages/ui-vue/components/button-edit/src/button-edit.props.ts create mode 100644 packages/ui-vue/components/button-edit/src/composition/types.ts create mode 100644 packages/ui-vue/components/button-edit/src/composition/use-button.ts create mode 100644 packages/ui-vue/components/button-edit/src/composition/use-clear.ts create mode 100644 packages/ui-vue/components/button-edit/src/composition/use-text-box.ts create mode 100644 packages/ui-vue/components/button-edit/test/button-edit.spec.tsx rename packages/ui-vue/components/{input-group => button}/index.ts (33%) create mode 100644 packages/ui-vue/components/button/src/button-group.component.tsx create mode 100644 packages/ui-vue/components/button/src/button-group.props.ts create mode 100644 packages/ui-vue/components/button/src/button.component.tsx create mode 100644 packages/ui-vue/components/button/src/button.props.ts create mode 100644 packages/ui-vue/components/button/src/composition/types-group.ts create mode 100644 packages/ui-vue/components/button/src/composition/types.ts create mode 100644 packages/ui-vue/components/button/src/composition/use-button-group.ts create mode 100644 packages/ui-vue/components/button/src/composition/use-button.ts delete mode 100644 packages/ui-vue/components/input-group/src/input-group.component.tsx delete mode 100644 packages/ui-vue/components/input-group/src/input-group.props.ts create mode 100644 packages/ui-vue/components/notify/index.ts create mode 100644 packages/ui-vue/components/notify/src/components/toast.component.tsx create mode 100644 packages/ui-vue/components/notify/src/components/toast.css create mode 100644 packages/ui-vue/components/notify/src/components/toast.props.ts create mode 100644 packages/ui-vue/components/notify/src/composition/types.ts create mode 100644 packages/ui-vue/components/notify/src/notify.component.tsx create mode 100644 packages/ui-vue/components/notify/src/notify.props.ts create mode 100644 packages/ui-vue/components/popover/index.ts create mode 100644 packages/ui-vue/components/popover/src/composition/types.ts create mode 100644 packages/ui-vue/components/popover/src/popover.component.tsx create mode 100644 packages/ui-vue/components/popover/src/popover.props.ts create mode 100644 packages/ui-vue/components/switch/index.ts create mode 100644 packages/ui-vue/components/switch/src/composition/types.ts create mode 100644 packages/ui-vue/components/switch/src/switch.component.tsx create mode 100644 packages/ui-vue/components/switch/src/switch.props.ts create mode 100644 packages/ui-vue/components/text/index.ts create mode 100644 packages/ui-vue/components/text/src/composition/types.ts create mode 100644 packages/ui-vue/components/text/src/text.component.tsx create mode 100644 packages/ui-vue/components/text/src/text.props.ts create mode 100644 packages/ui-vue/components/tooltip/index.ts create mode 100644 packages/ui-vue/components/tooltip/src/composition/types.ts create mode 100644 packages/ui-vue/components/tooltip/src/tooltip.component.tsx create mode 100644 packages/ui-vue/components/tooltip/src/tooltip.css create mode 100644 packages/ui-vue/components/tooltip/src/tooltip.props.ts create mode 100644 packages/ui-vue/jest.config.js create mode 100644 packages/ui-vue/jest.setup.js create mode 100644 packages/ui-vue/package-lock.json rename packages/{docs-vue/src/components/HelloWorld.vue => ui-vue/src/components/hello-world.vue} (100%) create mode 100644 style-guide/typescript_style_guide.md create mode 100644 style-guide/vue_component_style_guide.md diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..86df7007918aee48b11cac9ef4e043c466fd2321 GIT binary patch literal 6148 zcmeHKu};H447E##Ruxh=7;mn`kcE}B3KDwQ?Xn` zjo}Y7k8x9^GZ+(tC_FZKknSSkE z%aaN^K>a5$Mmhr<4J?C-ogaja;gF<=bT8Q9ay zzSRHI-Ti+($gYe5W8hyg!0lw5jBrb#wl;1~YORA_LPf-{RIEZU@ue8PQi>0uUSM}J W0mcDKMOYyABj9PU!5H{a2HpW7s8%rm literal 0 HcmV?d00001 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 773abb1669..33e9798a1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,2 +1,42 @@ # Farris UI Vue 贡献指南 +下面是参与贡献 Farris UI 的共享指南,请在反馈`issue`和`Pull Request`之前,花费几分钟阅读以下内容。 +你也可以根据自己的实践经验,自由的通过`Pull Reqeust`修改完善这个指南。 + +## 反馈Issue + +如有你认为自己新发现了一个bug,或者提出一个新特性,请先确定之前没有人提出或者修复过这个bug或者特性。你可以在Issues列表和PR列表中搜索是否有人已经提出了类似bug或者特性。 + +接下来你可以在Issue列表界面创建一个新的Issue,我们为你提供了Issue模板,请在Issue模板中标记是要反馈「bug」还是「新特性」,并提供必须的上下文说明,以便于开发者可以清晰的理解你的意图。 + +## 领取Issue + +如果你对修复某个bug,或者实现某个新特性敢兴趣,请在这个Issue下方通过评论告诉我们,我们可以进行充分沟通这个「bug」或者「新特性」的具体细节,然后会将Issue的负责人指定给你,将有你负责后续开发工作。 +请务必首先认领Issue然后在在开启你的贡献工作。 + +## 贡献代码 + +如果你成功领取了项目Issue,请通过Gitee推荐的「fork + pull request」的方式贡献代码。 +为了保证项目代码质量,我们指定了详细的编码风格指南。 +为了你的PR可以顺利通过代码审查,请在编码前认真阅读以下**编码指南**: + +- [Farris UI TypeScript 编码指南](./style-guide/typescript_style_guide.md) + +- [Farris UI Vue 组件编码指南](./style-guide/vue_component_style_guide.md) + +## 提交Pull Request + +我们欢迎你通过提交PR参与项目贡献,在你计划提交PR前,请先阅读以下注意事项: + +- 在你提交PR之前请确保已经开启了一个Issue并认领了它,我们只接收与认领Issue关联的PR。如果你打算实现一个比较大的特性,在开启新的Issue前最好先与项目管理者进行充分讨论。 + +- 在没有十足把握时,尽量提交小规格的PR。不要在一个PR中修复多于一个bug或实现多于一个新特性,以便于更容易被接受。提交两个小规模的PR,会比提交一个大规模修改的PR要好。 + +- 当你提交新特性,或者修改已有特性时,请包含相应的测试代码,以便于确认组件新的交互特性。 + +- 在提交PR前端请先执行Rebase以便于保持干净的历史提交记录。 + +- 我们提供了PR模板,请在提交PR时安装模板要求提供「修改的内容」、「管理的PR」、「测试用例」、「界面预览」等相关内容。 + + +Creative Commons License diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000000..b2388de1e2 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,110 @@ +const types = ['config', 'feature', 'fix', 'docs', 'style', 'refactor', 'performance', 'test', 'build', 'release', 'chore', 'revert']; + +module.exports = { + parserPreset: { parserOpts: { headerPattern: /^(\w*)(?:\((.*)\))?!?: (.*)$/ } }, + extends: ['@commitlint/config-conventional'], + rules: { + 'type-empty': [2, 'never'], + 'type-enum': [2, 'always', types], + 'scope-case': [0, 'always'], + 'subject-empty': [2, 'never'], + 'subject-case': [0, 'never'], + 'header-max-length': [2, 'always', 88], + }, + prompt: { + questions: { + type: { + description: "Select the type of change that you're committing", + enum: { + config: { + description: 'Changes that affect the tools, such as eslint, npm, vscode.', + title: 'Config', + emoji: '🛠', + }, + feature: { + description: 'A new feature', + title: 'Features', + emoji: '✨', + }, + fix: { + description: 'A bug fix', + title: 'Bug Fixes', + emoji: '🐛', + }, + docs: { + description: 'Documentation only changes', + title: 'Documentation', + emoji: '📚', + }, + style: { + description: 'Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)', + title: 'Styles', + emoji: '💎', + }, + refactor: { + description: 'A code change that neither fixes a bug nor adds a feature', + title: 'Code Refactoring', + emoji: '📦', + }, + performance: { + description: 'A code change that improves performance', + title: 'Performance Improvements', + emoji: '🚀', + }, + test: { + description: 'Adding missing tests or correcting existing tests', + title: 'Tests', + emoji: '🚨', + }, + build: { + description: 'Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)', + title: 'Builds', + emoji: '🛠', + }, + ci: { + description: 'Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)', + title: 'Continuous Integrations', + emoji: '⚙️', + }, + chore: { + description: "Other changes that don't modify src or test files", + title: 'Chores', + emoji: '♻️', + }, + revert: { + description: 'Reverts a previous commit', + title: 'Reverts', + emoji: '🗑', + }, + }, + }, + scope: { + description: 'What is the scope of this change (e.g. component or file name)', + }, + subject: { + description: 'Write a short, imperative tense description of the change', + }, + body: { + description: 'Provide a longer description of the change', + }, + isBreaking: { + description: 'Are there any breaking changes?', + }, + breakingBody: { + description: 'A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself', + }, + breaking: { + description: 'Describe the breaking changes', + }, + isIssueAffected: { + description: 'Does this change affect any open issues?', + }, + issuesBody: { + description: 'If issues are closed, the commit requires a body. Please enter a longer description of the commit itself', + }, + issues: { + description: 'Add issue references (e.g. "fix #123", "re #123".)', + }, + }, + } +}; diff --git a/lerna.json b/lerna.json index 3467e18498..566085002c 100644 --- a/lerna.json +++ b/lerna.json @@ -4,5 +4,7 @@ ], "version": "0.0.0", "useWorkspaces": true, - "npmClient": "yarn" + "npmClient": "yarn", + "$schema": "node_modules/lerna/schemas/lerna-schema.json", + "useNx": false } \ No newline at end of file diff --git a/package.json b/package.json index 86de6d3c14..7909d6ae16 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,41 @@ { "name": "farris-vue", "private": true, + "scripts": { + "prepare": "husky install" + }, "devDependencies": { - "lerna": "^4.0.0" + "@commitlint/cli": "^17.1.0", + "@commitlint/config-conventional": "^17.1.0", + "@farris/eslint-config": "^1.0.0", + "@ls-lint/ls-lint": "^1.11.0", + "@types/jest": "^29.0.1", + "@types/lodash": "^4.14.182", + "@types/node": "^18.7.16", + "esbuild-register": "^3.3.0", + "eslint": "^8.23.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-vue": "^9.4.0", + "husky": "^8.0.0", + "intersection-observer": "^0.12.2", + "lerna": "^5.5.4", + "lint-staged": "^13.0.0", + "npm-run-all": "^4.1.5", + "stylelint": "^14.11.0", + "stylelint-config-recommended-scss": "^7.0.0", + "stylelint-config-standard": "^28.0.0", + "stylelint-scss": "^3.3.1" + }, + "lint-staged": { + "packages/docs-vue/{*.vue,*.js,*.ts,*.jsx,*.tsx}": "eslint --fix", + "packages/docs-vue/{*.scss,*.css}": "stylelint --fix", + "packages/ui-vue/{*.vue,*.js,*.ts,*.jsx,*.tsx}": "eslint --fix", + "packages/ui-vue/{*.scss,*.css}": "stylelint --fix" }, "workspaces": [ "packages/*" - ] + ], + "dependencies": { + "jest-environment-jsdom": "^29.0.3" + } } diff --git a/packages/.DS_Store b/packages/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2587beebcfa28b73ef2ca18bb96a61f525255037 GIT binary patch literal 6148 zcmeHKJxc>Y5S@)dPE<%~xqrao1d9~H8BPec0c|Ch7z0Tz5MzD4f6BuA73+YVm2Y-7 z=Us9MsYGN3cHiFY%q~oa&ZZ4`~#%UaPM`@S)+Mjpra92Y^(u{1`J)wY-tkE=K4p{5F`0;<5e0$8)zf@49gRRL8%704Cf z|AR$gj67z7?$?3J9RYxKxSgTx_HIDS4q)Ul6NCq5Bo!#B#vd_^q{DB0T;wqmlyov~ zW{l%!HvWVnJ4g7f3nvo^YOM;W0%Zjbq97Q~_1sUnyYfaVKu!mi*ef xadW)ZT9gMAHjc{#^At4PQjAz$iqBA-!Ed<%j67z7@W6B<;AGHB75G&Jz5x^+dhGxJ literal 0 HcmV?d00001 diff --git a/packages/docs-vue/src/App.vue b/packages/docs-vue/src/App.vue index 76ebf08602..de11b55f03 100644 --- a/packages/docs-vue/src/App.vue +++ b/packages/docs-vue/src/App.vue @@ -1,7 +1,7 @@