From 82398cf03fbc77133ee6073ac43fb2b90339fa2b Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 19 Jul 2022 20:30:46 +0200 Subject: [PATCH 01/10] refactor(gui-v2): replace vuetify form with ant form --- packages/nc-gui-v2/app.vue | 4 +- packages/nc-gui-v2/assets/style-v2.scss | 5 +- .../nc-gui-v2/components/general/NocoIcon.vue | 2 +- packages/nc-gui-v2/pages/signin.vue | 54 +++++++++---------- 4 files changed, 30 insertions(+), 35 deletions(-) diff --git a/packages/nc-gui-v2/app.vue b/packages/nc-gui-v2/app.vue index e2164852f5..d7c8c12b19 100644 --- a/packages/nc-gui-v2/app.vue +++ b/packages/nc-gui-v2/app.vue @@ -16,7 +16,7 @@ const signOut = () => { const toggleSidebar = useToggle($state.sidebarOpen) const sidebarOpen = computed({ - get: () => !($state.sidebarOpen.value ?? true), + get: () => !$state.sidebarOpen.value, set: (val) => toggleSidebar(val), }) @@ -87,7 +87,7 @@ const sidebarOpen = computed({ () diff --git a/packages/nc-gui-v2/pages/signin.vue b/packages/nc-gui-v2/pages/signin.vue index b5c3fa084b..9f69bca447 100644 --- a/packages/nc-gui-v2/pages/signin.vue +++ b/packages/nc-gui-v2/pages/signin.vue @@ -30,8 +30,6 @@ let error = $ref(null) const valid = ref() -const formValidator = ref() - const form = reactive({ email: '', password: '', @@ -71,11 +69,11 @@ const resetError = () => { From 46289fa8b7317fde336dd23cb3773c14c07a81eb Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 19 Jul 2022 20:54:44 +0200 Subject: [PATCH 02/10] chore(gui-v2,deps-dev): upgrade to latest ant-design-vue version --- packages/nc-gui-v2/components.d.ts | 4 ++++ packages/nc-gui-v2/package-lock.json | 26 +++++++++++++++----------- packages/nc-gui-v2/package.json | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/nc-gui-v2/components.d.ts b/packages/nc-gui-v2/components.d.ts index f62537956d..49767446cb 100644 --- a/packages/nc-gui-v2/components.d.ts +++ b/packages/nc-gui-v2/components.d.ts @@ -9,6 +9,10 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { ADivider: typeof import('ant-design-vue/es')['Divider'] ADropdown: typeof import('ant-design-vue/es')['Dropdown'] + AForm: typeof import('ant-design-vue/es')['Form'] + AFormItem: typeof import('ant-design-vue/es')['FormItem'] + AInput: typeof import('ant-design-vue/es')['Input'] + AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] ALayout: typeof import('ant-design-vue/es')['Layout'] ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent'] ALayoutHeader: typeof import('ant-design-vue/es')['LayoutHeader'] diff --git a/packages/nc-gui-v2/package-lock.json b/packages/nc-gui-v2/package-lock.json index 2e36b612fb..028e82b809 100644 --- a/packages/nc-gui-v2/package-lock.json +++ b/packages/nc-gui-v2/package-lock.json @@ -7,7 +7,7 @@ "dependencies": { "@vueuse/core": "^8.7.5", "@vueuse/integrations": "^8.9.1", - "ant-design-vue": "^3.0.0-beta.8", + "ant-design-vue": "^3.1.0-rc.6", "dayjs": "^1.11.3", "jwt-decode": "^3.1.2", "nocodb-sdk": "file:../nocodb-sdk", @@ -3399,13 +3399,14 @@ } }, "node_modules/ant-design-vue": { - "version": "3.0.0-beta.8", - "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.0.0-beta.8.tgz", - "integrity": "sha512-3fgfg0pfIqvQ7VN5nKKZayqMH8V1T8nn+e3hWOz6QYdYa7gNydgm5GH+r8ZyhQitkmiAIYXbNDakcqrUdOPXOA==", + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.2.10.tgz", + "integrity": "sha512-aqa0kjJzVQ74MfVw5w7rTOdJQL2JN9V/O6Ro+VQQMq/tY7q91JiomhI9TRKAK3tFdBDXJpUoBCVOsosbbxMzRw==", "dependencies": { "@ant-design/colors": "^6.0.0", - "@ant-design/icons-vue": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", "@babel/runtime": "^7.10.5", + "@ctrl/tinycolor": "^3.4.0", "@simonwep/pickr": "~1.8.0", "array-tree-filter": "^2.1.0", "async-validator": "^4.0.0", @@ -3420,13 +3421,15 @@ "vue-types": "^3.0.0", "warning": "^4.0.0" }, + "engines": { + "node": ">=12.22.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/ant-design-vue" }, "peerDependencies": { - "@vue/compiler-sfc": ">=3.1.0", - "vue": ">=3.1.0" + "vue": ">=3.2.0" } }, "node_modules/anymatch": { @@ -16537,13 +16540,14 @@ } }, "ant-design-vue": { - "version": "3.0.0-beta.8", - "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.0.0-beta.8.tgz", - "integrity": "sha512-3fgfg0pfIqvQ7VN5nKKZayqMH8V1T8nn+e3hWOz6QYdYa7gNydgm5GH+r8ZyhQitkmiAIYXbNDakcqrUdOPXOA==", + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.2.10.tgz", + "integrity": "sha512-aqa0kjJzVQ74MfVw5w7rTOdJQL2JN9V/O6Ro+VQQMq/tY7q91JiomhI9TRKAK3tFdBDXJpUoBCVOsosbbxMzRw==", "requires": { "@ant-design/colors": "^6.0.0", - "@ant-design/icons-vue": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", "@babel/runtime": "^7.10.5", + "@ctrl/tinycolor": "^3.4.0", "@simonwep/pickr": "~1.8.0", "array-tree-filter": "^2.1.0", "async-validator": "^4.0.0", diff --git a/packages/nc-gui-v2/package.json b/packages/nc-gui-v2/package.json index 4491432557..d5d19b89bf 100644 --- a/packages/nc-gui-v2/package.json +++ b/packages/nc-gui-v2/package.json @@ -13,7 +13,7 @@ "dependencies": { "@vueuse/core": "^8.7.5", "@vueuse/integrations": "^8.9.1", - "ant-design-vue": "^3.0.0-beta.8", + "ant-design-vue": "^3.1.0-rc.6", "dayjs": "^1.11.3", "jwt-decode": "^3.1.2", "nocodb-sdk": "file:../nocodb-sdk", From b597e282c1da37220f2f8446c986af40ab8cc36c Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 19 Jul 2022 21:19:10 +0200 Subject: [PATCH 03/10] chore(gui-v2): update form rules for ant form --- packages/nc-gui-v2/assets/style-v2.scss | 8 --- packages/nc-gui-v2/pages/signin.vue | 86 ++++++++++++++----------- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/packages/nc-gui-v2/assets/style-v2.scss b/packages/nc-gui-v2/assets/style-v2.scss index 924885aea2..c86dad1642 100644 --- a/packages/nc-gui-v2/assets/style-v2.scss +++ b/packages/nc-gui-v2/assets/style-v2.scss @@ -53,14 +53,6 @@ h1, h2, h3, h4, h5, h6, p, label, button, textarea, select { @apply dark:(!text-white); } -.v-field__field { - @apply bg-white dark:(!bg-gray-900 text-white); - - input { - @apply bg-white dark:(!bg-gray-700) !appearance-none my-1 border-1 border-solid border-primary/50 rounded; - } -} - .nc-icon { @apply color-transition; } diff --git a/packages/nc-gui-v2/pages/signin.vue b/packages/nc-gui-v2/pages/signin.vue index 9f69bca447..b6be5c9f49 100644 --- a/packages/nc-gui-v2/pages/signin.vue +++ b/packages/nc-gui-v2/pages/signin.vue @@ -16,19 +16,8 @@ definePageMeta({ title: 'title.headLogin', }) -useHead({ - meta: [ - { - hid: t('msg.info.loginMsg'), - name: t('msg.info.loginMsg'), - content: t('msg.info.loginMsg'), - }, - ], -}) - let error = $ref(null) - -const valid = ref() +const valid = $ref(false) const form = reactive({ email: '', @@ -38,17 +27,27 @@ const form = reactive({ const formRules = { email: [ // E-mail is required - (v: string) => !!v || t('msg.error.signUpRules.emailReqd'), + { required: true, message: t('msg.error.signUpRules.emailReqd') }, // E-mail must be valid format - (v: string) => isEmail(v) || t('msg.error.signUpRules.emailInvalid'), + { + validator: (_: unknown, v: string) => { + return new Promise((resolve, reject) => { + if (isEmail(v)) return resolve(true) + reject(new Error(t('msg.error.signUpRules.emailInvalid'))) + }) + }, + message: t('msg.error.signUpRules.emailInvalid'), + }, ], password: [ // Password is required - (v: string) => !!v || t('msg.error.signUpRules.passwdRequired'), + { required: true, message: t('msg.error.signUpRules.passwdRequired') }, ], } const signIn = async () => { + if (!valid) return + error = null try { const { token } = await $api.auth.signin(form) @@ -70,10 +69,13 @@ const resetError = () => { + + From 9f34821268b1ceaea8417399165f82ab2e6cd55e Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 19 Jul 2022 21:22:07 +0200 Subject: [PATCH 04/10] fix(gui-v2): hide sidebar when not signed in --- packages/nc-gui-v2/app.vue | 2 +- packages/nc-gui-v2/composables/useGlobalState.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui-v2/app.vue b/packages/nc-gui-v2/app.vue index d7c8c12b19..25db1fe8c4 100644 --- a/packages/nc-gui-v2/app.vue +++ b/packages/nc-gui-v2/app.vue @@ -87,7 +87,7 @@ const sidebarOpen = computed({ { /** State */ const initialState: StoredState = { token: null, user: null, lang: preferredLanguage, darkMode: prefersDarkMode } - /** is sidebar open */ - const sidebarOpen = ref(breakpoints.greater('md').value) - /** saves a reactive state, any change to these values will write/delete to localStorage */ const storage = $(useStorage(storageKey, initialState)) @@ -88,6 +85,9 @@ export const useGlobalState = (): GlobalState => { () => !!(!!token && token !== '' && payload && payload.exp && payload.exp > timestamp / 1000), ) + /** is sidebar open */ + const sidebarOpen = ref(signedIn.value && breakpoints.greater('md').value) + /** Actions */ /** Sign out by deleting the token from localStorage */ const signOut: Actions['signOut'] = () => { From 23f74bb343f981fb851faa2816cb2229ae24aa84 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 19 Jul 2022 21:25:08 +0200 Subject: [PATCH 05/10] chore(gui-v2): remove important prefix --- packages/nc-gui-v2/app.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nc-gui-v2/app.vue b/packages/nc-gui-v2/app.vue index 25db1fe8c4..d4947e6b12 100644 --- a/packages/nc-gui-v2/app.vue +++ b/packages/nc-gui-v2/app.vue @@ -23,7 +23,7 @@ const sidebarOpen = computed({