add Trainings popUp in dashboard

This commit is contained in:
Diyar Akhgar 2025-05-30 04:08:36 +03:30
parent b59c059ce5
commit 90bbff45cf
3 changed files with 365 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

View File

@ -0,0 +1,316 @@
<template>
<div v-if="isOpen" class="modal-overlay" @click="closeModal">
<div class="modal-content" @click.stop>
<div class="popUp-header">
<h2>آموزش ها</h2>
<button @click="closeModal">
<svg
xmlns="http://www.w3.org/2000/svg"
width="35"
height="35"
viewBox="0 0 32 32"
fill="none"
>
<rect x="0.5" y="0.5" width="31" height="31" rx="7.5" fill="#101010" />
<rect x="0.5" y="0.5" width="31" height="31" rx="7.5" stroke="#E2DEE9" />
<path
d="M21 11L11 21"
stroke="white"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M11 11L21 21"
stroke="white"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</button>
</div>
<div class="popUp-body">
<div v-for="(section, index) in sections" :key="index" class="popUp-object">
<h2>{{ section.title }}</h2>
<div class="cards">
<div v-for="(card, cardIndex) in section.cards" :key="cardIndex" class="card">
<div class="card-header"></div>
<span class="card-logo">
<img :src="card.icon" alt="icon">
</span>
<div class="card-body">
{{ card.title }}
</div>
<div class="card-footer">
مشاهده محتوا
</div>
</div>
</div>
</div>
</div>
<button class="exit-btn" @click="closeModal">خروج</button>
</div>
</div>
</template>
<script>
export default {
name: 'MeetingModal',
props: {
isOpen: {
type: Boolean,
default: false,
},
},
data() {
return {
sections: [
{
title: 'شروع به کار',
cards: [
{
title: 'راهنمای دسکتاپ',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'راهنمای متا',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'راهنمای مهمان',
icon: require('@/assets/img/card-icon.png'),
},
],
},
{
title: 'ویژگی‌های پیشرفته',
cards: [
{
title: 'تنظیمات پیشرفته',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'اتوماسیون',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'مدیریت کاربران',
icon: require('@/assets/img/card-icon.png'),
},
],
},
{
title: 'راهنمای کاربری',
cards: [
{
title: 'راهنمای نصب',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'راهنمای به‌روزرسانی',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'پشتیبانی',
icon: require('@/assets/img/card-icon.png'),
},
],
},
{
title: 'سوالات متداول',
cards: [
{
title: 'سوالات عمومی',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'مشکلات رایج',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'تماس با ما',
icon: require('@/assets/img/card-icon.png'),
},
{
title: 'ارتباط با ما',
icon: require('@/assets/img/card-icon.png'),
},
],
},
],
};
},
methods: {
closeModal() {
this.$emit('close');
},
},
};
</script>
<style scoped>
.modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
z-index: 1000;
}
.modal-content {
background: #F7F5FA;
border-radius: 8px;
width: 100%;
max-width: 700px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
direction: rtl;
border-radius: 20px;
padding-bottom: 2rem;
height: 95vh;
overflow-y: auto;
scrollbar-width: none;
-ms-overflow-style: none;
}
.modal-content::-webkit-scrollbar {
display: none;
}
.popUp-header {
display: flex;
align-items: center;
justify-content: space-between;
background-color: #101010;
color: #fff;
width: 100%;
padding: 20px 26px;
margin-bottom: 1.5rem;
border-radius: 20px 20px 0px 0px;
}
.popUp-header h2 {
font-size: 22px;
}
.popUp-header button {
background-color: #101010;
border: none;
cursor: pointer;
}
.popUp-body {
display: flex;
flex-direction: column;
gap: 1rem;
padding-bottom: 2.5rem;
}
.popUp-object {
margin-top: 1rem !important;
padding: 20px;
background-color: #FFFFFF;
border-radius: 16px;
width: 100%;
max-width: 620px;
display: block;
margin: auto;
}
.popUp-object {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.popUp-object h2 {
font-size: 20px;
color: #101010;
line-height: 140%;
font-weight: 600;
}
.cards {
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: space-between;
gap: 2rem 0;
}
.card {
width: 31.5%;
height: 10.5rem;
border-radius: 12px;
position: relative;
}
.card-header {
width: 100%;
height: 3.5rem;
background-color: #182561;
border-top-left-radius: 12px;
border-top-right-radius: 12px;
}
.card-logo img {
height: 30px;
width: 30px;
}
.card-logo {
position: absolute;
top: 15px;
right: 34%;
background-color: #fff;
border-radius: 100%;
padding: 1rem 1rem 0.7rem 1rem;
border: 1px solid #182561;
}
.card-body {
background-color: #F7F6FA;
height: 4.5rem;
display: flex;
align-items: flex-end;
justify-content: center;
padding-bottom: 1.2rem;
}
.card-footer {
color: #667387;
font-size: 14px;
border-top: 0.5px solid #E2DEE9;
background-color: #F7F6FA;
height: 2.5rem;
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.exit-btn {
background-color: #3A57E8;
border-radius: 8px;
color: #fff;
border: none;
padding: 15px 45px 15px 45px;
display: block;
margin: auto;
font-size: 16px;
cursor: pointer;
}
</style>

View File

@ -11,7 +11,12 @@
<div class="right-section"> <div class="right-section">
<h2 class="section-title">راهنمای شروع</h2> <h2 class="section-title">راهنمای شروع</h2>
<div class="tutorial-grid"> <div class="tutorial-grid">
<img class="tutorial-item" src="https://c.animaapp.com/m9nvumalUMfQbN/img/tutorials.svg" /> <img
class="tutorial-item"
@click="tutorialShowModal = true;"
src="https://c.animaapp.com/m9nvumalUMfQbN/img/tutorials.svg"
style="cursor: pointer;"
/>
<img class="tutorial-item" src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-20.svg" /> <img class="tutorial-item" src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-20.svg" />
<img class="tutorial-item" src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-19.svg" /> <img class="tutorial-item" src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-19.svg" />
<img class="tutorial-item" src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-21.svg" /> <img class="tutorial-item" src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-21.svg" />
@ -25,7 +30,7 @@
فقط یک ایده با جلسه شگفتانگیز بعدیتان در واقعیت مجازی فاصله دارید. همین امروز آن را برگزار کنید! فقط یک ایده با جلسه شگفتانگیز بعدیتان در واقعیت مجازی فاصله دارید. همین امروز آن را برگزار کنید!
</p> </p>
<button class="create-meeting-btn"> <button class="create-meeting-btn" @click="showModal = true">
<img src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-2.svg" /> <img src="https://c.animaapp.com/m9nvumalUMfQbN/img/frame-2.svg" />
<span>ایجاد جلسه جدید</span> <span>ایجاد جلسه جدید</span>
</button> </button>
@ -96,18 +101,60 @@
</div> </div>
<!-- Create Meeting Modal -->
<CreateMeetingModal
:is-open="showModal"
@create-meeting="createNewMeeting"
@close="showModal = false"
/>
<!-- Tutorial Modal -->
<TutorialShowModal
:is-open="tutorialShowModal"
@close="tutorialShowModal = false"
/>
</template> </template>
<script> <script>
import SidebarMenu from '@/components/SidebarMenu.vue' import SidebarMenu from '@/components/SidebarMenu.vue'
import AppHeader from '@/components/Header.vue'; import AppHeader from '@/components/Header.vue';
import CreateMeetingModal from '@/components/CreateMeetingModal.vue';
import TutorialShowModal from '@/components/TutorialShowModal.vue';
export default { export default {
name: 'DashboardPage', name: 'DashboardPage',
components: { components: {
SidebarMenu, SidebarMenu,
AppHeader, AppHeader,
CreateMeetingModal,
TutorialShowModal,
},
data() {
return {
showModal: false,
tutorialShowModal: false,
}
},
methods: {
createNewMeeting(meetingData) {
const newMeeting = {
id: this.meetings.length + 1,
title: meetingData.title,
date: meetingData.date,
image: 'https://via.placeholder.com/150',
type: meetingData.type,
maxCapacity: meetingData.maxCapacity,
};
this.meetings.push(newMeeting);
this.showModal = false;
},
filterMeetings() {
console.log('Filtering meetings');
},
} }
} }
</script> </script>