From c511d7aeb4c2133b508da97ca7c4359d3386f56f Mon Sep 17 00:00:00 2001 From: zhangtianli2006 Date: Tue, 12 Dec 2023 17:45:01 +0800 Subject: [PATCH] feat: add basic form --- .eslintrc.cjs | 15 --- eslint.config.js | 3 + src/App.vue | 109 ++++++++++++++------- src/assets/base.css | 86 ---------------- src/assets/logo.svg | 1 - src/assets/main.css | 31 +----- src/components/FormItem.vue | 16 +++ src/components/HelloWorld.vue | 43 -------- src/components/TheWelcome.vue | 94 ------------------ src/components/WelcomeItem.vue | 87 ---------------- src/components/icons/IconCommunity.vue | 7 -- src/components/icons/IconDocumentation.vue | 7 -- src/components/icons/IconEcosystem.vue | 7 -- src/components/icons/IconSupport.vue | 7 -- src/components/icons/IconTooling.vue | 19 ---- src/types.ts | 12 +++ 16 files changed, 104 insertions(+), 440 deletions(-) delete mode 100644 .eslintrc.cjs delete mode 100644 src/assets/base.css delete mode 100644 src/assets/logo.svg create mode 100644 src/components/FormItem.vue delete mode 100644 src/components/HelloWorld.vue delete mode 100644 src/components/TheWelcome.vue delete mode 100644 src/components/WelcomeItem.vue delete mode 100644 src/components/icons/IconCommunity.vue delete mode 100644 src/components/icons/IconDocumentation.vue delete mode 100644 src/components/icons/IconEcosystem.vue delete mode 100644 src/components/icons/IconSupport.vue delete mode 100644 src/components/icons/IconTooling.vue create mode 100644 src/types.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 947df9f..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-env node */ -require('@rushstack/eslint-patch/modern-module-resolution'); - -module.exports = { - root: true, - extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/eslint-config-typescript'], - parserOptions: { - ecmaVersion: 'latest', - }, - rules: { - indent: ['error', 2], - quotes: ['error', 'single'], - semi: ['error', 'always'], - }, -}; diff --git a/eslint.config.js b/eslint.config.js index 5c2ac05..93ed43f 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -9,6 +9,9 @@ export default antfu({ }, { rules: { 'style/brace-style': ['warn', '1tbs', { allowSingleLine: true }], + 'vue/block-order': ['error', { + order: ['template', 'script', 'style'], + }], }, ignores: ['components/ui/**', '.github/**/*'], }); diff --git a/src/App.vue b/src/App.vue index 6a5adb5..16d74d5 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,47 +1,82 @@ - - - + +function onSubmit() { + const valid = checkFormRule(); + if (!valid) + return; + + ticketOpen.value = true; +} + diff --git a/src/assets/base.css b/src/assets/base.css deleted file mode 100644 index 8816868..0000000 --- a/src/assets/base.css +++ /dev/null @@ -1,86 +0,0 @@ -/* color palette from */ -:root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-black: #181818; - --vt-c-black-soft: #222222; - --vt-c-black-mute: #282828; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); - --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --vt-c-text-dark-1: var(--vt-c-white); - --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --section-gap: 160px; -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--vt-c-black); - --color-background-soft: var(--vt-c-black-soft); - --color-background-mute: var(--vt-c-black-mute); - - --color-border: var(--vt-c-divider-dark-2); - --color-border-hover: var(--vt-c-divider-dark-1); - - --color-heading: var(--vt-c-text-dark-1); - --color-text: var(--vt-c-text-dark-2); - } -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -body { - min-height: 100vh; - color: var(--color-text); - background: var(--color-background); - transition: - color 0.5s, - background-color 0.5s; - line-height: 1.6; - font-family: - Inter, - -apple-system, - BlinkMacSystemFont, - 'Segoe UI', - Roboto, - Oxygen, - Ubuntu, - Cantarell, - 'Fira Sans', - 'Droid Sans', - 'Helvetica Neue', - sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/src/assets/logo.svg b/src/assets/logo.svg deleted file mode 100644 index 7565660..0000000 --- a/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/assets/main.css b/src/assets/main.css index 36fb845..319e903 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -1,35 +1,6 @@ -@import './base.css'; - #app { max-width: 1280px; margin: 0 auto; padding: 2rem; font-weight: normal; -} - -a, -.green { - text-decoration: none; - color: hsla(160, 100%, 37%, 1); - transition: 0.4s; - padding: 3px; -} - -@media (hover: hover) { - a:hover { - background-color: hsla(160, 100%, 37%, 0.2); - } -} - -@media (min-width: 1024px) { - body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } -} +} \ No newline at end of file diff --git a/src/components/FormItem.vue b/src/components/FormItem.vue new file mode 100644 index 0000000..a2e5c6c --- /dev/null +++ b/src/components/FormItem.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue deleted file mode 100644 index 12f5b93..0000000 --- a/src/components/HelloWorld.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - - diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue deleted file mode 100644 index f04215f..0000000 --- a/src/components/TheWelcome.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue deleted file mode 100644 index 38ff355..0000000 --- a/src/components/WelcomeItem.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue deleted file mode 100644 index 2dc8b05..0000000 --- a/src/components/icons/IconCommunity.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue deleted file mode 100644 index 6d4791c..0000000 --- a/src/components/icons/IconDocumentation.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue deleted file mode 100644 index c3a4f07..0000000 --- a/src/components/icons/IconEcosystem.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue deleted file mode 100644 index 7452834..0000000 --- a/src/components/icons/IconSupport.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue deleted file mode 100644 index afb7367..0000000 --- a/src/components/icons/IconTooling.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..e54c34b --- /dev/null +++ b/src/types.ts @@ -0,0 +1,12 @@ +interface TFormItem { + val: string + msg: string +} + +export interface TForm { + name: TFormItem + id: TFormItem + phone: TFormItem +}; + +export type TFormFields = 'name' | 'id' | 'phone';