edit link, validate input
Gitea Actions Demo / build_and_push (push) Successful in 1m3s Details

This commit is contained in:
artem 2025-03-09 07:11:12 +03:00
parent df94eba559
commit c0d0a3e8ae
1 changed files with 27 additions and 9 deletions

View File

@ -95,8 +95,11 @@
<input type="checkbox" v-model="workoutItem.is_public" v-on:change="changePublic(workoutItem.is_public)">
</div>
<div class="workout-item-params" >
<div class="workout-item-params-name">Ссылки на описание:</div>
<div v-if="dzenLink"><a :href="dzenLink" target="_blank">Дзен</a></div>
<div class="workout-item-params-name">Ссылки на описание:&nbsp;</div>
<div v-if="dzenLink">
<a :href="dzenLink" target="_blank">Дзен</a>
<VaIcon v-if="isPrivate" name="edit" @click="showModalLink = !showModalLink"/>
</div>
<div class="workout-item-params-pointer" v-else><a @click="showModalLink = !showModalLink">Добавить</a> </div>
</div>
@ -120,17 +123,31 @@
ok-text="OK"
:beforeOk="saveName"
>
<VaForm ref="form" @submit.prevent="saveName" @keyup.enter="saveName">
<h3>Редактирование названия</h3>
<input v-if="workoutItem" v-model="workoutItem.name" type="text" placeholder="Название" class="workout-item-input" />
<VaInput v-if="workoutItem"
v-model="workoutItem.name"
:rules="[(v: string) => v.length < 70 || `Слишком длинное название ${v.length}`]"
type="text"
placeholder="Название"
class="workout-item-input" />
<div v-else>Тренировка не найдена</div>
</VaForm>
</VaModal>
<VaModal v-if="isPrivate"
v-model="showModalLink"
ok-text="OK"
:beforeOk="saveLink"
>
<VaForm ref="form" @submit.prevent="saveName" @keyup.enter="saveName">
<h3>Редактирование ссылок</h3>
<input v-model="dzenLink" type="text" placeholder="Название" class="workout-item-input" />
<VaInput
v-model="dzenLink"
:rules="[(v: string) => v.includes('https://dzen.ru/') || 'Ссылка должна включать https://dzen.ru/']"
type="text"
placeholder="Название"
class="workout-item-input" />
</VaForm>
</VaModal>
</template>
<script setup lang="ts">
@ -139,7 +156,7 @@ import VaZoomOut from "../../../components/icons/VaZoomOut.vue";
import 'chartjs-adapter-moment';
import { AxiosResponse, AxiosInstance, AxiosError } from "axios";
import { ref, inject, shallowRef } from 'vue'
import { useToast } from "vuestic-ui/web-components";
import { useToast,useForm } from "vuestic-ui/web-components";
import zoomPlugin, { resetZoom } from 'chartjs-plugin-zoom';
import {
Chart as ChartJS,
@ -368,10 +385,15 @@ const saveLink = (hide: any) => {
});
});
};
const { validate } = useForm("form");
const saveName = (hide: any) => {
if (!workoutItem) {
return
}
if (!validate()) {
return
}
if (workoutItem.name.length == 0) {
init({
message: "Название не может быть пустым",
@ -490,10 +512,6 @@ h3 {
.workout-item-editable-title i {
cursor: pointer;
}
.workout-item-input {
border: #333 1px solid;
padding-left: 5px;
}
.workout-item-params-pointer {
cursor: pointer;
}