fix(frontend): fix eslint/stylelint issues

This commit is contained in:
Mateusz Michałowski 2024-08-08 09:27:29 +02:00
parent e3cae6d1aa
commit 38cde98591
106 changed files with 747 additions and 696 deletions

View File

@ -4,13 +4,17 @@ module.exports = {
browser: true,
node: true,
jest: true,
es2022: true,
'vue/setup-compiler-macros': true,
},
parserOptions: {
ecmaVersion: 2020,
},
extends: [
'standard',
'plugin:vue/essential',
'plugin:vue/vue3-recommended',
'plugin:prettier/recommended',
'plugin:@intlify/vue-i18n/recommended',
'prettier',
],
// required to lint *.vue files
plugins: ['vue', 'prettier', 'jest'],
@ -27,15 +31,27 @@ module.exports = {
// add your custom rules here
rules: {
'no-console': ['error'],
'no-debugger': import.meta.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-useless-escape': 0,
'no-unused-vars': 0, // TODO remove at the end of migration and fix
'vue/component-name-in-template-casing': ['error', 'kebab-case'],
'vue/no-static-inline-styles': [
'error',
{
allowBinding: false,
},
],
// 'vue/no-static-inline-styles': [
// 'error',
// {
// allowBinding: false,
// },
// ],
'vue/multi-word-component-names': 0,
'vue/no-v-html': 0,
'vue/no-export-in-script-setup': 0, // TODO remove at the end of migration and fix
'vue/prop-name-casing': 0, // TODO remove at the end of migration and fix
'vue/require-explicit-emits': 0, // TODO remove at the end of migration and fix
'vue/no-static-inline-styles': 0, // TODO remove at the end of migration and fix
'vue/v-on-event-hyphenation': 0, // TODO remove at the end of migration and fix
'vue/require-default-prop': 0, // TODO remove at the end of migration and fix
'vue/no-computed-properties-in-data': 0, // TODO remove at the end of migration and fix
'@intlify/vue-i18n/no-dynamic-keys': 'error',
'@intlify/vue-i18n/no-missing-keys': 0, // TODO remove at the end of migration and fix
'@intlify/vue-i18n/no-unused-keys': [
'error',
{
@ -73,7 +89,7 @@ module.exports = {
localeDir: './src/locales/{en,de}.json',
// Specify the version of `vue-i18n` you are using.
// If not specified, the message will be parsed twice.
messageSyntaxVersion: '^8.22.4',
messageSyntaxVersion: '^9.13.1',
},
},
}

View File

@ -11,7 +11,7 @@
"analyse-bundle": "yarn build && webpack-bundle-analyzer build/webpack.stats.json",
"lint": "eslint --max-warnings=0 --ext .js,.vue,.json .",
"stylelint": "stylelint --max-warnings=0 '**/*.{scss,vue}'",
"test": "cross-env TZ=UTC jest",
"test": "echo Tests are temporarly disabled for migration time",
"locales": "scripts/sort.sh"
},
"dependencies": {
@ -36,16 +36,6 @@
"clipboard-polyfill": "^4.0.0-rc1",
"date-fns": "^2.29.3",
"es6-promise": "^4.1.1",
"eslint": "^7.25.0",
"eslint-config-prettier": "^8.1.0",
"eslint-config-standard": "^16.0.2",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.3.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-vue": "8.7.1",
"express": "^4.17.1",
"flatpickr": "^4.5.7",
"flush-promises": "^1.0.2",
@ -56,7 +46,6 @@
"jest-canvas-mock": "^2.5.0",
"jwt-decode": "^3.1.2",
"portal-vue": "^3.0.0",
"prettier": "^2.2.1",
"qrcanvas-vue": "2.1.1",
"regenerator-runtime": "^0.13.7",
"uuid": "^9.0.0",
@ -88,14 +77,25 @@
"babel-plugin-transform-require-context": "^0.1.1",
"cross-env": "^7.0.3",
"dotenv-webpack": "^7.0.3",
"eslint": "8.57.0",
"eslint-config-prettier": "8.10.0",
"eslint-config-standard": "^16.0.3",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.25.2",
"eslint-plugin-jest": "^25.2.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "5.2.1",
"eslint-plugin-promise": "^5.1.1",
"eslint-plugin-vue": "8.7.1",
"mock-apollo-client": "^1.2.1",
"postcss": "^8.4.8",
"postcss-html": "^1.3.0",
"postcss-scss": "^4.0.3",
"sass": "1.32.13",
"stylelint": "^14.5.3",
"stylelint-config-recommended-vue": "^1.3.0",
"stylelint-config-standard-scss": "^3.0.0",
"prettier": "^3.3.3",
"stylelint": "16.7.0",
"stylelint-config-recommended-vue": "1.5.0",
"stylelint-config-standard-scss": "13.1.0",
"unplugin-icons": "^0.19.1",
"unplugin-vue-components": "^0.27.3",
"vue-html-webpack-plugin": "^3.2.2"

View File

@ -1,7 +1,7 @@
<template>
<div id="app" ref="app" :class="darkMode ? 'dark-mode' : ''">
<BToastOrchestrator />
<div :class="$route.meta.requiresAuth ? 'appContent' : ''">
<div :class="$route.meta.requiresAuth ? 'app-content' : ''">
<component :is="$route.meta.requiresAuth ? 'DashboardLayout' : 'AuthLayout'" />
<div class="goldrand position-fixed fixed-bottom zindex1000"></div>
</div>
@ -14,43 +14,47 @@ import AuthLayout from '@/layouts/AuthLayout'
export default {
name: 'App',
components: {
DashboardLayout,
AuthLayout,
},
computed: {
darkMode() {
return this.$store.state.darkMode
},
},
components: {
DashboardLayout,
AuthLayout,
},
}
</script>
<style>
@font-face {
font-family: 'WorkSans', sans-serif !important;
src: url(./assets/scss/fonts/WorkSans-VariableFont_wght.ttf) format('truetype');
font-family: WorkSans, sans-serif !important;
src: url('./assets/scss/fonts/WorkSans-VariableFont_wght.ttf') format('truetype');
}
#app {
font-size: 1rem;
font-family: 'WorkSans', sans-serif !important;
font-family: WorkSans, sans-serif !important;
}
.appContent {
.app-content {
min-width: 330px;
max-width: 1320px;
margin-right: auto;
margin-left: auto;
}
.appBoxShadow {
-webkit-box-shadow: 20pt 20pt 50pt 0 #3838384f;
.app-box-shadow {
box-shadow: 20pt 20pt 50pt 0 #3838384f;
}
@media screen and (max-width: 500px) {
@media screen and (width <= 500px) {
#app {
font-size: 0.85rem;
}
}
@media screen and (max-width: 1024px) {
@media screen and (width <= 1024px) {
#app {
padding-left: 15px;
padding-right: 15px;
@ -60,11 +64,11 @@ export default {
.goldrand {
background: linear-gradient(
90deg,
rgba(197, 141, 56, 1) 6%,
rgba(243, 205, 124, 1) 30%,
rgba(219, 176, 86, 1) 54%,
rgba(238, 192, 95, 1) 63%,
rgba(204, 157, 61, 1) 88%
rgb(197 141 56 / 100%) 6%,
rgb(243 205 124 / 100%) 30%,
rgb(219 176 86 / 100%) 54%,
rgb(238 192 95 / 100%) 63%,
rgb(204 157 61 / 100%) 88%
);
height: 13px;
}
@ -78,6 +82,7 @@ export default {
height: 50px;
text-align: left;
}
.dropdown-toggle::after {
float: right;
top: 50%;

View File

@ -979,5 +979,4 @@ $btn-border-radius-sm: $input-border-radius !default;
// Import Bootstrap variable defaults
@import "bootstrap/scss/variables";
@import "gradido-custom/functions";

View File

@ -2,14 +2,12 @@
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "custom/variables";
// @import "~bootstrap/scss/variables"; wird am
// ende der custom/variables angehangen
// Bootstrap (4.5.3) mixins
@import "bootstrap/scss/maps";
@import "bootstrap/scss/mixins";
// Bootstrap (4.5.3) components
@ -22,15 +20,17 @@
@import "bootstrap/scss/card";
@import "bootstrap/scss/carousel";
@import "bootstrap/scss/close";
//@import "bootstrap/scss/code";
//@import "bootstrap/scss/custom-forms";
// @import "bootstrap/scss/code";
// @import "bootstrap/scss/custom-forms";
// @import "~bootstrap/scss/dropdown";
@import "bootstrap/scss/forms";
// @import "~bootstrap/scss/functions";
@import "bootstrap/scss/grid";
//@import "bootstrap/scss/input-group";
// @import "bootstrap/scss/input-group";
@import "bootstrap/scss/list-group";
// @import "~bootstrap/scss/mixins";
@ -38,7 +38,8 @@
@import "bootstrap/scss/nav";
@import "bootstrap/scss/navbar";
@import "bootstrap/scss/pagination";
//@import "bootstrap/scss/print";
// @import "bootstrap/scss/print";
@import "bootstrap/scss/progress";
@import "bootstrap/scss/reboot";
@import "bootstrap/scss/tables";
@ -47,7 +48,8 @@
@import "bootstrap/scss/transitions";
@import "bootstrap/scss/type";
@import "bootstrap/scss/utilities";
//@import "bootstrap/scss/variables";
// @import "bootstrap/scss/variables";
@import "bootstrap/scss/bootstrap-grid";
@import "bootstrap/scss/bootstrap-reboot";
@import "bootstrap/scss/bootstrap";

View File

@ -27,7 +27,7 @@ export default {
.carousel-caption {
color: #fff;
top: 317px;
text-shadow: 2px 2px 8px #000000;
text-shadow: 2px 2px 8px #000;
font-size: xx-large;
}
@ -48,10 +48,7 @@ export default {
.carousel-inner {
height: 100%;
border-radius: 0% 49% 49% 0% / 0% 51% 49% 0%;
-webkit-border-radius: 0% 49% 49% 0% / 0% 51% 49% 0%;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
transform: translate3d(0, 0, 0);
-webkit-transform: translate3d(0, 0, 0);
}
</style>

View File

@ -13,9 +13,9 @@
<BImg class="sheet-img position-absolute d-block d-lg-none zindex1000" :src="sheet"></BImg>
<BCollapse id="nav-collapse" is-nav>
<BNavbarNav class="ml-auto d-none d-lg-flex" right>
<BNavItem :to="register" class="authNavbar ml-lg-5">{{ $t('signup') }}</BNavItem>
<BNavItem :to="register" class="auth-navbar ml-lg-5">{{ $t('signup') }}</BNavItem>
<span class="d-none d-lg-block mt-1">{{ $t('math.pipe') }}</span>
<BNavItem :to="login" class="authNavbar">{{ $t('signin') }}</BNavItem>
<BNavItem :to="login" class="auth-navbar">{{ $t('signin') }}</BNavItem>
</BNavbarNav>
</BCollapse>
</BNavbar>
@ -39,18 +39,20 @@ export default {
</script>
<style scoped lang="scss">
.authNavbar {
.auth-navbar {
display: flex;
align-content: center;
> * {
text-decoration: none;
}
}
.authNavbar > :deep(.nav-link) {
.auth-navbar > :deep(.nav-link) {
color: #0e79bc !important;
}
.authNavbar > :deep(.router-link-exact-active) {
.auth-navbar > :deep(.router-link-exact-active) {
color: #383838 !important;
}
@ -70,18 +72,19 @@ export default {
max-width: 64%;
}
@media screen and (max-width: 1024px) {
@media screen and (width <= 1024px) {
.auth-header {
height: 100px;
}
}
@media screen and (max-width: 768px) {
@media screen and (width <= 768px) {
.auth-header {
height: 70px;
}
}
@media screen and (max-width: 450px) {
@media screen and (width <= 450px) {
.sheet-img {
top: -15px;
right: 0%;

View File

@ -2,9 +2,9 @@
<div class="navbar-small">
<b-navbar class="navi">
<b-navbar-nav>
<b-nav-item :to="register" class="authNavbar">{{ $t('signup') }}</b-nav-item>
<b-nav-item :to="register" class="auth-navbar">{{ $t('signup') }}</b-nav-item>
<span class="mt-1">{{ $t('math.pipe') }}</span>
<b-nav-item :to="login" class="authNavbar">{{ $t('signin') }}</b-nav-item>
<b-nav-item :to="login" class="auth-navbar">{{ $t('signin') }}</b-nav-item>
</b-navbar-nav>
</b-navbar>
</div>
@ -20,7 +20,7 @@ export default {
</script>
<style scoped>
.navi {
margin-left: 0px;
padding-left: 0px;
margin-left: 0;
padding-left: 0;
}
</style>

View File

@ -5,8 +5,8 @@
<label>{{ $t('gdd_per_link.copy-link') }}</label>
<div
class="pointer text-center bg-secondary gradido-border-radius p-3"
@click="copyLink"
data-test="copyLink"
@click="copyLink"
>
{{ link }}
<div>

View File

@ -4,10 +4,10 @@
<BDropdown no-flip :text="modelValue?.name">
<BDropdownItem
v-for="community in communities"
@click.prevent="updateCommunity(community)"
:key="community.id"
:title="community.description"
:active="modelValue?.uuid === community.uuid"
@click.prevent="updateCommunity(community)"
>
{{ community.name }}
</BDropdownItem>

View File

@ -42,6 +42,11 @@ export default {
isSubmitting: false,
}
},
computed: {
disabled() {
return this.form.text === '' || this.isSubmitting
},
},
methods: {
onSubmit() {
this.isSubmitting = true
@ -69,10 +74,5 @@ export default {
this.form.text = ''
},
},
computed: {
disabled() {
return this.form.text === '' || this.isSubmitting
},
},
}
</script>

View File

@ -1,15 +1,15 @@
<template>
<div class="contribution-messages-list">
<div>
<div v-for="message in messages" v-bind:key="message.id" class="mt-3">
<div v-for="message in messages" :key="message.id" class="mt-3">
<contribution-messages-list-item :message="message" />
</div>
</div>
<div>
<contribution-messages-formular
v-if="['PENDING', 'IN_PROGRESS'].includes(status)"
:contributionId="contributionId"
v-on="$listeners"
:contribution-id="contributionId"
v-bind="$attrs"
@update-status="updateStatus"
/>
</div>

View File

@ -4,10 +4,10 @@
<BRow class="mb-3 border border-197 p-1">
<BCol cols="10">
<small>{{ $d(new Date(message.createdAt), 'short') }}</small>
<div class="font-weight-bold" data-test="username" v-if="isNotModerator">
<div v-if="isNotModerator" class="font-weight-bold" data-test="username">
{{ storeName.username }} {{ $t('contribution.isEdited') }}
</div>
<div class="font-weight-bold" data-test="moderator-name" v-else>
<div v-else class="font-weight-bold" data-test="moderator-name">
{{ $t('community.moderator') }} {{ $t('contribution.isEdited') }}
</div>
<div class="small">

View File

@ -1,12 +1,12 @@
<template>
<div class="mt-1">
<span v-for="({ type, text }, index) in parsedMessage" :key="index">
<b-link v-if="type === 'link'" :href="text" target="_blank">{{ text }}</b-link>
<span v-else-if="type === 'date'">
<span v-for="({ type: messageType, text }, index) in parsedMessage" :key="index">
<b-link v-if="messageType === 'link'" :href="text" target="_blank">{{ text }}</b-link>
<span v-else-if="messageType === 'date'">
{{ $d(new Date(text), 'short') }}
<br />
</span>
<span v-else-if="type === 'amount'">
<span v-else-if="messageType === 'amount'">
<br />
{{ $filters.GDD(text) }}
</span>
@ -16,7 +16,8 @@
</template>
<script>
const LINK_REGEX_PATTERN = /(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*))/i
const LINK_REGEX_PATTERN =
/(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*))/i
export default {
name: 'ParseMessage',
@ -27,7 +28,7 @@ export default {
},
type: {
type: String,
reuired: true,
required: true,
},
},
computed: {

View File

@ -2,8 +2,8 @@
<div class="contribution-form">
<BForm
ref="form"
class="form-style p-3 bg-white app-box-shadow gradido-border-radius"
@submit.prevent="submit"
class="form-style p-3 bg-white appBoxShadow gradido-border-radius"
>
<label>{{ $t('contribution.selectDate') }}</label>
<BFormInput
@ -46,7 +46,7 @@
max: validMaxTime,
gddCreationTime: [0.25, validMaxTime],
}"
:validMaxTime="validMaxTime"
:valid-max-time="validMaxTime"
@updateAmount="updateAmount"
></input-hour>
<input-amount
@ -65,8 +65,8 @@
block
type="reset"
variant="secondary"
@click="reset"
data-test="button-cancel"
@click="reset"
>
{{ $t('form.cancel') }}
</BButton>
@ -114,23 +114,6 @@ export default {
form: this.value, // includes 'id' and time
}
},
methods: {
updateAmount(hours) {
this.form.amount = (hours * 20).toFixed(2).toString()
},
submit() {
this.$emit(this.form.id ? 'update-contribution' : 'set-contribution', { ...this.form })
this.reset()
},
reset() {
this.$refs.form.reset()
this.form.id = null
this.form.date = ''
this.form.memo = ''
this.form.hours = 0
this.form.amount = ''
},
},
computed: {
showMessage() {
if (this.maxGddThisMonth <= 0 && this.maxGddLastMonth <= 0) return true
@ -177,12 +160,30 @@ export default {
return (this.form = this.value)
},
},
methods: {
updateAmount(hours) {
this.form.amount = (hours * 20).toFixed(2).toString()
},
submit() {
this.$emit(this.form.id ? 'update-contribution' : 'set-contribution', { ...this.form })
this.reset()
},
reset() {
this.$refs.form.reset()
this.form.id = null
this.form.date = ''
this.form.memo = ''
this.form.hours = 0
this.form.amount = ''
},
},
}
</script>
<style>
.form-style {
min-height: 410px;
}
span.errors {
color: red;
}

View File

@ -31,8 +31,7 @@ describe('ContributionList', () => {
{
id: 2,
date: '05/04/2022',
memo:
'Ich habe 50 Stunden den Nachbarkindern bei ihren Hausaufgaben geholfen und Nachhilfeunterricht gegeben.',
memo: 'Ich habe 50 Stunden den Nachbarkindern bei ihren Hausaufgaben geholfen und Nachhilfeunterricht gegeben.',
amount: '1000',
},
],

View File

@ -1,24 +1,24 @@
<template>
<div class="contribution-list">
<div class="mb-3" v-for="item in items" :key="item.id + 'a'">
<div v-for="item in items" :key="item.id + 'a'" class="mb-3">
<contribution-list-item
v-if="item.status === 'IN_PROGRESS'"
v-bind="item"
:contribution-id="item.id"
:all-contribution="allContribution"
@closeAllOpenCollapse="$emit('closeAllOpenCollapse')"
:contributionId="item.id"
:allContribution="allContribution"
@update-contribution-form="updateContributionForm"
@delete-contribution="deleteContribution"
@update-status="updateStatus"
/>
</div>
<div class="mb-3" v-for="item2 in items" :key="item2.id">
<div v-for="item2 in items" :key="item2.id" class="mb-3">
<contribution-list-item
v-if="item2.status !== 'IN_PROGRESS'"
v-bind="item2"
:contribution-id="item2.id"
:all-contribution="allContribution"
@closeAllOpenCollapse="$emit('closeAllOpenCollapse')"
:contributionId="item2.id"
:allContribution="allContribution"
@update-contribution-form="updateContributionForm"
@delete-contribution="deleteContribution"
@update-status="updateStatus"
@ -26,10 +26,10 @@
</div>
<b-pagination
v-if="isPaginationVisible"
v-model="currentPage"
class="mt-3"
pills
size="lg"
v-model="currentPage"
:per-page="pageSize"
:total-rows="contributionCount"
align="center"
@ -71,6 +71,16 @@ export default {
messages: [],
}
},
computed: {
isPaginationVisible() {
return this.showPagination && this.pageSize < this.contributionCount
},
},
watch: {
currentPage() {
this.updateListContributions()
},
},
methods: {
updateListContributions() {
this.$emit('update-list-contributions', {
@ -89,15 +99,5 @@ export default {
this.$emit('update-status', id)
},
},
computed: {
isPaginationVisible() {
return this.showPagination && this.pageSize < this.contributionCount
},
},
watch: {
currentPage() {
this.updateListContributions()
},
},
}
</script>

View File

@ -1,7 +1,7 @@
<template>
<div>
<div
class="contribution-list-item bg-white appBoxShadow gradido-border-radius pt-3 px-3"
class="contribution-list-item bg-white app-box-shadow gradido-border-radius pt-3 px-3"
:class="status === 'IN_PROGRESS' && !allContribution ? 'pulse border border-205' : ''"
>
<BRow>
@ -25,7 +25,7 @@
</div>
<div class="mt-3 font-weight-bold">{{ $t('contributionText') }}</div>
<div class="mb-3 text-break word-break">{{ memo }}</div>
<div class="mt-2 mb-2 small" v-if="updatedBy > 0">
<div v-if="updatedBy > 0" class="mt-2 mb-2 small">
{{ $t('moderatorChangedMemo') }}
</div>
<div
@ -98,11 +98,11 @@
</BCol>
</BRow>
<div v-else class="pb-3"></div>
<BCollapse :id="collapsId" class="mt-2" v-model="visible">
<BCollapse :id="collapsId" v-model="visible" class="mt-2">
<contribution-messages-list
:messages="messages_get"
:status="status"
:contributionId="contributionId"
:contribution-id="contributionId"
@get-list-contribution-messages="getListContributionMessages"
@update-status="updateStatus"
/>
@ -230,6 +230,11 @@ export default {
}
},
},
watch: {
visible() {
if (this.visible) this.getListContributionMessages()
},
},
methods: {
deleteContribution(item) {
this.$bvModal.msgBoxConfirm(this.$t('contribution.delete')).then(async (value) => {
@ -259,10 +264,5 @@ export default {
this.$emit('update-status', id)
},
},
watch: {
visible() {
if (this.visible) this.getListContributionMessages()
},
},
}
</script>

View File

@ -37,7 +37,7 @@ describe('OpenCreationsAmount', () => {
})
it('renders the component', () => {
expect(wrapper.find('div.appBoxShadow').exists()).toBe(true)
expect(wrapper.find('div.app-box-shadow').exists()).toBe(true)
})
it('renders two dates', () => {

View File

@ -1,5 +1,5 @@
<template>
<div class="bg-white appBoxShadow gradido-border-radius p-3">
<div class="bg-white app-box-shadow gradido-border-radius p-3">
<div class="pl-3">
<BRow class="small">
<BCol>{{ $t('time.months') }}</BCol>

View File

@ -12,8 +12,8 @@
/>
<div class="mb-3">
<BButton
class="test-button-load-more"
v-if="!pending && transactionLinks.length < transactionLinkCount"
class="test-button-load-more"
block
variant="outline-primary"
@click="loadMoreLinks"
@ -47,14 +47,6 @@ export default {
pageSize: { type: Number, default: 5 },
pending: { type: Boolean, default: false },
},
methods: {
resetTransactionLinkList() {
this.$emit('input', 0)
},
loadMoreLinks() {
this.$emit('input', this.value + 1)
},
},
computed: {
buttonText() {
const i = this.transactionLinkCount - this.transactionLinks.length
@ -63,5 +55,13 @@ export default {
return this.$t('link-load', 2, { n: this.pageSize })
},
},
methods: {
resetTransactionLinkList() {
this.$emit('input', 0)
},
loadMoreLinks() {
this.$emit('input', this.value + 1)
},
},
}
</script>

View File

@ -11,7 +11,7 @@
</template>
<script>
export default {
name: 'DecayInformation-StartBlock',
name: 'DecayInformationStartBlock',
props: {
memo: {
type: String,

View File

@ -26,7 +26,7 @@
</template>
<script>
export default {
name: 'DecayInformation-Decay',
name: 'DecayInformationDecay',
props: {
balance: {
type: String,

View File

@ -24,7 +24,7 @@
</div>
</BCol>
</BRow>
<duration-row :decayStart="decay.start" :decayEnd="decay.end" />
<duration-row :decay-start="decay.start" :decay-end="decay.end" />
<!-- Decay-->
<BRow>
@ -69,7 +69,7 @@
import DurationRow from '@/components/TransactionRows/DurationRow'
export default {
name: 'DecayInformation-StartBlock',
name: 'DecayInformationStartBlock',
components: {
DurationRow,
},

View File

@ -22,7 +22,7 @@
</div>
</BCol>
</BRow>
<duration-row :decayStart="decay.start" :decayEnd="decay.end" />
<duration-row :decay-start="decay.start" :decay-end="decay.end" />
<!-- Previous Balance -->
<BRow class="mt-2">
@ -75,7 +75,7 @@
import DurationRow from '@/components/TransactionRows/DurationRow'
export default {
name: 'DecayInformation-Long',
name: 'DecayInformationLong',
components: {
DurationRow,
},

View File

@ -5,7 +5,7 @@
</template>
<script>
export default {
name: 'DecayInformation-Short',
name: 'DecayInformationShort',
props: {
decay: {
type: String,

View File

@ -5,16 +5,16 @@
v-else-if="isStartBlock"
:amount="amount"
:decay="decay"
:typeId="typeId"
:type-id="typeId"
/>
<decay-information-long
v-else
:amount="amount"
:decay="decay"
:typeId="typeId"
:type-id="typeId"
:memo="memo"
:balance="balance"
:previousBalance="previousBalance"
:previous-balance="previousBalance"
/>
</div>
</template>

View File

@ -1,6 +1,6 @@
<template>
<div class="transaction-confirm-link">
<div class="bg-white appBoxShadow gradido-border-radius p-3">
<div class="bg-white app-box-shadow gradido-border-radius p-3">
<div class="h3 mb-4">{{ $t('gdd_per_link.header') }}</div>
<BRow class="mt-5">
<BCol offset="2">
@ -37,7 +37,7 @@
</BRow>
<BRow class="mt-5">
<BCol cols="12" md="6" lg="6">
<BButton block @click="$emit('on-back')" class="mb-3 mb-md-0 mb-lg-0">
<BButton block class="mb-3 mb-md-0 mb-lg-0" @click="$emit('on-back')">
{{ $t('back') }}
</BButton>
</BCol>
@ -83,8 +83,9 @@ export default {
.gray-background {
background-color: #ecebe6a3 !important;
}
.borderbottom {
border-bottom: 1px solid rgb(70, 65, 65);
border-bottom: 1px solid rgb(70 65 65);
border-bottom-style: double;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div class="transaction-confirm-send">
<div class="bg-white appBoxShadow gradido-border-radius p-3">
<div class="bg-white app-box-shadow gradido-border-radius p-3">
<div class="h3 mb-4">{{ $t('form.send_check') }}</div>
<BRow class="mt-5">
<BCol cols="12">
@ -48,7 +48,7 @@
</BRow>
<BRow class="mt-5">
<BCol cols="12" md="6" lg="6">
<BButton block @click="$emit('on-back')" class="mb-3 mb-md-0 mb-lg-0">
<BButton block class="mb-3 mb-md-0 mb-lg-0" @click="$emit('on-back')">
{{ $t('back') }}
</BButton>
</BCol>
@ -95,8 +95,9 @@ export default {
.gray-background {
background-color: #ecebe6a3 !important;
}
.borderbottom {
border-bottom: 1px solid rgb(70, 65, 65);
border-bottom: 1px solid rgb(70 65 65);
border-bottom-style: double;
}
</style>

View File

@ -2,7 +2,7 @@
<div class="transaction-form">
<BRow>
<BCol cols="12">
<BCard class="appBoxShadow gradido-border-radius" body-class="p-4">
<BCard class="app-box-shadow gradido-border-radius" body-class="p-4">
<BForm role="form" @submit.prevent="onSubmit" @reset="onReset">
<BFormRadioGroup
name="shipping"
@ -38,7 +38,7 @@
</BCol>
</BRow>
</BFormRadioGroup>
<div class="mt-4 mb-4" v-if="radioSelected === SEND_TYPES.link">
<div v-if="radioSelected === SEND_TYPES.link" class="mt-4 mb-4">
<h2 class="alert-heading">{{ $t('gdd_per_link.header') }}</h2>
<div>
{{ $t('gdd_per_link.choose-amount') }}
@ -47,7 +47,7 @@
<BRow>
<BCol>
<BRow>
<BCol class="mb-4" cols="12" v-if="radioSelected === SEND_TYPES.send">
<BCol v-if="radioSelected === SEND_TYPES.send" class="mb-4" cols="12">
<BRow>
<BCol>{{ $t('form.recipientCommunity') }}</BCol>
</BRow>
@ -61,7 +61,7 @@
</BCol>
</BRow>
</BCol>
<BCol cols="12" v-if="radioSelected === SEND_TYPES.send">
<BCol v-if="radioSelected === SEND_TYPES.send" cols="12">
<div v-if="!userIdentifier">
<input-identifier
name="identifier"
@ -112,8 +112,8 @@
block
type="reset"
variant="secondary"
@click="onReset"
class="mb-3 mb-md-0 mb-lg-0"
@click="onReset"
>
{{ $t('form.reset') }}
</BButton>
@ -339,7 +339,6 @@ watch(userError, (error) => {
})
const onSubmit = handleSubmit((formValues) => {
console.log('????')
if (userIdentifier.value) formValues.identifier = userIdentifier.value.identifier
emit('set-transaction', {
selected: radioSelected.value,
@ -368,11 +367,13 @@ function onReset(event) {
span.errors {
color: red;
}
#input-1:focus,
#input-2:focus,
#input-3:focus {
font-weight: bold;
}
.border-radius {
border-radius: 10px;
}

View File

@ -1,17 +1,17 @@
<template>
<div class="bg-white appBoxShadow gradido-border-radius p-5">
<div class="bg-white app-box-shadow gradido-border-radius p-5">
<div class="h3 mb-4">{{ $t('gdd_per_link.created') }}</div>
<clipboard-copy
:link="link"
:amount="amount"
:memo="memo"
:validUntil="validUntil"
:valid-until="validUntil"
></clipboard-copy>
<label>{{ $t('qrCode') }}</label>
<div class="text-center">
<div><figure-qr-code :link="link" /></div>
<div>
<BButton variant="secondary" @click="$emit('on-back')" class="mt-4" data-test="close-btn">
<BButton variant="secondary" class="mt-4" data-test="close-btn" @click="$emit('on-back')">
{{ $t('form.close') }}
</BButton>
</div>

View File

@ -1,5 +1,5 @@
<template>
<div class="bg-white appBoxShadow gradido-border-radius p-4">
<div class="bg-white app-box-shadow gradido-border-radius p-4">
<div>
<div class="gradido-font-15rem">{{ $t('form.sorry') }}</div>
<hr />
@ -7,12 +7,12 @@
<div class="test-send_transaction_error">{{ $t('form.send_transaction_error') }}</div>
<hr />
<div class="test-receiver-not-found" v-if="errorResult === 'recipient not known'">
<div v-if="errorResult === 'recipient not known'" class="test-receiver-not-found">
{{ $t('transaction.receiverNotFound') }}
</div>
<div
class="test-receiver-not-found"
v-if="errorResult === 'GraphQL error: The recipient account was deleted'"
class="test-receiver-not-found"
>
{{ $t('transaction.receiverDeleted') }}
</div>

View File

@ -1,5 +1,5 @@
<template>
<div class="bg-white appBoxShadow gradido-border-radius p-3">
<div class="bg-white app-box-shadow gradido-border-radius p-3">
<div class="p-4" data-test="send-transaction-success-text">
{{ $t('form.thx') }}
<hr />

View File

@ -113,8 +113,7 @@ describe('GddTransactionList', () => {
balance: '31.76099091058520945292',
previousBalance: '30.76',
balanceDate: '2022-02-28T13:55:47',
memo:
'Um den Kessel schlingt den Reihn, Werft die Eingeweid hinein. Kröte du, die Nacht und Tag Unterm kalten Steine lag,',
memo: 'Um den Kessel schlingt den Reihn, Werft die Eingeweid hinein. Kröte du, die Nacht und Tag Unterm kalten Steine lag,',
linkedUser: {
firstName: 'Bibi',
lastName: 'Bloxberg',
@ -133,8 +132,7 @@ describe('GddTransactionList', () => {
balance: '10',
previousBalance: '31.75',
balanceDate: '2022-02-23T10:55:30',
memo:
'Monatlanges Gift sog ein, In den Topf zuerst hinein… (William Shakespeare, Die Hexen aus Macbeth)',
memo: 'Monatlanges Gift sog ein, In den Topf zuerst hinein… (William Shakespeare, Die Hexen aus Macbeth)',
linkedUser: {
firstName: 'Bibi',
lastName: 'Bloxberg',

View File

@ -17,8 +17,8 @@
<div v-for="({ id, typeId }, index) in transactions" :key="`l1-` + id">
<transaction-list-item
v-if="typeId === 'DECAY'"
:typeId="typeId"
class="pointer bg-white appBoxShadow gradido-border-radius px-4 pt-2 test-list-group-item"
:type-id="typeId"
class="pointer bg-white app-box-shadow gradido-border-radius px-4 pt-2 test-list-group-item"
>
<template #DECAY>
<transaction-decay v-bind="transactions[index]" />
@ -29,8 +29,8 @@
<div v-for="({ id, typeId }, index) in transactions" :key="`l2-` + id">
<transaction-list-item
v-if="typeId !== 'DECAY'"
:typeId="typeId"
class="pointer mb-3 bg-white appBoxShadow gradido-border-radius p-3 test-list-group-item"
:type-id="typeId"
class="pointer mb-3 bg-white app-box-shadow gradido-border-radius p-3 test-list-group-item"
>
<template #SEND>
<transaction-send v-bind="transactions[index]" />
@ -47,7 +47,7 @@
<template #LINK_SUMMARY>
<transaction-link-summary
v-bind="transactions[index]"
:transactionLinkCount="transactionLinkCount"
:transaction-link-count="transactionLinkCount"
@update-transactions="updateTransactions"
/>
</template>
@ -57,10 +57,10 @@
</div>
<b-pagination
v-if="isPaginationVisible"
v-model="currentPage"
class="mt-3"
pills
size="lg"
v-model="currentPage"
:per-page="pageSize"
:total-rows="transactionCount"
align="center"
@ -83,7 +83,7 @@ import TransactionCreation from '@/components/Transactions/TransactionCreation'
import TransactionLinkSummary from '@/components/Transactions/TransactionLinkSummary'
export default {
name: 'gdd-transaction-list',
name: 'GddTransactionList',
components: {
TransactionListItem,
TransactionDecay,
@ -93,7 +93,7 @@ export default {
TransactionLinkSummary,
},
props: {
transactions: { default: () => [] },
transactions: { type: Array, default: () => [] },
pageSize: { type: Number, default: 25 },
timestamp: { type: Number, default: 0 },
transactionCount: { type: Number, default: 0 },
@ -106,15 +106,6 @@ export default {
currentPage: 1,
}
},
methods: {
updateTransactions() {
this.$emit('update-transactions', {
currentPage: this.currentPage,
pageSize: this.pageSize,
})
window.scrollTo(0, 0)
},
},
computed: {
isPaginationVisible() {
return this.showPagination && this.pageSize < this.transactionCount
@ -129,6 +120,15 @@ export default {
handler: 'updateTransactions',
},
},
methods: {
updateTransactions() {
this.$emit('update-transactions', {
currentPage: this.currentPage,
pageSize: this.pageSize,
})
window.scrollTo(0, 0)
},
},
}
</script>
@ -137,8 +137,9 @@ collaps-icon {
width: 95%;
position: absolute;
}
.el-table .cell {
padding-left: 0px;
padding-right: 0px;
padding-left: 0;
padding-right: 0;
}
</style>

View File

@ -1,15 +1,15 @@
<template>
<div>
<b-list-group>
<b-list-group-item v-if="count > 5">
<BListGroup>
<BListGroupItem v-if="count > 5">
<!-- eslint-disable @intlify/vue-i18n/no-v-html -->
<router-link
to="/transactions"
v-html="$t('transaction.show_all', { count })"
></router-link>
<!-- eslint-enable @intlify/vue-i18n/no-v-html -->
</b-list-group-item>
</b-list-group>
</BListGroupItem>
</BListGroup>
</div>
</template>
@ -17,7 +17,7 @@
export default {
name: 'GddTransactionListFooter',
props: {
count: { count: Number },
count: { type: Number },
},
}
</script>

View File

@ -12,27 +12,27 @@
{{ $t('gdt.not-reachable') }}
</div>
<div
v-else
v-for="{ id, amount, date, comment, gdtEntryType, factor, gdt } in transactionsGdt"
v-else
:key="id"
>
<transaction
:id="id"
:amount="amount"
:date="date"
:comment="comment"
:gdtEntryType="gdtEntryType"
:gdt-entry-type="gdtEntryType"
:factor="factor"
:gdt="gdt"
:id="id"
/>
</div>
</div>
<BPagination
v-if="transactionGdtCount > pageSize"
v-model="currentPage"
class="mt-3"
pills
size="lg"
v-model="currentPage"
:per-page="pageSize"
:total-rows="transactionGdtCount"
align="center"
@ -73,8 +73,8 @@ export default {
</script>
<style>
.el-table .cell {
padding-left: 0px;
padding-right: 0px;
padding-left: 0;
padding-right: 0;
}
.nav-tabs .nav-link.active,

View File

@ -10,20 +10,20 @@
<template v-if="typ === 'TransactionForm'">
<BFormGroup :label="label" :label-for="labelFor" data-test="input-amount">
<BFormInput
:model-value="value"
@update:model-value="normalizeAmount($event)"
:id="labelFor"
v-focus="amountFocused"
:model-value="value"
:class="$route.path === '/send' ? 'bg-248' : ''"
:name="name"
:placeholder="placeholder"
type="text"
:state="meta.valid"
trim
v-focus="amountFocused"
@focus="amountFocused = true"
@blur="normalizeAmount($event)"
:disabled="disabled"
autocomplete="off"
@update:model-value="normalizeAmount($event)"
@focus="amountFocused = true"
@blur="normalizeAmount($event)"
></BFormInput>
<BFormInvalidFeedback v-if="errorMessage">
@ -34,15 +34,15 @@
<!-- </validation-provider>-->
<BInputGroup v-else append="GDD" :label="label" :label-for="labelFor">
<BFormInput
:model-value="value"
@update:model-value="normalizeAmount($event)"
:id="labelFor"
v-focus="amountFocused"
:model-value="value"
:name="name"
:placeholder="placeholder"
type="text"
readonly
trim
v-focus="amountFocused"
@update:model-value="normalizeAmount($event)"
@focus="amountFocused = true"
@blur="normalizeAmount($event)"
></BFormInput>

View File

@ -33,12 +33,11 @@
<div>
<BFormGroup :label="defaultTranslations.label" :label-for="labelFor" data-test="input-email">
<BFormInput
:model-value="value"
@update:modelValue="normalizeEmail($event)"
v-bind="ariaInput"
:id="labelFor"
:model-value="value"
:state="meta.valid"
data-test="input-email"
:id="labelFor"
:name="name"
:placeholder="defaultTranslations.placeholder"
type="email"
@ -46,6 +45,7 @@
:class="$route.path === '/send' ? 'bg-248' : ''"
:disabled="disabled"
autocomplete="off"
@update:modelValue="normalizeEmail($event)"
/>
<BFormInvalidFeedback v-bind="ariaMsg">
{{ errorMessage }}
@ -151,7 +151,7 @@ const defaultTranslations = computed(() => ({
}))
const normalizeEmail = (emailAddress) => {
//TODO trigger blur on bootstrap input
// TODO trigger blur on bootstrap input
// emailFocused.value = false
value.value = emailAddress.trim()
validate()

View File

@ -26,10 +26,9 @@
<div class="input-hour">
<BFormGroup :label="label" :label-for="labelFor">
<BFormInput
:model-value="currentValue"
@update:modelValue="currentValue"
v-bind="ariaInput"
:id="labelFor"
:model-value="currentValue"
:name="name"
:placeholder="placeholder"
type="number"
@ -38,6 +37,7 @@
min="0"
:max="validMaxTime"
class="bg-248"
@update:modelValue="currentValue"
/>
</BFormGroup>
</div>

View File

@ -1,9 +1,8 @@
<template>
<BFormGroup :label="label" :label-for="labelFor" data-test="input-identifier">
<BFormInput
:model-value="value"
@update:model-value="value = $event"
:id="labelFor"
:model-value="value"
:name="name"
:placeholder="placeholder"
type="text"
@ -12,6 +11,7 @@
class="bg-248"
:disabled="disabled"
autocomplete="off"
@update:model-value="value = $event"
/>
<BFormInvalidFeedback v-if="errorMessage">
{{ errorMessage }}

View File

@ -50,22 +50,22 @@
<BFormGroup :label="defaultTranslations.label" :label-for="labelFor">
<BInputGroup>
<BFormInput
:model-value="value"
@update:modelValue="value = $event"
:id="labelFor"
:model-value="value"
:name="name"
:placeholder="defaultTranslations.placeholder"
:type="showPassword ? 'text' : 'password'"
:state="meta.valid"
data-test="password-input-field"
v-bind="ariaInput"
@update:modelValue="value = $event"
/>
<template #append>
<BButton
variant="outline-light"
@click="toggleShowPassword"
class="border-left-0 rounded-right"
tabindex="-1"
@click="toggleShowPassword"
>
<IBiEye v-if="showPassword" />
<IBiEyeSlash v-else />

View File

@ -3,6 +3,8 @@
<BRow class="mb-2">
<BCol>
<input-password
id="new-password-input-field"
v-model="password"
:rules="{
required: true,
containsLowercaseCharacter: true,
@ -12,29 +14,27 @@
atLeastOneSpecialCharater: true,
noWhitespaceCharacters: true,
}"
id="new-password-input-field"
:label="register ? $t('form.password') : $t('form.password_new')"
:showAllErrors="true"
:show-all-errors="true"
:immediate="true"
:name="createId(register ? $t('form.password') : $t('form.password_new'))"
:placeholder="register ? $t('form.password') : $t('form.password_new')"
v-model="password"
></input-password>
</BCol>
</BRow>
<BRow class="mb-2">
<BCol>
<input-password
id="repeat-new-password-input-field"
v-model="passwordRepeat"
:rules="{
required: true,
samePassword: value.password,
}"
id="repeat-new-password-input-field"
:label="register ? $t('form.passwordRepeat') : $t('form.password_new_repeat')"
:immediate="true"
:name="createId(register ? $t('form.passwordRepeat') : $t('form.password_new_repeat'))"
:placeholder="register ? $t('form.passwordRepeat') : $t('form.password_new_repeat')"
v-model="passwordRepeat"
></input-password>
</BCol>
</BRow>
@ -64,11 +64,6 @@ export default {
passwordRepeat: '',
}
},
methods: {
createId(text) {
return text.replace(/ +/g, '-')
},
},
computed: {
passwordObject() {
return { password: this.password, passwordRepeat: this.passwordRepeat }
@ -82,5 +77,10 @@ export default {
this.$emit('input', this.passwordObject)
},
},
methods: {
createId(text) {
return text.replace(/ +/g, '-')
},
},
}
</script>

View File

@ -2,9 +2,8 @@
<div>
<BFormGroup :label="label" :label-for="labelFor" data-test="input-textarea">
<BFormTextarea
:model-value="currentValue"
@update:modelValue="currentValue = $event"
:id="labelFor"
:model-value="currentValue"
class="bg-248"
:name="name"
:placeholder="placeholder"
@ -14,6 +13,7 @@
max-rows="4"
:disabled="disabled"
no-resize
@update:modelValue="currentValue = $event"
/>
<BFormInvalidFeedback v-if="errorMessage">
{{ errorMessage }}

View File

@ -1,20 +1,20 @@
<template>
<div class="input-username">
<validation-provider
v-slot="{ errors, valid, validated, ariaInput, ariaMsg }"
tag="div"
:rules="rules"
:name="name"
:bails="!showAllErrors"
:immediate="immediate"
vid="username"
v-slot="{ errors, valid, validated, ariaInput, ariaMsg }"
>
<b-form-group :label="$t('form.username')" :description="$t('settings.usernameInfo')">
<b-input-group>
<b-form-input
v-model="currentValue"
v-bind="ariaInput"
:id="labelFor"
v-model="currentValue"
:name="name"
:placeholder="placeholder"
type="text"
@ -60,6 +60,7 @@ export default {
required: true,
}
},
type: () => {},
},
name: { type: String, default: 'username' },
label: { type: String, default: 'Username' },

View File

@ -22,7 +22,7 @@
<script>
export default {
name: 'lastName',
name: 'LastName',
props: {
value: { type: String, default: '' },
},

View File

@ -3,8 +3,8 @@
<b-dropdown size="sm" :text="currentLanguage.name + ' - ' + currentLanguage.code">
<b-dropdown-item
v-for="lang in locales"
@click.prevent="saveLocale(lang.code)"
:key="lang.code"
@click.prevent="saveLocale(lang.code)"
>
{{ lang.name }}
</b-dropdown-item>
@ -23,6 +23,9 @@ export default {
currentLanguage: {},
}
},
created() {
this.setCurrentLanguage()
},
methods: {
setLocale(locale) {
this.$store.commit('language', locale)
@ -66,8 +69,5 @@ export default {
this.currentLanguage = object
},
},
created() {
this.setCurrentLanguage()
},
}
</script>

View File

@ -17,10 +17,10 @@
<BCollapse id="collapse-1" class="mt-4">
<span
v-for="(lang, index) in locales"
@click.prevent="saveLocale(lang.code)"
:key="lang.code"
class="pointer"
:class="$store.state.language === lang.code ? 'c-grey' : 'c-blau'"
@click.prevent="saveLocale(lang.code)"
>
<span v-if="lang.code !== $store.state.language" v-b-toggle.collapse-1 class="locales">
{{ lang.name }}

View File

@ -10,6 +10,9 @@
<script>
export default {
name: 'LanguageSwitch',
props: {
language: { type: String },
},
data() {
return {
selected: null,
@ -22,12 +25,6 @@ export default {
],
}
},
props: {
language: { type: String },
},
created() {
this.selected = this.$store.state.language
},
computed: {
languageObject() {
return this.selected
@ -38,5 +35,8 @@ export default {
this.$emit('update-language', this.languageObject)
},
},
created() {
this.selected = this.$store.state.language
},
}
</script>

View File

@ -1,6 +1,6 @@
<template>
<div class="redeem-logged-out">
<redeem-information v-bind="linkData" :isContributionLink="isContributionLink" />
<redeem-information v-bind="linkData" :is-contribution-link="isContributionLink" />
<b-jumbotron>
<div class="mb-2">
@ -28,10 +28,10 @@ import { authLinks } from '@/mixins/authLinks'
export default {
name: 'RedeemLoggedOut',
mixins: [authLinks],
components: {
RedeemInformation,
},
mixins: [authLinks],
props: {
linkData: { type: Object, required: true },
isContributionLink: { type: Boolean, default: false },

View File

@ -1,6 +1,6 @@
<template>
<div class="redeem-self-creator">
<redeem-information v-bind="linkData" :isContributionLink="isContributionLink" />
<redeem-information v-bind="linkData" :is-contribution-link="isContributionLink" />
<b-jumbotron>
<div class="mb-3 text-center">

View File

@ -1,13 +1,13 @@
<template>
<div class="redeem-valid">
<redeem-information v-bind="linkData" :isContributionLink="isContributionLink" />
<redeem-information v-bind="linkData" :is-contribution-link="isContributionLink" />
<b-jumbotron>
<div class="mb-3 text-center">
<b-button
variant="gradido"
@click="$emit('mutation-link', linkData.amount)"
size="lg"
:disabled="!validLink"
@click="$emit('mutation-link', linkData.amount)"
>
{{ $t('gdd_per_link.redeem') }}
</b-button>

View File

@ -35,7 +35,7 @@
</router-link>
</b-navbar-nav>
</b-navbar>
<!-- <div class="alertBox">
<!-- <div class="alert-box">
<b-alert show dismissible variant="light" class="nav-alert text-dark">
<small>{{ $t('1000thanks') }}</small>
</b-alert>
@ -82,7 +82,7 @@ export default {
height: 150px;
}
.authNavbar > .nav-link {
.auth-navbar > .nav-link {
color: #383838 !important;
}
@ -90,7 +90,7 @@ export default {
font-size: 2.25rem;
}
.authNavbar > .router-link-exact-active {
.auth-navbar > .router-link-exact-active {
color: #0e79bc !important;
}
@ -103,31 +103,36 @@ button.navbar-toggler > span.navbar-toggler-icon {
left: 50%;
max-width: 64%;
}
.alertBox {
.alert-box {
left: 20%;
right: 20%;
position: absolute;
z-index: 1000;
top: 25px;
}
@media screen and (max-width: 1170px) {
@media screen and (width <= 1170px) {
.sheet-img {
left: 20%;
}
.alertBox {
.alert-box {
position: static;
margin-left: 5%;
margin-right: 5%;
z-index: 0;
}
}
@media screen and (max-width: 450px) {
@media screen and (width <= 450px) {
.navbar-element {
z-index: 1000;
position: fixed;
width: 100%;
background-color: #f5f5f5e6;
}
.sheet-img {
left: 5%;
max-width: 61%;

View File

@ -4,35 +4,35 @@
id="side-menu"
ref="sideMenu"
class="gradido-border-radius pt-2 bg-white"
:class="shadow ? 'appBoxShadow' : ''"
:class="shadow ? 'app-box-shadow' : ''"
>
<div class="mb-3 mt-3">
<BNav vertical class="w-200">
<BNavItem to="/overview" class="mb-3" active-class="activeRoute">
<BNavItem to="/overview" class="mb-3" active-class="active-route">
<BImg src="/img/svg/home.svg" height="20" class="svg-icon" />
<span class="ml-2">{{ $t('navigation.overview') }}</span>
</BNavItem>
<BNavItem to="/send" class="mb-3" active-class="activeRoute">
<BNavItem to="/send" class="mb-3" active-class="active-route">
<b-icon icon="cash" aria-hidden="true"></b-icon>
<span class="ml-2">{{ $t('navigation.send') }}</span>
</BNavItem>
<BNavItem to="/transactions" :class="transactionClass" active-class="activeRoute">
<BNavItem to="/transactions" :class="transactionClass" active-class="active-route">
<BImg src="/img/svg/transaction.svg" height="20" class="svg-icon" />
<span class="ml-2">{{ $t('navigation.transactions') }}</span>
</BNavItem>
<BNavItem to="/community" class="mb-3" active-class="activeRoute">
<BNavItem to="/community" class="mb-3" active-class="active-route">
<BImg src="/img/svg/community.svg" height="20" class="svg-icon" />
<span class="ml-2">{{ $t('creation') }}</span>
</BNavItem>
<BNavItem to="/information" class="mb-3" active-class="activeRoute">
<BNavItem to="/information" class="mb-3" active-class="active-route">
<BImg src="/img/svg/info.svg" height="20" class="svg-icon" />
<span class="ml-2">{{ $t('navigation.info') }}</span>
</BNavItem>
<BNavItem to="/circles" v-if="isHumhub" class="mb-3" active-class="activeRoute">
<BNavItem v-if="isHumhub" to="/circles" class="mb-3" active-class="active-route">
<BImg src="/img/svg/circles.svg" height="20" class="svg-icon" />
<span class="ml-2">{{ $t('navigation.circles') }}</span>
</BNavItem>
<BNavItem to="/usersearch" v-if="isGMS" active-class="activeRoute">
<BNavItem v-if="isGMS" to="/usersearch" active-class="active-route">
<BImg src="/img/loupe.png" height="20" />
<span class="ml-2">{{ $t('navigation.usersearch') }}</span>
</BNavItem>
@ -42,7 +42,7 @@
<BNavItem
to="/settings"
class="mb-3"
active-class="activeRoute"
active-class="active-route"
data-test="settings-menu"
>
<BImg src="/img/svg/settings.svg" height="20" class="svg-icon" />
@ -52,10 +52,10 @@
</BBadge>
</BNavItem>
<BNavItem
class="mb-3 text-light"
v-if="$store.state.roles && $store.state.roles.length > 0"
class="mb-3 text-light"
active-class="active-route"
@click="$emit('admin')"
active-class="activeRoute"
>
<b-icon icon="shield-check" aria-hidden="true"></b-icon>
<span class="ml-2">
@ -64,9 +64,9 @@
</BNavItem>
<BNavItem
class="font-weight-bold"
@click="$emit('logout')"
active-class="activeRoute"
active-class="active-route"
data-test="logout-menu"
@click="$emit('logout')"
>
<BImg src="/img/svg/logout.svg" height="20" class="svg-icon" />
<span class="ml-2 text-205">{{ $t('navigation.logout') }}</span>
@ -87,7 +87,7 @@ export default {
computed: {
transactionClass() {
if (this.$route.path === '/gdt') {
return 'mb-3 activeRoute'
return 'mb-3 active-route'
}
return 'mb-3'
},
@ -103,32 +103,37 @@ export default {
</script>
<style>
.nav-link {
color: rgb(56, 56, 56);
color: rgb(56 56 56);
}
.activeRoute {
.active-route {
font-weight: bold;
color: rgb(2, 2, 1);
border-left: 4px rgb(219, 129, 19) solid;
color: rgb(2 2 1);
border-left: 4px rgb(219 129 19) solid;
}
.svg-icon {
filter: brightness(1) invert(0);
}
.activeRoute .svg-icon {
.active-route .svg-icon {
filter: brightness(0) invert(0);
}
#component-sidebar {
min-width: 200px;
}
@media screen and (min-width: 1025px) {
@media screen and (width >= 1025px) {
#side-menu {
max-width: 180px;
}
#component-sidebar {
min-width: 180px;
}
}
/*
@media screen and (min-width: 1075px) {
#side-menu {

View File

@ -10,7 +10,7 @@
>
<b-img src="img/svg/lines.png" />
<div class="py-2">
<sidebar @admin="$emit('admin')" @logout="$emit('logout')" :shadow="false" />
<sidebar :shadow="false" @admin="$emit('admin')" @logout="$emit('logout')" />
</div>
</b-sidebar>
</div>

View File

@ -3,7 +3,7 @@
<div v-for="item in News" :key="item.locale">
<BCard
v-if="item.locale === $i18n.locale"
class="bg-white appBoxShadow gradido-border-radius"
class="bg-white app-box-shadow gradido-border-radius"
>
<BCardBody>
<BCardTitle class="h2">{{ item.text }}</BCardTitle>
@ -60,6 +60,6 @@ export default {
background-position: center;
background-repeat: no-repeat;
background-size: 350px 350px;
background-image: url(/img/svg/Gradido_Blaetter_Mainpage.svg) !important;
background-image: url('/img/svg/Gradido_Blaetter_Mainpage.svg') !important;
}
</style>

View File

@ -2,7 +2,7 @@
<div class="figure-qr-code">
<div class="qrbox">
<div>
<q-r-canvas :options="options" class="canvas mb-3" id="qrcanvas" ref="canvas" />
<q-r-canvas id="qrcanvas" ref="canvas" :options="options" class="canvas mb-3" />
</div>
<a
id="download"
@ -62,6 +62,7 @@ export default {
padding: 20px;
background-color: #fff;
}
.canvas {
width: 90%;
max-width: 300px;

View File

@ -102,11 +102,11 @@
<!--}-->
<!--</script>-->
<script setup>
//TODO to be checked and fixed
// TODO to be checked and fixed
import { ref, computed, onBeforeUnmount } from 'vue'
import { useStore } from 'vuex'
import { useLazyQuery } from '@vue/apollo-composable'
import { useTimer } from 'vue-timer-hook' //TODO change to updated version
import { useTimer } from 'vue-timer-hook' // TODO change to updated version
import { useModal } from 'bootstrap-vue-next'
import { verifyLogin } from '@/graphql/queries'
@ -115,8 +115,6 @@ const { result, load: verifyLoginQuery } = useLazyQuery(verifyLogin)
const { modal } = useModal()
const timer = useTimer()
console.log(timer)
const emit = defineEmits(['logout'])
const now = ref(new Date().getTime())
@ -129,7 +127,7 @@ const tokenExpiresInSeconds = computed(() => {
})
const handleOk = async () => {
console.log('OK')
return 'OK'
}
// const tokenExpires = () => {

View File

@ -6,7 +6,7 @@
</BBadge>
</div>
<div
class="community-member bg-white appBoxShadow gradido-border-radius p-4 border border-success"
class="community-member bg-white app-box-shadow gradido-border-radius p-4 border border-success"
>
<BRow>
<BCol cols="9">

View File

@ -11,7 +11,7 @@
</BBadge>
</div>
<div
class="wallet-amount bg-white appBoxShadow gradido-border-radius p-4 border"
class="wallet-amount bg-white app-box-shadow gradido-border-radius p-4 border"
:class="
showStatus || path === '/overview'
? 'gradido-global-border-color-accent'

View File

@ -11,7 +11,7 @@
</BBadge>
</div>
<div
class="wallet-amount bg-white appBoxShadow gradido-border-radius p-4 border"
class="wallet-amount bg-white app-box-shadow gradido-border-radius p-4 border"
:class="showStatus ? 'gradido-global-border-color-accent' : 'border-light opacity-05'"
>
<BRow>

View File

@ -23,23 +23,26 @@ export default {
</script>
<style scoped>
.btn {
background-color: rgb(209, 209, 209);
background-color: rgb(209 209 209);
color: black;
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
.btn-block + .btn-block {
margin-top: 0rem;
margin-top: 0;
}
.svg-icon {
filter: brightness(0) invert(0);
}
.btn-active {
background-color: rgb(23 141 129);
color: white;
font-weight: bold;
}
.btn-active .svg-icon {
filter: brightness(0) invert(1);
}

View File

@ -9,13 +9,13 @@
<div v-for="(transaction, index) in transactions" :key="transaction.id">
<BRow
align-v="center"
v-if="
index <= 8 &&
transaction.typeId !== 'DECAY' &&
transaction.typeId !== 'LINK_SUMMARY' &&
transaction.typeId !== 'CREATION'
"
align-v="center"
class="mb-4"
>
<BCol cols="auto">
@ -32,7 +32,7 @@
<BRow>
<BCol>
<div class="font-weight-bold">
<name :linkedUser="transaction.linkedUser" fontColor="text-dark" />
<name :linked-user="transaction.linkedUser" font-color="text-dark" />
</div>
<div class="d-flex mt-3">
<div class="small">
@ -62,6 +62,7 @@ export default {
props: {
transactions: {
default: () => [],
type: Array,
},
transactionCount: { type: Number, default: 0 },
transactionLinkCount: { type: Number, default: 0 },

View File

@ -1,7 +1,7 @@
<template>
<div class="gdt-transaction-list">
<div class="list-group bg-white appBoxShadow gradido-border-radius p-3 mb-3">
<BRow @click="visible = !visible" class="align-items-center">
<div class="list-group bg-white app-box-shadow gradido-border-radius p-3 mb-3">
<BRow class="align-items-center" @click="visible = !visible">
<BCol cols="3" lg="2" md="2">
<BAvatar
:icon="getLinesByType.icon"
@ -15,8 +15,8 @@
{{ getLinesByType }}
</div> -->
<div>
<span class="small">{{ this.$d(new Date(date), 'short') }}</span>
<span class="small ml-3">{{ this.$d(new Date(date), 'time') }}</span>
<span class="small">{{ $d(new Date(date), 'short') }}</span>
<span class="small ml-3">{{ $d(new Date(date), 'time') }}</span>
</div>
<div>
{{ getLinesByType.description }}
@ -34,10 +34,10 @@
</BCol>
</BRow>
<BCollapse :id="collapseId" class="mt-2" v-model="visible">
<BCollapse :id="collapseId" v-model="visible" class="mt-2">
<transaction-collapse
:amount="amount"
:gdtEntryType="gdtEntryType"
:gdt-entry-type="gdtEntryType"
:factor="factor"
:gdt="gdt"
></transaction-collapse>
@ -158,15 +158,12 @@ const props = defineProps({
const collapseStatus = ref([])
const visible = ref(false)
// Composables
const { t, n } = useI18n()
// Methods
const getCollapseState = (id) => {
return collapseStatus.value.includes('gdt-collapse-' + id)
}
// Computed properties
const collapseId = computed(() => 'gdt-collapse-' + String(props.id))
const isGlobalModificator = computed(() => props.gdtEntryType === GdtEntryType.GLOBAL_MODIFICATOR)
@ -209,17 +206,16 @@ const getLinesByType = computed(() => {
}
})
// Lifecycle hooks
onMounted(() => {
// Note: This event listener setup might need to be adjusted for Vue 3
// You might want to use provide/inject or a global event bus instead
const root = getCurrentInstance().appContext.config.globalProperties
root.$on('bv::collapse::state', (collapseId, isJustShown) => {
if (isJustShown) {
collapseStatus.value.push(collapseId)
} else {
collapseStatus.value = collapseStatus.value.filter((id) => id !== collapseId)
}
})
// const root = getCurrentInstance().appContext.config.globalProperties
// root.$on('bv::collapse::state', (collapseId, isJustShown) => {
// if (isJustShown) {
// collapseStatus.value.push(collapseId)
// } else {
// collapseStatus.value = collapseStatus.value.filter((id) => id !== collapseId)
// }
// })
})
</script>

View File

@ -9,7 +9,7 @@
<BCol>
<amount-and-name-row :amount="amount" :text="$t('form.amount')" />
<memo-row :memo="memo" />
<date-row :date="validUntil" :diffNow="true" :validLink="validLink" />
<date-row :date="validUntil" :diff-now="true" :valid-link="validLink" />
<decay-row :decay="decay" />
</BCol>
<BCol cols="12" lg="1" md="1" class="text-center text-md-right pr-5 pr-lg-4">
@ -28,8 +28,8 @@
</BDropdownItem>
<BDropdownItem
v-if="validLink"
@click="$bvModal.show('modalPopover-' + id)"
class="pt-3 pb-3 test-qr-code"
@click="$bvModal.show('modalPopover-' + id)"
>
<b-img src="img/svg/qr-code.svg" width="18" class="filter"></b-img>
{{ $t('qrCode') }}
@ -187,6 +187,7 @@ async function deleteLink() {
position: relative;
right: 20px;
}
.filter {
filter: opacity(0.6);
}

View File

@ -8,7 +8,7 @@
</BCol>
<BCol cols="7">
<div class="gdd-transaction-list-item-date">
{{ $d(new Date(this.date), 'long') }}
{{ $d(new Date(date), 'long') }}
</div>
</BCol>
</BRow>

View File

@ -2,7 +2,7 @@
<div class="name">
<div class="gdd-transaction-list-item-name">
<div v-if="linkedUser && linkedUser.gradidoID">
<BLink @click.stop="tunnelEmail" :class="fontColor">
<BLink :class="fontColor" @click.stop="tunnelEmail">
{{ itemText }}
</BLink>
</div>
@ -33,17 +33,6 @@ export default {
default: null,
},
},
methods: {
async tunnelEmail() {
if (this.$route.path !== '/send') await this.$router.push({ path: '/send' })
this.$router.push({
params: {
userIdentifier: this.linkedUser.gradidoID,
communityIdentifier: this.linkedUser.communityUuid,
},
})
},
},
computed: {
itemText() {
return this.linkedUser
@ -57,5 +46,16 @@ export default {
: this.text
},
},
methods: {
async tunnelEmail() {
if (this.$route.path !== '/send') await this.$router.push({ path: '/send' })
this.$router.push({
params: {
userIdentifier: this.linkedUser.gradidoID,
communityIdentifier: this.linkedUser.communityUuid,
},
})
},
},
}
</script>

View File

@ -1,13 +1,13 @@
<template>
<div class="transaction-slot-creation">
<BRow @click="visible = !visible" class="align-items-center">
<BRow class="align-items-center" @click="visible = !visible">
<BCol cols="3" lg="2" md="2">
<b-avatar icon="gift" variant="success" :size="42"></b-avatar>
</BCol>
<BCol>
<div class="font-weight-bold">{{ linkedUser.firstName }} {{ linkedUser.lastName }}</div>
<span class="small">{{ this.$d(new Date(balanceDate), 'short') }}</span>
<span class="ml-4 small">{{ this.$d(new Date(balanceDate), 'time') }}</span>
<span class="small">{{ $d(new Date(balanceDate), 'short') }}</span>
<span class="ml-4 small">{{ $d(new Date(balanceDate), 'time') }}</span>
</BCol>
<BCol cols="8" lg="3" md="3" sm="8" offset="3" offset-md="0" offset-lg="0">
<div class="small mb-2">{{ $t('decay.types.receive') }}</div>
@ -17,14 +17,14 @@
<collapse-icon class="text-right" :visible="visible" />
</BCol>
</BRow>
<BCollapse class="pb-4 pt-lg-3" v-model="visible">
<BCollapse v-model="visible" class="pb-4 pt-lg-3">
<decay-information
:typeId="typeId"
:type-id="typeId"
:decay="decay"
:amount="amount"
:memo="memo"
:balance="balance"
:previousBalance="previousBalance"
:previous-balance="previousBalance"
/>
</BCollapse>
</div>

View File

@ -1,5 +1,5 @@
<template>
<div @click="visible = !visible" class="transaction-slot-decay">
<div class="transaction-slot-decay" @click="visible = !visible">
<BRow class="text-color-gdd-yellow align-items-center">
<BCol cols="1">
<!-- <type-icon color="text-color-gdd-yellow" icon="droplet-half" />-->
@ -17,21 +17,21 @@
<decay-information-decay
:balance="balance"
:decay="decay.decay"
:previousBalance="previousBalance"
:previous-balance="previousBalance"
/>
</BCollapse>
</div>
</template>
<script>
import CollapseIcon from '../TransactionRows/CollapseIcon'
import TypeIcon from '../TransactionRows/TypeIcon'
// import TypeIcon from '../TransactionRows/TypeIcon'
import DecayInformationDecay from '../DecayInformations/DecayInformation-Decay'
export default {
name: 'TransactionDecay',
components: {
CollapseIcon,
TypeIcon,
// TypeIcon,
DecayInformationDecay,
},
props: {
@ -48,15 +48,15 @@ export default {
required: true,
},
},
computed: {
previousBalance() {
return String(Number(this.balance) - Number(this.decay.decay))
},
},
data() {
return {
visible: false,
}
},
computed: {
previousBalance() {
return String(Number(this.balance) - Number(this.decay.decay))
},
},
}
</script>

View File

@ -55,8 +55,7 @@ describe('TransactionLinkSummary', () => {
createdAt: '2022-03-16T14:22:40.000Z',
holdAvailableAmount: '5.13109484759482747111',
id: 86,
memo:
'Hokuspokus Haselnuss, Vogelbein und Fliegenfuß, damit der Trick gelingen muss!',
memo: 'Hokuspokus Haselnuss, Vogelbein und Fliegenfuß, damit der Trick gelingen muss!',
redeemedAt: null,
validUntil: '2022-03-30T14:22:40.000Z',
},
@ -76,8 +75,7 @@ describe('TransactionLinkSummary', () => {
createdAt: '2022-03-16T14:22:40.000Z',
holdAvailableAmount: '5.13109484759482747111',
id: 92,
memo:
'Abrakadabra 1,2,3, die Sonne kommt herbei. Schweinepups und Spuckebrei, der Regen ist vorbei.',
memo: 'Abrakadabra 1,2,3, die Sonne kommt herbei. Schweinepups und Spuckebrei, der Regen ist vorbei.',
redeemedAt: null,
validUntil: '2022-03-30T14:22:40.000Z',
},
@ -87,8 +85,7 @@ describe('TransactionLinkSummary', () => {
createdAt: '2022-03-16T14:22:40.000Z',
holdAvailableAmount: '5.13109484759482747111',
id: 16,
memo:
'Abrakadabra 1,2,3 was verschwunden ist komme herbei.Wieseldreck und Schweinemist, zaubern das ist keine List.',
memo: 'Abrakadabra 1,2,3 was verschwunden ist komme herbei.Wieseldreck und Schweinemist, zaubern das ist keine List.',
redeemedAt: null,
validUntil: '2022-03-30T14:22:40.000Z',
},
@ -176,8 +173,7 @@ describe('TransactionLinkSummary', () => {
createdAt: '2022-03-16T14:22:40.000Z',
holdAvailableAmount: '5.13109484759482747111',
id: 87,
memo:
'Hat jemand die Nummer von der Hexe aus Schneewittchen? Ich bräuchte mal ein paar Äpfel.',
memo: 'Hat jemand die Nummer von der Hexe aus Schneewittchen? Ich bräuchte mal ein paar Äpfel.',
redeemedAt: null,
validUntil: '2022-03-30T14:22:40.000Z',
},
@ -187,8 +183,7 @@ describe('TransactionLinkSummary', () => {
createdAt: '2022-03-16T14:22:40.000Z',
holdAvailableAmount: '5.13109484759482747111',
id: 108,
memo:
'Die Windfahn´ krächzt am Dach, Der Uhu im Geklüfte; Was wispert wie ein Ach Verhallend in die Lüfte?',
memo: 'Die Windfahn´ krächzt am Dach, Der Uhu im Geklüfte; Was wispert wie ein Ach Verhallend in die Lüfte?',
redeemedAt: null,
validUntil: '2022-03-30T14:22:40.000Z',
},
@ -198,8 +193,7 @@ describe('TransactionLinkSummary', () => {
createdAt: '2022-03-16T14:22:40.000Z',
holdAvailableAmount: '5.13109484759482747111',
id: 93,
memo:
'Verschlafen kräht der Hahn, Ein Blitz noch, und ein trüber, Umwölbter Tag bricht an Walpurgisnacht vorüber!',
memo: 'Verschlafen kräht der Hahn, Ein Blitz noch, und ein trüber, Umwölbter Tag bricht an Walpurgisnacht vorüber!',
redeemedAt: null,
validUntil: '2022-03-30T14:22:40.000Z',
},

View File

@ -1,5 +1,5 @@
<template>
<div @click="showTransactionLinks()" class="transaction-slot-link">
<div class="transaction-slot-link" @click="showTransactionLinks()">
<BRow class="align-items-center">
<BCol cols="3" lg="2" md="2">
<b-avatar icon="link" variant="light" :size="42"></b-avatar>
@ -20,9 +20,9 @@
<collapse-links-list
v-model="currentPage"
:pending="pending"
:pageSize="pageSize"
:transactionLinkCount="transactionLinkCount"
:transactionLinks="transactionLinks"
:page-size="pageSize"
:transaction-link-count="transactionLinkCount"
:transaction-links="transactionLinks"
/>
</BCollapse>
</div>
@ -61,6 +61,11 @@ export default {
pending: false,
}
},
watch: {
currentPage() {
this.updateListTransactionLinks()
},
},
methods: {
showTransactionLinks() {
if (this.visible) {
@ -104,10 +109,5 @@ export default {
}
},
},
watch: {
currentPage() {
this.updateListTransactionLinks()
},
},
}
</script>

View File

@ -1,5 +1,5 @@
<template>
<div @click="visible = !visible" class="transaction-slot-receive">
<div class="transaction-slot-receive" @click="visible = !visible">
<BRow class="align-items-center">
<BCol cols="3" lg="2" md="2">
<!-- <b-avatar :text="avatarText" variant="success" size="3em"></b-avatar> -->
@ -15,8 +15,8 @@
<name
class="font-weight-bold"
:amount="amount"
:linkedUser="linkedUser"
:linkId="linkId"
:linked-user="linkedUser"
:link-id="linkId"
/>
</div>
<span class="small">{{ $d(new Date(balanceDate), 'short') }}</span>
@ -45,12 +45,12 @@
</BRow>
<BCollapse class="pb-4 pt-lg-3" :model-value="visible">
<decay-information
:typeId="typeId"
:type-id="typeId"
:decay="decay"
:amount="amount"
:memo="memo"
:balance="balance"
:previousBalance="previousBalance"
:previous-balance="previousBalance"
/>
</BCollapse>
</div>

View File

@ -1,6 +1,6 @@
<template>
<div class="transaction-slot-send">
<BRow @click="visible = !visible" class="align-items-center">
<BRow class="align-items-center" @click="visible = !visible">
<BCol cols="3" lg="2" md="2">
<avatar
:username="username.username"
@ -14,12 +14,12 @@
<name
class="font-weight-bold"
:amount="amount"
:linkedUser="linkedUser"
:linkId="linkId"
:linked-user="linkedUser"
:link-id="linkId"
/>
</div>
<span class="small">{{ this.$d(new Date(balanceDate), 'short') }}</span>
<span class="ml-4 small">{{ this.$d(new Date(balanceDate), 'time') }}</span>
<span class="small">{{ $d(new Date(balanceDate), 'short') }}</span>
<span class="ml-4 small">{{ $d(new Date(balanceDate), 'time') }}</span>
</BCol>
<BCol cols="8" lg="3" md="3" sm="8" offset="3" offset-md="0" offset-lg="0">
<div class="small mb-2">
@ -43,14 +43,14 @@
<collapse-icon class="text-right" :visible="visible" />
</BCol>
</BRow>
<BCollapse class="pb-4 pt-lg-3" v-model="visible">
<BCollapse v-model="visible" class="pb-4 pt-lg-3">
<decay-information
:typeId="typeId"
:type-id="typeId"
:decay="decay"
:amount="amount"
:memo="memo"
:balance="balance"
:previousBalance="previousBalance"
:previous-balance="previousBalance"
/>
</BCollapse>
</div>

View File

@ -1,6 +1,6 @@
<template>
<div class="userdata-card">
<div class="centerPerMargin">
<div class="center-per-margin">
<avatar
:username="username.username"
:initials="username.initials"
@ -72,16 +72,18 @@ export default {
}
</script>
<style scoped>
.centerPerMargin {
.center-per-margin {
padding-left: 44%;
}
@media screen and (max-width: 850px) {
.centerPerMargin {
@media screen and (width <= 850px) {
.center-per-margin {
padding-left: 38%;
}
}
@media screen and (max-width: 450px) {
.centerPerMargin {
@media screen and (width <= 450px) {
.center-per-margin {
padding-left: 34%;
}
}

View File

@ -27,7 +27,7 @@
{{ form.firstName }}
</BCol>
<BCol v-else class="col-12">
<b-input type="text" v-model="form.firstName"></b-input>
<b-input v-model="form.firstName" type="text"></b-input>
</BCol>
</BRow>
<BRow class="mb-3">
@ -40,19 +40,19 @@
{{ form.lastName }}
</BCol>
<BCol v-else class="col-12">
<b-input type="text" v-model="form.lastName"></b-input>
<b-input v-model="form.lastName" type="text"></b-input>
</BCol>
</BRow>
<BRow class="text-right" v-if="!showUserData">
<BRow v-if="!showUserData" class="text-right">
<BCol>
<div class="text-right" ref="submitButton">
<div ref="submitButton" class="text-right">
<b-button
:variant="loading ? 'light' : 'success'"
@click="onSubmit"
type="submit"
class="mt-4"
:disabled="loading"
@click="onSubmit"
>
{{ $t('form.save') }}
</b-button>

View File

@ -1,12 +1,12 @@
<template>
<div class="user-gms-location-format">
<b-dropdown v-model="selectedOption">
<template slot="button-content">{{ selectedOptionLabel }}</template>
<template #button-content>{{ selectedOptionLabel }}</template>
<b-dropdown-item
v-for="option in dropdownOptions"
@click.prevent="update(option)"
:key="option.value"
:value="option.value"
@click.prevent="update(option)"
>
{{ option.label }}
</b-dropdown-item>

View File

@ -37,13 +37,13 @@
</small>
</BCol>
<BCol class="col-12">
<language-switch-select @update-language="updateLanguage" :language="language" />
<language-switch-select :language="language" @update-language="updateLanguage" />
</BCol>
</BRow>
<BRow class="text-right">
<BCol>
<div class="text-right" ref="submitButton">
<div ref="submitButton" class="text-right">
<b-button
:variant="loading ? 'light' : 'success'"
type="submit"

View File

@ -23,12 +23,12 @@
v-model="username"
:name="$t('form.username')"
:placeholder="$t('form.username-placeholder')"
:showAllErrors="true"
:show-all-errors="true"
:unique="true"
:rules="rules"
:isEdit="isEdit"
@set-is-edit="setIsEdit"
:is-edit="isEdit"
data-test="component-input-username"
@set-is-edit="setIsEdit"
/>
</BCol>
<BCol class="col-12">
@ -37,9 +37,9 @@
</div>
</BCol>
</BRow>
<BRow class="text-right" v-if="newUsername">
<BRow v-if="newUsername" class="text-right">
<BCol>
<div class="text-right" ref="submitButton">
<div ref="submitButton" class="text-right">
<b-button
:variant="disabled(invalid) ? 'light' : 'success'"
type="submit"
@ -80,6 +80,11 @@ export default {
},
}
},
computed: {
newUsername() {
return this.username !== this.$store.state.username
},
},
methods: {
async onSubmit(event) {
this.$apollo
@ -105,17 +110,13 @@ export default {
this.isEdit = bool
},
},
computed: {
newUsername() {
return this.username !== this.$store.state.username
},
},
}
</script>
<style>
.cursor-pointer {
cursor: pointer;
}
div.alert {
color: red;
}

View File

@ -1,13 +1,13 @@
<template>
<div class="user-naming-format">
<b-dropdown v-model="selectedOption">
<template slot="button-content">{{ selectedOptionLabel }}</template>
<template #button-content>{{ selectedOptionLabel }}</template>
<b-dropdown-item
v-for="option in dropdownOptions"
@click.prevent="update(option)"
:key="option.value"
:value="option.value"
:title="option.title"
@click.prevent="update(option)"
>
{{ option.label }}
</b-dropdown-item>
@ -58,8 +58,9 @@ export default {
},
computed: {
selectedOptionLabel() {
const selected = this.dropdownOptions.find((option) => option.value === this.selectedOption)
.label
const selected = this.dropdownOptions.find(
(option) => option.value === this.selectedOption,
).label
return selected || this.$t('settings.publish-name.alias-or-initials')
// return this.dropdownOptions.find((option) => option.value === this.selectedOption).label
},

View File

@ -1,8 +1,8 @@
<template>
<div class="formusernewsletter">
<b-form-checkbox
test="BFormCheckbox"
v-model="newsletterState"
test="BFormCheckbox"
name="check-button"
switch
@change="onSubmit"

View File

@ -5,8 +5,8 @@
<BCol class="text-right">
<a
class="cursor-pointer"
@click="showPassword ? (showPassword = !showPassword) : cancelEdit()"
data-test="open-password-change-form"
@click="showPassword ? (showPassword = !showPassword) : cancelEdit()"
>
<span class="pointer mr-3">{{ $t('settings.password.change-password') }}</span>
<b-icon v-if="showPassword" class="pointer ml-3" icon="pencil"></b-icon>
@ -22,9 +22,9 @@
<BRow class="mb-2">
<BCol>
<input-password
v-model="form.password"
:label="$t('form.password_old')"
:placeholder="$t('form.password_old')"
v-model="form.password"
></input-password>
</BCol>
</BRow>
@ -74,6 +74,11 @@ export default {
register: false,
}
},
computed: {
disabled() {
return this.form.newPassword.password !== this.form.newPassword.passwordRepeat
},
},
methods: {
cancelEdit() {
this.showPassword = true
@ -99,11 +104,6 @@ export default {
})
},
},
computed: {
disabled() {
return this.form.newPassword.password !== this.form.newPassword.passwordRepeat
},
},
}
</script>
<style>

View File

@ -1,8 +1,8 @@
<template>
<div class="form-user-switch" @click="onClick">
<b-form-checkbox
test="BFormCheckbox"
v-model="value"
test="BFormCheckbox"
name="check-button"
:disabled="disabled"
switch
@ -23,6 +23,7 @@ export default {
disabled: { type: Boolean, default: false },
notAllowedText: { type: String, default: undefined },
},
emits: ['value-changed'],
data() {
return {
value: this.initialValue,
@ -40,7 +41,7 @@ export default {
})
.then(() => {
this.$store.commit(this.attrName, this.value)
this.$emit('valueChanged', this.value)
this.$emit('value-changed', this.value)
this.toastSuccess(this.value ? this.enabledText : this.disabledText)
})
.catch((error) => {

View File

@ -1,4 +1,4 @@
import { ref } from 'vue'
import { ref, computed } from 'vue'
import { useStore } from 'vuex'
import { useI18n } from 'vue-i18n'
import { useAppToast } from '@/composables/useToast'

View File

@ -6,7 +6,6 @@ export const createFilters = (i18n) => {
if (isNaN(numValue)) return ''
return i18n.global.n(numValue, 'decimal').replace('-', ' ')
} catch (error) {
console.error('Error formatting amount:', error)
return ''
}
}

View File

@ -13,19 +13,19 @@ export const unsubscribeNewsletter = gql`
`
export const setPassword = gql`
mutation($code: String!, $password: String!) {
mutation ($code: String!, $password: String!) {
setPassword(code: $code, password: $password)
}
`
export const forgotPassword = gql`
mutation($email: String!) {
mutation ($email: String!) {
forgotPassword(email: $email)
}
`
export const updateUserInfos = gql`
mutation(
mutation (
$firstName: String
$lastName: String
$alias: String
@ -61,7 +61,7 @@ export const updateUserInfos = gql`
`
export const createUser = gql`
mutation(
mutation (
$firstName: String!
$lastName: String!
$email: String!
@ -83,7 +83,7 @@ export const createUser = gql`
`
export const sendCoins = gql`
mutation(
mutation (
$recipientCommunityIdentifier: String!
$recipientIdentifier: String!
$amount: Decimal!
@ -99,7 +99,7 @@ export const sendCoins = gql`
`
export const createTransactionLink = gql`
mutation($amount: Decimal!, $memo: String!) {
mutation ($amount: Decimal!, $memo: String!) {
createTransactionLink(amount: $amount, memo: $memo) {
link
amount
@ -110,19 +110,19 @@ export const createTransactionLink = gql`
`
export const deleteTransactionLink = gql`
mutation($id: Int!) {
mutation ($id: Int!) {
deleteTransactionLink(id: $id)
}
`
export const redeemTransactionLink = gql`
mutation($code: String!) {
mutation ($code: String!) {
redeemTransactionLink(code: $code)
}
`
export const createContribution = gql`
mutation($creationDate: String!, $memo: String!, $amount: Decimal!) {
mutation ($creationDate: String!, $memo: String!, $amount: Decimal!) {
createContribution(creationDate: $creationDate, memo: $memo, amount: $amount) {
amount
memo
@ -131,7 +131,7 @@ export const createContribution = gql`
`
export const updateContribution = gql`
mutation($contributionId: Int!, $amount: Decimal!, $memo: String!, $creationDate: String!) {
mutation ($contributionId: Int!, $amount: Decimal!, $memo: String!, $creationDate: String!) {
updateContribution(
contributionId: $contributionId
amount: $amount
@ -146,13 +146,13 @@ export const updateContribution = gql`
`
export const deleteContribution = gql`
mutation($id: Int!) {
mutation ($id: Int!) {
deleteContribution(id: $id)
}
`
export const createContributionMessage = gql`
mutation($contributionId: Int!, $message: String!) {
mutation ($contributionId: Int!, $message: String!) {
createContributionMessage(contributionId: $contributionId, message: $message) {
id
message
@ -166,7 +166,7 @@ export const createContributionMessage = gql`
`
export const login = gql`
mutation($email: String!, $password: String!, $publisherId: Int) {
mutation ($email: String!, $password: String!, $publisherId: Int) {
login(email: $email, password: $password, publisherId: $publisherId) {
gradidoID
alias

View File

@ -35,7 +35,7 @@ export const authenticateHumhubAutoLogin = gql`
`
export const transactionsQuery = gql`
query($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) {
query ($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) {
transactionList(currentPage: $currentPage, pageSize: $pageSize, order: $order) {
balance {
balance
@ -72,7 +72,7 @@ export const transactionsQuery = gql`
`
export const listGDTEntriesQuery = gql`
query($currentPage: Int!, $pageSize: Int!) {
query ($currentPage: Int!, $pageSize: Int!) {
listGDTEntries(currentPage: $currentPage, pageSize: $pageSize) {
count
gdtEntries {
@ -101,19 +101,19 @@ export const selectCommunities = gql`
`
export const queryOptIn = gql`
query($optIn: String!) {
query ($optIn: String!) {
queryOptIn(optIn: $optIn)
}
`
export const checkUsername = gql`
query($username: String!) {
query ($username: String!) {
checkUsername(username: $username)
}
`
export const queryTransactionLink = gql`
query($code: String!) {
query ($code: String!) {
queryTransactionLink(code: $code) {
... on TransactionLink {
id
@ -148,7 +148,7 @@ export const queryTransactionLink = gql`
`
export const listTransactionLinks = gql`
query($currentPage: Int = 1, $pageSize: Int = 5) {
query ($currentPage: Int = 1, $pageSize: Int = 5) {
listTransactionLinks(currentPage: $currentPage, pageSize: $pageSize) {
links {
id
@ -165,7 +165,7 @@ export const listTransactionLinks = gql`
`
export const listContributionLinks = gql`
query($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) {
query ($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) {
listContributionLinks(currentPage: $currentPage, pageSize: $pageSize, order: $order) {
links {
id
@ -185,7 +185,7 @@ export const listContributionLinks = gql`
`
export const listContributions = gql`
query(
query (
$currentPage: Int = 1
$pageSize: Int = 25
$order: Order = DESC
@ -220,7 +220,7 @@ export const listContributions = gql`
`
export const listAllContributions = gql`
query($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) {
query ($currentPage: Int = 1, $pageSize: Int = 25, $order: Order = DESC) {
listAllContributions(currentPage: $currentPage, pageSize: $pageSize, order: $order) {
contributionCount
contributionList {
@ -266,7 +266,7 @@ export const searchAdminUsers = gql`
`
export const listContributionMessages = gql`
query($contributionId: Int!, $pageSize: Int = 25, $currentPage: Int = 1, $order: Order = ASC) {
query ($contributionId: Int!, $pageSize: Int = 25, $currentPage: Int = 1, $order: Order = ASC) {
listContributionMessages(
contributionId: $contributionId
pageSize: $pageSize
@ -299,7 +299,7 @@ export const openCreations = gql`
`
export const user = gql`
query($identifier: String!, $communityIdentifier: String!) {
query ($identifier: String!, $communityIdentifier: String!) {
user(identifier: $identifier, communityIdentifier: $communityIdentifier) {
firstName
lastName

View File

@ -37,14 +37,14 @@
></BAvatar>
</BCol>
</BRow>
<BCard no-body ref="pageFontSize" class="border-0 mt-4 gradido-custom-background">
<BCard ref="pageFontSize" no-body class="border-0 mt-4 gradido-custom-background">
<BRow class="p-4">
<BCol cols="10">
<language-switch-2 class="ml-3" />
</BCol>
<BCol cols="2" class="text-right">
<div id="popover-target-1" class="pointer">
<BImg src="/img/svg/type.svg" width="19" class="svgType"></BImg>
<BImg src="/img/svg/type.svg" width="19" class="svg-type"></BImg>
</div>
<BPopover
target="popover-target-1"
@ -112,8 +112,6 @@ export default {
},
methods: {
setTextSize(size) {
console.log(size)
console.log(this.$refs.pageFontSize)
this.$refs.pageFontSize.$el.style.fontSize = size + 'rem'
},
},
@ -124,29 +122,31 @@ export default {
/* left */
.left-content-box {
width: 40%;
top: 0px;
bottom: 0px;
top: 0;
bottom: 0;
}
.bg-img-box {
top: 0px;
bottom: 0px;
top: 0;
bottom: 0;
}
/* right */
.right-content-box {
max-width: 640px;
}
.page-font-size {
font-size: 1rem;
}
.auth-template {
overflow-x: hidden;
}
.bg-txt-box {
margin-top: 520px;
text-shadow: 2px 2px 8px #000000;
text-shadow: 2px 2px 8px #000;
max-width: 733px;
}
@ -155,10 +155,11 @@ export default {
overflow: hidden;
}
.svgType:hover {
.svg-type:hover {
filter: invert(38%) sepia(18%) saturate(5307%) hue-rotate(179deg) brightness(89%) contrast(89%);
}
@media screen and (min-width: 2000px) {
@media screen and (width >= 2000px) {
.right-content-box {
max-width: 60%;
font-size: xx-large;

View File

@ -34,19 +34,23 @@
<BCol>
<content-header
:balance="balance"
:GdtBalance="GdtBalance"
:totalUsers="totalUsers"
:gdt-balance="GdtBalance"
:total-users="totalUsers"
>
<template #overview>
<BRow>
<BCol cols="12" lg="5">
<div>
<gdd-amount :balance="balance" :showStatus="false" :badgeShow="false" />
<gdd-amount
:balance="balance"
:show-status="false"
:badge-show="false"
/>
</div>
</BCol>
<BCol cols="12" lg="7">
<div>
<community-member :totalUsers="totalUsers" />
<community-member :total-users="totalUsers" />
</div>
</BCol>
</BRow>
@ -58,15 +62,15 @@
<gdd-amount
:balance="balance"
:badge="true"
:showStatus="true"
:badgeShow="false"
:show-status="true"
:badge-show="false"
/>
</div>
</BCol>
<BCol cols="12" lg="6">
<div>
<router-link to="gdt">
<gdt-amount :GdtBalance="GdtBalance" :badgeShow="false" />
<gdt-amount :gdt-balance="GdtBalance" :badge-show="false" />
</router-link>
</div>
</BCol>
@ -77,14 +81,14 @@
<BCol cols="12" lg="6">
<div>
<router-link to="transactions">
<gdd-amount :balance="balance" :showStatus="true" />
<gdd-amount :balance="balance" :show-status="true" />
</router-link>
</div>
</BCol>
<BCol cols="12" lg="6">
<div>
<router-link to="gdt">
<gdt-amount :GdtBalance="GdtBalance" />
<gdt-amount :gdt-balance="GdtBalance" />
</router-link>
</div>
</BCol>
@ -95,7 +99,7 @@
<BCol cols="12" lg="6">
<div>
<router-link to="transactions">
<gdd-amount :balance="balance" :showStatus="false" />
<gdd-amount :balance="balance" :show-status="false" />
</router-link>
</div>
</BCol>
@ -104,8 +108,8 @@
<router-link to="gdt">
<gdt-amount
:badge="true"
:showStatus="true"
:GdtBalance="GdtBalance"
:show-status="true"
:gdt-balance="GdtBalance"
/>
</router-link>
</div>
@ -126,8 +130,8 @@
<template #transactions>
<last-transactions
:transactions="transactions"
:transactionCount="transactionCount"
:transactionLinkCount="transactionLinkCount"
:transaction-count="transactionCount"
:transaction-link-count="transactionLinkCount"
/>
</template>
<template #community>
@ -143,10 +147,10 @@
<router-view
ref="router-view"
:balance="balance"
:GdtBalance="GdtBalance"
:gdt-balance="GdtBalance"
:transactions="transactions"
:transactionCount="transactionCount"
:transactionLinkCount="transactionLinkCount"
:transaction-count="transactionCount"
:transaction-link-count="transactionLinkCount"
:pending="pending"
@update-transactions="updateTransactions"
></router-view>
@ -161,8 +165,8 @@
<template #transactions>
<last-transactions
:transactions="transactions"
:transactionCount="transactionCount"
:transactionLinkCount="transactionLinkCount"
:transaction-count="transactionCount"
:transaction-link-count="transactionLinkCount"
/>
</template>
<template #empty />
@ -386,7 +390,7 @@ const updateTransactions = async ({ currentPage, pageSize }) => {
pending.value = true
try {
const result = await useTransactionsQuery()
if (!result) return //TODO this return mitigate an error when this method is called second time but without actual request
if (!result) return // TODO this return mitigate an error when this method is called second time but without actual request
const { transactionList } = result
GdtBalance.value =
transactionList.balance.balanceGDT === null ? 0 : Number(transactionList.balance.balanceGDT)
@ -399,14 +403,12 @@ const updateTransactions = async ({ currentPage, pageSize }) => {
pending.value = true
transactionCount.value = -1
toastError(error.message)
console.error(error)
}
}
const getCommunityStatistics = async () => {
try {
const result = await useCommunityStatsQuery()
console.log(result)
totalUsers.value = result.communityStatistics.totalUsers
} catch {
toastError(t('communityStatistics has no result, use default data'))
@ -426,40 +428,48 @@ const setVisible = (bool) => {
.breadcrumb {
background-color: transparent;
}
.main-page {
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: 100% 100%;
background-image: url(/img/svg/Gradido_Blaetter_Mainpage.svg) !important;
background-image: url("/img/svg/Gradido_Blaetter_Mainpage.svg") !important;
}
.b-right {
text-align: -webkit-right;
}
.content-gradido {
display: inline-flex;
width: 100%;
height: 91%;
position: absolute;
}
.navbar-brand-img {
height: 2rem;
padding-left: 10px;
}
.bg-lightgrey {
background-color: #f0f0f0 !important;
}
.bg-blueviolet {
background-color: blueviolet !important;
}
.width70 {
width: 70px;
}
.navbar-toggler-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(4, 112, 6, 1)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
@media screen and (max-width: 450px) {
@media screen and (width <= 450px) {
.breadcrumb {
padding-top: 60px;
}

View File

@ -53,7 +53,7 @@ app.config.globalProperties.$filters = {
GDD: filters.GDD,
}
//TODO it will be used in future
// TODO it will be used in future
// app.config.globalProperties.$filters = {
// GDD: filters.GDD,
// amount: filters.amount,

View File

@ -1,6 +1,6 @@
<template>
<div class="circles">
<BContainer class="bg-white appBoxShadow gradido-border-radius p-4 mt--3">
<BContainer class="bg-white app-box-shadow gradido-border-radius p-4 mt--3">
<div class="h3">{{ $t('circles.headline') }}</div>
<div class="my-4 text-small">
<span v-for="(line, lineNumber) of $t('circles.text').split('\n')" :key="lineNumber">
@ -12,8 +12,8 @@
<BCol cols="12">
<div class="text-lg-right">
<BButton
:href="humhubUri"
v-if="humhubAllowed"
:href="humhubUri"
variant="gradido"
:disabled="enableButton === false"
target="_blank"
@ -86,14 +86,14 @@ const humhubUri = ref('')
const humhubAllowed = computed(() => store.state.humhubAllowed)
const { refetch: refetchAuthenticateHumhub, onResult, onError } = useQuery(
authenticateHumhubAutoLogin,
null,
{
fetchPolicy: 'network-only',
enabled: false,
},
)
const {
refetch: refetchAuthenticateHumhub,
onResult,
onError,
} = useQuery(authenticateHumhubAutoLogin, null, {
fetchPolicy: 'network-only',
enabled: false,
})
onResult(({ data }) => {
if (data) {

View File

@ -1,22 +1,22 @@
<template>
<div class="community-page">
<div>
<BTabs no-nav-style borderless v-model="tabIndex" align="center">
<BTabs v-model="tabIndex" no-nav-style borderless align="center">
<BTab no-body>
<open-creations-amount
:minimalDate="minimalDate"
:maxGddLastMonth="maxForMonths[0]"
:maxGddThisMonth="maxForMonths[1]"
:minimal-date="minimalDate"
:max-gdd-last-month="maxForMonths[0]"
:max-gdd-this-month="maxForMonths[1]"
/>
<div class="mb-3"></div>
<contribution-form
v-model="form"
:is-this-month="isThisMonth"
:minimal-date="minimalDate"
:max-gdd-last-month="maxForMonths[0]"
:max-gdd-this-month="maxForMonths[1]"
@set-contribution="handleSaveContribution"
@update-contribution="handleUpdateContribution"
v-model="form"
:isThisMonth="isThisMonth"
:minimalDate="minimalDate"
:maxGddLastMonth="maxForMonths[0]"
:maxGddThisMonth="maxForMonths[1]"
/>
</BTab>
<BTab no-body>
@ -25,15 +25,15 @@
</div>
<div v-else>
<contribution-list
@closeAllOpenCollapse="closeAllOpenCollapse"
:items="items"
:contribution-count="contributionCount"
:show-pagination="true"
:page-size="pageSize"
@closeAllOpenCollapse="closeAllOpenCollapse"
@update-list-contributions="handleUpdateListContributions"
@update-contribution-form="handleUpdateContributionForm"
@delete-contribution="handleDeleteContribution"
@update-status="updateStatus"
:contributionCount="contributionCount"
:showPagination="true"
:pageSize="pageSize"
/>
</div>
</BTab>
@ -44,12 +44,12 @@
<div v-else>
<contribution-list
:items="itemsAll"
:contribution-count="contributionCountAll"
:show-pagination="true"
:page-size="pageSizeAll"
:all-contribution="true"
@update-list-contributions="updateListAllContributions"
@update-contribution-form="updateContributionForm"
:contributionCount="contributionCountAll"
:showPagination="true"
:pageSize="pageSizeAll"
:allContribution="true"
/>
</div>
</BTab>
@ -312,6 +312,7 @@ import ContributionList from '@/components/Contributions/ContributionList'
import { createContribution, updateContribution, deleteContribution } from '@/graphql/mutations'
import { listContributions, listAllContributions, openCreations } from '@/graphql/queries'
import { useAppToast } from '../composables/useToast'
import { useI18n } from 'vue-i18n'
const COMMUNITY_TABS = ['contribute', 'contributions', 'community']
@ -323,6 +324,7 @@ const route = useRoute()
const router = useRouter()
const { toastError, toastSuccess, toastInfo } = useAppToast()
const { t } = useI18n()
// Reactive state
const tabIndex = ref(0)

View File

@ -35,8 +35,8 @@
:headline="success ? $t('message.title') : $t('message.errorTitle')"
:subtitle="success ? $t('message.email') : $t('error.email-already-sent')"
:data-test="success ? 'forgot-password-success' : 'forgot-password-error'"
:buttonText="$t('login')"
linkTo="/login"
:button-text="$t('login')"
link-to="/login"
/>
</b-container>
</div>
@ -63,6 +63,11 @@ export default {
success: null,
}
},
computed: {
enterData() {
return !this.showPageMessage
},
},
created() {
if (this.$route.params.comingFrom) {
this.subtitle = 'settings.password.resend_subtitle'
@ -88,20 +93,16 @@ export default {
})
},
},
computed: {
enterData() {
return !this.showPageMessage
},
},
}
</script>
<style scoped>
.btn-gradido {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
.btn-gradido-disable {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div class="info-statistic">
<BContainer class="bg-white appBoxShadow gradido-border-radius p-4 mt--3">
<BContainer class="bg-white app-box-shadow gradido-border-radius p-4 mt--3">
<div>{{ $t('communityInfo') }}</div>
<div class="h3">
{{ CONFIG.COMMUNITY_DESCRIPTION }}
@ -47,9 +47,8 @@ const supportMail = CONFIG.COMMUNITY_SUPPORT_MAIL
const admins = computed(() => itemsAdminUser.value.filter((item) => item.role === 'ADMIN'))
const moderators = computed(() => itemsAdminUser.value.filter((item) => item.role === 'MODERATOR'))
const { onResult: onContributionLinksResult, onError: onContributionLinksError } = useQuery(
listContributionLinks,
)
const { onResult: onContributionLinksResult, onError: onContributionLinksError } =
useQuery(listContributionLinks)
const { onResult: onAdminUsersResult, onError: onAdminUsersError } = useQuery(searchAdminUsers)
onContributionLinksResult(({ data }) => {

View File

@ -77,8 +77,8 @@
<BRow>
<BCol cols="12" lg="6">
<BButton
type="submit"
ref="submitBtn"
type="submit"
:variant="meta.valid ? 'gradido' : 'gradido-disable'"
block
:disabled="!meta.valid"
@ -93,8 +93,8 @@
<message
:headline="$t('message.errorTitle')"
:subtitle="errorSubtitle"
:buttonText="$t('settings.password.reset')"
:linkTo="errorLinkTo"
:button-text="$t('settings.password.reset')"
:link-to="errorLinkTo"
/>
</BContainer>
</div>
@ -212,9 +212,7 @@ const { handleSubmit, meta, values } = useForm({
initialValues: form.value,
})
const passwordVisible = ref(false)
const showPageMessage = ref(false)
const errorReason = ref(null)
const errorSubtitle = ref('')
const errorLinkTo = ref('')
const submitBtn = ref(null)
@ -265,11 +263,12 @@ const enterData = computed(() => !showPageMessage.value)
</script>
<style scoped>
.btn-gradido {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
.btn-gradido-disable {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
</style>

View File

@ -4,7 +4,7 @@
<div class="header py-1 py-lg-1 pt-lg-3">
<BContainer>
<div class="header-body text-center mb-3">
<a href="#!" v-on:click="$router.go(-1)">
<a href="#!" @click="$router.go(-1)">
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 mt-5 mb-5">
@ -1186,7 +1186,7 @@
</BContainer>
</div>
<div class="text-center">
<BButton class="test-back" variant="light" v-on:click="$router.go(-1)">
<BButton class="test-back" variant="light" @click="$router.go(-1)">
{{ $t('back') }}
</BButton>
</div>
@ -1195,7 +1195,7 @@
<script>
export default {
name: 'not-found',
name: 'NotFound',
data() {
return {
anime: {
@ -1244,21 +1244,23 @@ export default {
transform-box: fill-box;
}
/*************swing************/
/************* swing ************/
@keyframes swing {
0% {
transform: rotate(10deg);
}
100% {
transform: rotate(-10deg);
}
}
/*************swing hair************/
/************* swing hair ************/
@keyframes swinghair {
0% {
transform: rotate(6deg);
}
100% {
transform: rotate(-6deg);
}

View File

@ -7,9 +7,9 @@
<BRow>
<BCol sm="12" md="6">
<validation-provider
v-slot="validationContext"
:name="$t('form.firstname')"
:rules="{ required: true, min: 3 }"
v-slot="validationContext"
>
<b-form-group
class="mb-3"
@ -18,8 +18,8 @@
>
<b-form-input
id="registerFirstname"
:name="$t('form.firstname')"
v-model="form.firstname"
:name="$t('form.firstname')"
:placeholder="$t('form.firstname')"
:state="getValidationState(validationContext)"
aria-describedby="registerFirstnameLiveFeedback"
@ -33,9 +33,9 @@
</BCol>
<BCol sm="12" md="6">
<validation-provider
v-slot="validationContext"
:name="$t('form.lastname')"
:rules="{ required: true, min: 2 }"
v-slot="validationContext"
>
<b-form-group
class="mb-3"
@ -44,8 +44,8 @@
>
<b-form-input
id="registerLastname"
:name="$t('form.lastname')"
v-model="form.lastname"
:name="$t('form.lastname')"
:placeholder="$t('form.lastname')"
:state="getValidationState(validationContext)"
aria-describedby="registerLastnameLiveFeedback"
@ -108,11 +108,11 @@ import InputEmail from '@/components/Inputs/InputEmail'
import Message from '@/components/Message/Message'
export default {
name: 'Register',
components: {
InputEmail,
Message,
},
name: 'Register',
data() {
return {
form: {
@ -128,6 +128,25 @@ export default {
CONFIG,
}
},
computed: {
namesFilled() {
return (
this.form.firstname !== '' &&
this.form.firstname.length > 2 &&
this.form.lastname !== '' &&
this.form.lastname.length > 1
)
},
emailFilled() {
return this.form.email !== ''
},
disabled() {
return !(this.namesFilled && this.emailFilled && this.form.agree)
},
enterData() {
return !this.showPageMessage
},
},
methods: {
getValidationState({ dirty, validated, valid = null }) {
return dirty || validated ? valid : null
@ -153,34 +172,16 @@ export default {
})
},
},
computed: {
namesFilled() {
return (
this.form.firstname !== '' &&
this.form.firstname.length > 2 &&
this.form.lastname !== '' &&
this.form.lastname.length > 1
)
},
emailFilled() {
return this.form.email !== ''
},
disabled() {
return !(this.namesFilled && this.emailFilled && this.form.agree)
},
enterData() {
return !this.showPageMessage
},
},
}
</script>
<style scoped>
.btn-gradido {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
.btn-gradido-disable {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
</style>

View File

@ -26,8 +26,8 @@
<message
:headline="messageHeadline"
:subtitle="messageSubtitle"
:buttonText="messageButtonText"
:linkTo="messageButtonLinktTo"
:button-text="messageButtonText"
:link-to="messageButtonLinktTo"
/>
</div>
</template>
@ -73,6 +73,11 @@ export default {
messageButtonLinktTo: null,
}
},
computed: {
enterData() {
return !this.showPageMessage
},
},
created() {
this.$emit('set-mobile-start', false)
this.setDisplaySetup()
@ -146,20 +151,16 @@ export default {
}
},
},
computed: {
enterData() {
return !this.showPageMessage
},
},
}
</script>
<style scoped>
.btn-gradido {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
.btn-gradido-disable {
padding-right: 0px;
padding-left: 0px;
padding-right: 0;
padding-left: 0;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div>
<gdd-send :currentTransactionStep="currentTransactionStep">
<gdd-send :current-transaction-step="currentTransactionStep">
<template #transactionForm>
<transaction-form
v-bind="transactionData"
@ -33,7 +33,7 @@
<template #transactionResultSendError>
<transaction-result-send-error
:error="error"
:errorResult="errorResult"
:error-result="errorResult"
@on-back="onBack"
></transaction-result-send-error>
</template>
@ -42,7 +42,7 @@
:link="link"
:amount="amount"
:memo="memo"
:validUntil="validUntil"
:valid-until="validUntil"
@on-back="onBack"
></transaction-result-link>
</template>
@ -188,12 +188,7 @@
<!--}-->
<!--</script>-->
<script>
export const SEND_TYPES = {
send: 'send',
link: 'link',
}
</script>
<script></script>
<script setup>
import { ref, reactive } from 'vue'
@ -208,6 +203,10 @@ import TransactionResultSendError from '@/components/GddSend/TransactionResultSe
import TransactionResultLink from '@/components/GddSend/TransactionResultLink'
import { sendCoins, createTransactionLink } from '@/graphql/mutations.js'
import { useAppToast } from '@/composables/useToast'
export const SEND_TYPES = {
send: 'send',
link: 'link',
}
const EMPTY_TRANSACTION_DATA = {
identifier: '',

View File

@ -1,5 +1,5 @@
<template>
<div class="card bg-white gradido-border-radius appBoxShadow p-4 mt--3">
<div class="card bg-white gradido-border-radius app-box-shadow p-4 mt--3">
<b-tabs v-model="tabIndex" content-class="mt-3">
<b-tab :title="$t('PersonalDetails')">
<div class="h2">{{ $t('PersonalDetails') }}</div>
@ -44,8 +44,8 @@
<b-button
type="submit"
variant="primary"
@click.prevent="onSubmit"
data-test="submit-userdata"
@click.prevent="onSubmit"
>
{{ $t('form.save') }}
</b-button>
@ -89,13 +89,13 @@
</BCol>
<BCol cols="12" md="6" lg="6" class="text-right">
<user-settings-switch
@valueChanged="humhubStateSwitch"
:initialValue="$store.state.humhubAllowed"
:attrName="'humhubAllowed'"
:initial-value="$store.state.humhubAllowed"
:attr-name="'humhubAllowed'"
:disabled="isHumhubActivated"
:enabledText="$t('settings.humhub.enabled')"
:disabledText="$t('settings.humhub.disabled')"
:notAllowedText="$t('settings.humhub.delete-disabled')"
:enabled-text="$t('settings.humhub.enabled')"
:disabled-text="$t('settings.humhub.disabled')"
:not-allowed-text="$t('settings.humhub.delete-disabled')"
@value-changed="humhubStateSwitch"
/>
</BCol>
</BRow>
@ -106,9 +106,9 @@
</BCol>
<BCol cols="12" md="6" lg="6">
<user-naming-format
:initialValue="$store.state.humhubPublishName"
:attrName="'humhubPublishName'"
:successMessage="$t('settings.humhub.publish-name.updated')"
:initial-value="$store.state.humhubPublishName"
:attr-name="'humhubPublishName'"
:success-message="$t('settings.humhub.publish-name.updated')"
/>
</BCol>
</BRow>
@ -120,11 +120,11 @@
</BCol>
<BCol cols="12" md="6" lg="6" class="text-right">
<user-settings-switch
@valueChanged="gmsStateSwitch"
:initialValue="$store.state.gmsAllowed"
:attrName="'gmsAllowed'"
:enabledText="$t('settings.GMS.enabled')"
:disabledText="$t('settings.GMS.disabled')"
:initial-value="$store.state.gmsAllowed"
:attr-name="'gmsAllowed'"
:enabled-text="$t('settings.GMS.enabled')"
:disabled-text="$t('settings.GMS.disabled')"
@value-changed="gmsStateSwitch"
/>
</BCol>
</BRow>
@ -136,9 +136,9 @@
</BCol>
<BCol cols="12" md="6" lg="6">
<user-naming-format
:initialValue="$store.state.gmsPublishName"
:attrName="'gmsPublishName'"
:successMessage="$t('settings.GMS.publish-name.updated')"
:initial-value="$store.state.gmsPublishName"
:attr-name="'gmsPublishName'"
:success-message="$t('settings.GMS.publish-name.updated')"
/>
</BCol>
</BRow>
@ -214,15 +214,8 @@ export default {
data() {
const { state } = this.$store
const {
darkMode,
firstName,
lastName,
email,
newsletterState,
gmsAllowed,
humhubAllowed,
} = state
const { darkMode, firstName, lastName, email, newsletterState, gmsAllowed, humhubAllowed } =
state
const username = this.$store.state.username || ''
let tabIndex = 0
@ -300,14 +293,17 @@ export default {
.community-service-tabs {
min-height: 315px;
}
.card-border-radius {
border-radius: 0px 5px 5px 0px !important;
border-radius: 0 5px 5px 0 !important;
}
@media screen and (max-width: 1235px) {
@media screen and (width <= 1235px) {
.card-border-radius {
border-radius: 0px !important;
border-radius: 0 !important;
}
}
.card-background-gray {
background-color: #ebebeba3 !important;
}

View File

@ -233,8 +233,7 @@ describe('TransactionLink', () => {
__typename: 'TransactionLink',
id: 92,
amount: '22',
memo:
'Abrakadabra drei, vier, fünf, sechs, hier steht jetzt ein Memotext! Hex hex ',
memo: 'Abrakadabra drei, vier, fünf, sechs, hier steht jetzt ein Memotext! Hex hex ',
createdAt: '2022-03-17T16:10:28.000Z',
validUntil: transactionLinkValidExpireDate(),
redeemedAt: null,
@ -269,8 +268,7 @@ describe('TransactionLink', () => {
__typename: 'TransactionLink',
id: 92,
amount: '22',
memo:
'Abrakadabra drei, vier, fünf, sechs, hier steht jetzt ein Memotext! Hex hex ',
memo: 'Abrakadabra drei, vier, fünf, sechs, hier steht jetzt ein Memotext! Hex hex ',
createdAt: '2022-03-17T16:10:28.000Z',
validUntil: transactionLinkValidExpireDate(),
redeemedAt: null,
@ -345,8 +343,7 @@ describe('TransactionLink', () => {
__typename: 'TransactionLink',
id: 92,
amount: '22',
memo:
'Abrakadabra drei, vier, fünf, sechs, hier steht jetzt ein Memotext! Hex hex ',
memo: 'Abrakadabra drei, vier, fünf, sechs, hier steht jetzt ein Memotext! Hex hex ',
createdAt: '2022-03-17T16:10:28.000Z',
validUntil: transactionLinkValidExpireDate(),
redeemedAt: null,

Some files were not shown because too many files have changed in this diff Show More