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
+}