From 6a5869fd3ec0fcd99a8084e5c5cc585e7b3447a6 Mon Sep 17 00:00:00 2001 From: Kamila Date: Fri, 9 Aug 2024 08:02:43 +0200 Subject: [PATCH] WIP --- frontend/components.d.ts | 6 ++ frontend/src/components/Inputs/InputHour.vue | 2 - .../src/components/Inputs/InputUsername.vue | 19 ++-- .../src/components/UserSettings/UserName.vue | 101 +++++++++--------- frontend/src/pages/Settings.vue | 57 ++++++---- 5 files changed, 104 insertions(+), 81 deletions(-) diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 47afcd874..b9927d45f 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -32,6 +32,7 @@ declare module 'vue' { BFormInput: typeof import('bootstrap-vue-next')['BFormInput'] BFormInvalidFeedback: typeof import('bootstrap-vue-next')['BFormInvalidFeedback'] BFormSelect: typeof import('bootstrap-vue-next')['BFormSelect'] + BFormTextarea: typeof import('bootstrap-vue-next')['BFormTextarea'] BImg: typeof import('bootstrap-vue-next')['BImg'] BInputGroup: typeof import('bootstrap-vue-next')['BInputGroup'] BLink: typeof import('bootstrap-vue-next')['BLink'] @@ -41,6 +42,7 @@ declare module 'vue' { BNavbarBrand: typeof import('bootstrap-vue-next')['BNavbarBrand'] BNavbarNav: typeof import('bootstrap-vue-next')['BNavbarNav'] BNavItem: typeof import('bootstrap-vue-next')['BNavItem'] + BPagination: typeof import('bootstrap-vue-next')['BPagination'] BPopover: typeof import('bootstrap-vue-next')['BPopover'] Breadcrumb: typeof import('./src/components/Breadcrumb/breadcrumb.vue')['default'] BRow: typeof import('bootstrap-vue-next')['BRow'] @@ -78,12 +80,16 @@ declare module 'vue' { GddTransactionListFooter: typeof import('./src/components/GddTransactionListFooter.vue')['default'] GdtAmount: typeof import('./src/components/Template/ContentHeader/GdtAmount.vue')['default'] GdtTransactionList: typeof import('./src/components/GdtTransactionList.vue')['default'] + IBiArrowDownCircle: typeof import('~icons/bi/arrow-down-circle')['default'] + IBiArrowUpCircle: typeof import('~icons/bi/arrow-up-circle')['default'] IBiBellFill: typeof import('~icons/bi/bell-fill')['default'] IBiCaretDownFill: typeof import('~icons/bi/caret-down-fill')['default'] + IBiChatDots: typeof import('~icons/bi/chat-dots')['default'] IBiCheck: typeof import('~icons/bi/check')['default'] IBiEye: typeof import('~icons/bi/eye')['default'] IBiEyeSlash: typeof import('~icons/bi/eye-slash')['default'] IBiLayers: typeof import('~icons/bi/layers')['default'] + IBiPencil: typeof import('~icons/bi/pencil')['default'] IBiPeople: typeof import('~icons/bi/people')['default'] IBiQuestion: typeof import('~icons/bi/question')['default'] IBiTrash: typeof import('~icons/bi/trash')['default'] diff --git a/frontend/src/components/Inputs/InputHour.vue b/frontend/src/components/Inputs/InputHour.vue index ef8f93c0c..760c3b7e5 100644 --- a/frontend/src/components/Inputs/InputHour.vue +++ b/frontend/src/components/Inputs/InputHour.vue @@ -27,8 +27,6 @@ - + @@ -27,7 +27,7 @@
- + {{ errors?.[0] }}
@@ -51,19 +51,19 @@ const props = defineProps({ name: { type: String, default: 'username' }, label: { type: String, default: 'Username' }, placeholder: { type: String, default: 'Username' }, - value: { type: String, required: true }, + modelValue: { type: String, required: true }, showAllErrors: { type: Boolean, default: false }, immediate: { type: Boolean, default: false }, unique: { type: Boolean, required: true }, }) -const currentValue = ref(props?.value) +const currentValue = ref(props?.modelValue) const { errors, valid, validated, ariaInput, ariaMsg } = useForm({ initialValues: currentValue.value, }) -const emit = defineEmits(['input', 'set-is-edit']) +const emit = defineEmits(['update:modelValue', 'set-is-edit']) const labelFor = computed(() => `${props.name}-input-field`) @@ -71,7 +71,8 @@ const emitSetIsEdit = (bool) => { emit('set-is-edit', bool) } -watch(currentValue, (newValue) => { - emit('input', newValue) -}) +const updateValue = (e) => { + currentValue.value = e + emit('update:modelValue', e) +} diff --git a/frontend/src/components/UserSettings/UserName.vue b/frontend/src/components/UserSettings/UserName.vue index 57b488f67..813486843 100644 --- a/frontend/src/components/UserSettings/UserName.vue +++ b/frontend/src/components/UserSettings/UserName.vue @@ -7,50 +7,54 @@ data-test="username-input-group" :description="$t('settings.emailInfo')" > - +
-
- - - - - - -
- {{ $t('settings.username.no-username') }} -
-
-
- - -
- - {{ $t('form.save') }} - -
-
-
- + + + + + + +
+ {{ $t('settings.username.no-username') }} +
+
+
+ + +
+ + {{ $t('form.save') }} + +
+
+
+
-
@@ -59,6 +63,7 @@ import { ref, computed } from 'vue' import { useStore } from 'vuex' import { useMutation } from '@vue/apollo-composable' +import { useI18n } from 'vue-i18n' import { BRow, BCol, BFormInput, BFormGroup, BForm, BButton } from 'bootstrap-vue-next' import InputUsername from '@/components/Inputs/InputUsername' import { updateUserInfos } from '@/graphql/mutations' @@ -67,9 +72,10 @@ import { useForm } from 'vee-validate' const store = useStore() const { toastError, toastSuccess } = useAppToast() +const { t } = useI18n() const isEdit = ref(false) -const username = ref(store.state.username || '') +const username = ref(store.state.username || '123') const usernameUnique = ref(false) const rules = { required: true, @@ -80,13 +86,12 @@ const rules = { usernameUnique: true, } -const { handleSubmit, invalid } = useForm({ +const { handleSubmit, errors } = useForm({ initialValues: username.value, }) - const { mutate: updateUserInfo } = useMutation(updateUserInfos) -const onSubmit = async () => { +const onSubmit = handleSubmit(async () => { try { await updateUserInfo({ alias: username.value }) store.commit('username', username.value) @@ -94,11 +99,7 @@ const onSubmit = async () => { } catch (error) { toastError(error.message) } -} - -const disabled = (invalid) => { - return !newUsername.value || invalid -} +}) const setIsEdit = (bool) => { username.value = store.state.username @@ -106,6 +107,10 @@ const setIsEdit = (bool) => { } const newUsername = computed(() => username.value !== store.state.username) + +const disabled = (err) => { + return !newUsername.value || !!Object.keys(err).length +}