'删除多余页面

This commit is contained in:
fujiao 2022-10-18 21:06:43 +08:00
parent 0b337ca3e2
commit d4fa831510
125 changed files with 415 additions and 30697 deletions

View File

@ -4,48 +4,69 @@ export const menuItems = [
label: 'menuitems.home.text',
icon: 'bx-home-circle',
link: '/',
// subItems: [
// {
// id: 2,
// label: 'menuitems.dashboards.list.default',
// parentId: 1
// },
// {
// id: 3,
// label: 'menuitems.dashboards.list.saas',
// link: '/dashboard/saas',
// parentId: 1
// },
// {
// id: 4,
// label: 'menuitems.dashboards.list.crypto',
// link: '/dashboard/crypto',
// parentId: 1
// },
// {
// id: 5,
// label: 'menuitems.dashboards.list.blog',
// link: '/dashboard/blog',
// parentId: 1
// },
// ]
},
// {
// id: 81,
// label: 'menuitems.visa.text',
// icon: "bx-tone",
// link: '/tables/basic',
// // subItems: [
// // {
// // id: 82,
// // label: 'menuitems.visa.list.basic',
// // link: '/tables/basic',
// // parentId: 81
// // },
// // ]
// },
{
id: 2,
label: 'Add Your Case',
icon: "bx-tone",
link: '/visa/add',
},
{
id: 6,
label: 'Monthly Case',
icon: 'bx-tone',
isUiElement: true,
subItems: [
{
id: 7,
label: '2022-10',
link: '/home/list?month=2022-10',
parentId: 6
},
{
id: 8,
label: '2022-09',
link: '/home/list?month=2022-09',
parentId: 6
},
{
id: 9,
label: '2022-08',
link: '/home/list?month=2022-08',
parentId: 6
}
]
},
{
id: 66,
label: "Complete Case",
icon: "bx-detail",
subItems: [
{
id: 67,
label: "Last 7 Days' Complete Cases",
link: '/home/list?month=2022-10',
// link: '/home/list?days=7',
parentId: 66
},
{
id: 68,
label: "Last 30 Days' Complete Cases",
link: '/home/list?month=2022-09',
// link: '/home/list?days=30',
parentId: 66
},
{
id: 69,
label: "Last 90 Days' Complete Cases",
link: '/home/list?month=2022-08',
// link: '/home/list?days=90',
parentId: 66
}
]
},
{
id: 70,
label: "menuitems.blog.text",
icon: "bx-detail",
link: '/blog/list',

View File

@ -194,4 +194,9 @@ export default {
</nav>
</div>
</div>
</template>
</template>
<style scoped>
.topnav{
margin-top: 100px !important;
}
</style>

View File

@ -185,15 +185,15 @@ export default {
</router-link>
</div>
</div>
<div class="d-flex save-ad">预留广告位</div>
<div class="d-flex">
<div class="font-size-16 header-item" style="line-height:70px; margin-right:2rem; cursor: pointer;text-decoration:underline;" @click="goLink()">{{$t('navbar.link.text')}}</div>
<select v-model="$i18n.locale" class="lang-dropdown border-0">
<option v-for="(locale, i) in languages" :key="`locale-${i}`" :value="locale.language">
{{ locale.title }}
</option>
</select>
<div class="dropdown d-none d-lg-inline-block ms-1">
<!-- <select v-model="$i18n.locale" class="lang-dropdown border-0">
<option v-for="(locale, i) in languages" :key="`locale-${i}`" :value="locale.language">
{{ locale.title }}
</option>
</select> -->
<!-- <div class="dropdown d-none d-lg-inline-block ms-1">
<button
type="button"
class="btn header-item noti-icon"
@ -201,7 +201,7 @@ export default {
>
<i class="bx bx-fullscreen"></i>
</button>
</div>
</div> -->
<b-dropdown right variant="black" toggle-class="header-item">
<template v-slot:button-content>
@ -271,3 +271,18 @@ export default {
</div>
</header>
</template>
<style scoped>
.navbar-header{
max-width: 100% !important;
height: 100px;
}
.save-ad{
flex: 1 1 ;
font-size: 35px;
color: #ffffff;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
</style>

View File

@ -21,8 +21,7 @@ export default {
<div class="row">
<div class="col-12">
<div class="page-title-box d-flex align-items-center justify-content-between">
<h4 class="mb-0 font-size-18">{{ title }}</h4>
<!-- <h4 class="mb-0 font-size-18">{{ title }}</h4> -->
<div class="page-title-right">
<b-breadcrumb :items="items" class="m-0"></b-breadcrumb>
</div>

View File

@ -8,9 +8,21 @@ export default {
Loader,
},
data() {
return {};
return {
userName:''
};
},
mounted() {
const userInfo = this.$store.getters['auth/getCurrentUser'];
console.log('userInfo:',userInfo);
this.userName = userInfo?userInfo.userName:''
},
methods:{
linkAdd(){
// this.$emit('goAdd')
this.$router.push('/visa/add')
}
},
mounted() {},
props: {
updating: {
type: Boolean,
@ -36,7 +48,7 @@ export default {
</div>
<div class="card-body pt-0">
<div class="row">
<div class="col-sm-4">
<div class="col-sm-3">
<div class="avatar-md profile-user-wid mb-4">
<img
src="@/assets/images/users/avatar-1.jpg"
@ -44,26 +56,23 @@ export default {
class="img-thumbnail rounded-circle"
/>
</div>
<h5 class="font-size-15 text-truncate">Henry Price</h5>
<p class="text-muted mb-0 text-truncate">UI/UX Designer</p>
<h5 class="font-size-15 text-truncate">{{userName}}</h5>
<!-- <p class="text-muted mb-0 text-truncate">UI/UX Designer</p> -->
</div>
<div class="col-sm-8">
<div class="col-sm-9">
<div class="pt-4">
<div class="row">
<div class="col-6">
<h5 class="font-size-15">125</h5>
<p class="text-muted mb-0">Projects</p>
</div>
<div class="col-6">
<h5 class="font-size-15">$1245</h5>
<p class="text-muted mb-0">Revenue</p>
</div>
</div>
<div class="mt-4">
<a href class="btn btn-primary btn-sm">
View Profile
<i class="mdi mdi-arrow-right ms-1"></i>
<template v-if="!userName">
<a href class="btn btn-primary btn-sm">
Login
</a>
<a href class="btn btn-primary btn-sm ml20">
Register
</a>
</template>
<a href="javascript: void(0);" @click="linkAdd()" class="btn btn-primary btn-sm ml20">
+Add Your Case
</a>
</div>
</div>
@ -75,3 +84,8 @@ export default {
<!-- end card -->
</Loader>
</template>
<style scoped>
.ml20{
margin-left: 10px;
}
</style>

View File

@ -0,0 +1,42 @@
<script>
/**
* Stat component -- specify the widget icon, title and value.
*/
export default {
props: {
title: {
type: String,
default: ""
},
list: {
type: Array,
default: ()=>[]
},
}
};
</script>
<template>
<div class="card mini-stats-wid">
<div class="card-body">
<div class="d-flex">
<div class="flex-grow-1">
<h2 class="fw-medium mb-2">{{title}}</h2>
<!-- <h4 class="mb-0">{{value}}</h4> -->
</div>
<!-- <span class="avatar-title">
<i :class="`${icon} font-size-24`"></i>
</span> -->
<div class="flex-grow-1">
<div class="row" v-for="(item,idx) in list" :key="idx">
<h4 class="fw-medium mb-2 col-xl-10" style="text-align:right;">{{item.name}}</h4>
<h4 class="mb-0 col-xl-2">{{item.value}}</h4>
</div>
</div>
</div>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
</template>

View File

@ -665,7 +665,7 @@ body[data-sidebar="colored"].vertical-collpsed .vertical-menu #sidebar-menu ul l
padding: 0 calc(24px / 2);
-webkit-box-shadow: 0 0.75rem 1.5rem rgba(18, 38, 63, 0.03);
box-shadow: 0 0.75rem 1.5rem rgba(18, 38, 63, 0.03);
margin-top: 70px;
margin-top: 100px;
position: fixed;
right: 0;
left: 0;

View File

@ -13,7 +13,7 @@ const service = axios.create({
}
})
const needTokenURL = ['/api/visa/AddVisaCase','/visa/update','/auth/user/password/change']
const needTokenURL = ['/api/visa/AddVisaCase','/api/visa/UpdateVisaCase','/auth/user/password/change']
// 添加请求拦截器
service.interceptors.request.use(
function (config) {

View File

@ -2,7 +2,7 @@
import HorizontalTopbar from "@/components/horizontal-topbar";
import HorizontalNav from "@/components/horizontal-nav";
import RightBar from "@/components/right-bar";
// import Footer from "@/components/footer";
import Footer from "@/components/footer";
import { layoutComputed } from "@/state/helpers";
@ -14,7 +14,7 @@ export default {
components: {
HorizontalTopbar,
HorizontalNav,
// Footer,
Footer,
RightBar,
},
data() {
@ -77,14 +77,16 @@ export default {
<!-- Start right Content here -->
<!-- ============================================================== -->
<div class="main-content">
<div class="page-content">
<div class="page-content" style="display:flex;">
<div class="content-ad">预留广告位</div>
<div class="container-fluid">
<slot />
</div>
<div class="content-ad">预留广告位</div>
<!-- container-fluid -->
</div>
<!-- End Page-content -->
<!-- <Footer /> -->
<Footer />
</div>
<!-- end main content-->
</div>
@ -92,3 +94,21 @@ export default {
<RightBar />
</div>
</template>
<style scoped>
.page-content{
margin-top: 100px !important;
}
.container-fluid{
max-width: 70% !important;
}
.content-ad{
width: 15%;
font-size: 30px;
font-weight: bold;
display: flex;
justify-content: center;
align-items: center;
/* writing-mode : lr-tb; */
writing-mode: tb-rl;
}
</style>

View File

@ -7,9 +7,16 @@ export default [
meta: {
authRequired: true,
},
// component: () => import("./views/dashboards/default"),
component: () => import("./views/home/index"),
},
{
path: "/default",
name: "idnex",
meta: {
authRequired: true,
},
component: () => import("./views/dashboards/default"),
},
{
path: "/login",
name: "login",
@ -498,12 +505,12 @@ export default [
// meta: { authRequired: true },
// component: () => import("./views/maps/leaflet/index"),
// },
{
path: "/tables/basic",
name: "Basic Tables",
meta: { authRequired: true },
component: () => import("./views/tables/basictable"),
},
// {
// path: "/tables/basic",
// name: "Basic Tables",
// meta: { authRequired: true },
// component: () => import("./views/tables/basictable"),
// },
// {
// path: "/form/advanced",
// name: "Form Advanced",
@ -654,42 +661,42 @@ export default [
// meta: { authRequired: true },
// component: () => import("./views/tasks/task-create"),
// },
{
path: "/auth/login-1",
name: "Login sample",
meta: { authRequired: true },
component: () => import("./views/sample-pages/login-sample"),
},
// {
// path: "/auth/login-1",
// name: "Login sample",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/login-sample"),
// },
// {
// path: "/auth/login-2",
// name: "Login-2-sample",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/login-2"),
// },
{
path: "/auth/register-1",
name: "Register sample",
meta: { authRequired: true },
component: () => import("./views/sample-pages/register-sample"),
},
// {
// path: "/auth/register-1",
// name: "Register sample",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/register-sample"),
// },
// {
// path: "/auth/register-2",
// name: "Register-2",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/register-2"),
// },
{
path: "/auth/recoverpwd",
name: "Recover pwd",
meta: { authRequired: true },
component: () => import("./views/sample-pages/recoverpw-sample"),
},
{
path: "/auth/recoverpwd-2",
name: "Recover pwd-2",
meta: { authRequired: true },
component: () => import("./views/sample-pages/recoverpwd-2"),
},
// {
// path: "/auth/recoverpwd",
// name: "Recover pwd",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/recoverpw-sample"),
// },
// {
// path: "/auth/recoverpwd-2",
// name: "Recover pwd-2",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/recoverpwd-2"),
// },
// {
// path: "/auth/lock-screen",
// name: "Lock screen",
@ -702,36 +709,36 @@ export default [
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/lockscreen-2"),
// },
{
path: "/auth/confirm-mail",
name: "confirm-mail",
meta: { authRequired: true },
component: () => import("./views/sample-pages/confirm-mail"),
},
// {
// path: "/auth/confirm-mail",
// name: "confirm-mail",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/confirm-mail"),
// },
// {
// path: "/auth/confirm-mail-2",
// name: "confirm-mail-2",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/confirm-mail-2"),
// },
{
path: "/auth/email-verification",
name: "email-verification",
meta: { authRequired: true },
component: () => import("./views/sample-pages/email-verification"),
},
// {
// path: "/auth/email-verification",
// name: "email-verification",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/email-verification"),
// },
// {
// path: "/auth/email-verification-2",
// name: "email-verification-2",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/email-verification-2"),
// },
{
path: "/auth/two-step-verification",
name: "two-step-verification",
meta: { authRequired: true },
component: () => import("./views/sample-pages/two-step-verification"),
},
// {
// path: "/auth/two-step-verification",
// name: "two-step-verification",
// meta: { authRequired: true },
// component: () => import("./views/sample-pages/two-step-verification"),
// },
// {
// path: "/auth/two-step-verification-2",
// name: "two-step-verification-2",

View File

@ -1,365 +0,0 @@
<script>
import FullCalendar from "@fullcalendar/vue3";
import dayGridPlugin from "@fullcalendar/daygrid";
import timeGridPlugin from "@fullcalendar/timegrid";
import interactionPlugin from "@fullcalendar/interaction";
import bootstrapPlugin from "@fullcalendar/bootstrap";
import listPlugin from "@fullcalendar/list";
import { required, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
import Swal from "sweetalert2";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { calendarEvents, categories } from "./data-calendar";
/**
* Calendar component
*/
export default {
setup() {
return { v$: useVuelidate() };
},
page: {
title: "Calendar",
meta: [{ name: "description", content: appConfig.description }],
},
components: {
FullCalendar,
Layout,
PageHeader,
},
data() {
return {
title: "Calendar",
items: [
{
text: "Skote",
},
{
text: "Calendar",
active: true,
},
],
calendarEvents: calendarEvents,
calendarOptions: {
headerToolbar: {
left: "prev,next today",
center: "title",
right: "dayGridMonth,timeGridWeek,timeGridDay,listWeek",
},
plugins: [
dayGridPlugin,
timeGridPlugin,
interactionPlugin,
bootstrapPlugin,
listPlugin,
],
initialView: "dayGridMonth",
themeSystem: "bootstrap",
initialEvents: calendarEvents,
editable: true,
droppable: true,
eventResizableFromStart: true,
dateClick: this.dateClicked,
eventClick: this.editEvent,
eventsSet: this.handleEvents,
weekends: true,
selectable: true,
selectMirror: true,
dayMaxEvents: true,
},
currentEvents: [],
showModal: false,
eventModal: false,
categories: categories,
submitted: false,
submit: false,
newEventData: {},
edit: {},
deleteId: {},
event: {
title: "",
category: "",
},
editevent: {
editTitle: "",
editcategory: "",
},
};
},
validations: {
event: {
title: {
required: helpers.withMessage("Title is required", required),
},
category: {
required: helpers.withMessage("Category is required", required),
},
},
},
methods: {
/**
* Modal form submit
*/
// eslint-disable-next-line no-unused-vars
handleSubmit(e) {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
const title = this.event.title;
const category = this.event.category;
let calendarApi = this.newEventData.view.calendar;
this.currentEvents = calendarApi.addEvent({
id: this.newEventData.length + 1,
title,
start: this.newEventData.date,
end: this.newEventData.date,
classNames: [category],
});
this.successmsg();
this.showModal = false;
this.newEventData = {};
}
this.submitted = false;
this.event = {};
},
// eslint-disable-next-line no-unused-vars
hideModal(e) {
this.submitted = false;
this.showModal = false;
this.event = {};
},
/**
* Edit event modal submit
*/
// eslint-disable-next-line no-unused-vars
editSubmit(e) {
this.submit = true;
const editTitle = this.editevent.editTitle;
const editcategory = this.editevent.editcategory;
this.edit.setProp("title", editTitle);
this.edit.setProp("classNames", editcategory);
this.successmsg();
this.eventModal = false;
},
/**
* Delete event
*/
deleteEvent() {
this.edit.remove();
this.eventModal = false;
},
/**
* Modal open for add event
*/
dateClicked(info) {
this.newEventData = info;
this.showModal = true;
},
/**
* Modal open for edit event
*/
editEvent(info) {
this.edit = info.event;
this.editevent.editTitle = this.edit.title;
this.editevent.editcategory = this.edit.classNames[0];
this.eventModal = true;
},
closeModal() {
this.eventModal = false;
},
confirm() {
Swal.fire({
title: "Are you sure?",
text: "You won't be able to delete this!",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#34c38f",
cancelButtonColor: "#f46a6a",
confirmButtonText: "Yes, delete it!",
}).then((result) => {
if (result.value) {
this.deleteEvent();
Swal.fire("Deleted!", "Event has been deleted.", "success");
}
});
},
/**
* Show list of events
*/
handleEvents(events) {
this.currentEvents = events;
},
/**
* Show successfull Save Dialog
*/
successmsg() {
Swal.fire({
position: "center",
icon: "success",
title: "Event has been saved",
showConfirmButton: false,
timer: 1000,
});
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="app-calendar">
<FullCalendar
ref="fullCalendar"
:options="calendarOptions"
></FullCalendar>
</div>
</div>
</div>
</div>
</div>
<b-modal
v-model="showModal"
title="Add New Event"
title-class="text-black font-18"
body-class="p-3"
hide-footer
>
<form @submit.prevent="handleSubmit">
<div class="row">
<div class="col-12">
<div class="mb-3">
<label for="name">Event Name</label>
<input
id="name"
v-model="event.title"
type="text"
class="form-control"
placeholder="Insert Event name"
:class="{ 'is-invalid': submitted && v$.event.title.$error }"
/>
<div
v-if="submitted && v$.event.title.$error"
class="invalid-feedback"
>
<span v-if="v$.event.title.required.$message">{{
v$.event.title.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label class="control-label">Category</label>
<select
v-model="event.category"
class="form-control"
name="category"
:class="{ 'is-invalid': submitted && v$.event.category.errors }"
>
<option
v-for="option in categories"
:key="option.backgroundColor"
:value="`${option.value}`"
>
{{ option.name }}
</option>
</select>
<div
v-if="submitted && v$.event.category.$error"
class="invalid-feedback"
>
<span v-if="v$.event.category.required.$message">{{
v$.event.category.required.$message
}}</span>
</div>
</div>
</div>
</div>
<div class="text-end pt-5 mt-3">
<b-button variant="light" @click="hideModal">Close</b-button>
<b-button type="submit" variant="success" class="ms-1"
>Create event</b-button
>
</div>
</form>
</b-modal>
<!-- Edit Modal -->
<b-modal
v-model="eventModal"
title="Edit Event"
title-class="text-black font-18"
hide-footer
body-class="p-3"
>
<div>Edit Event</div>
<form @submit.prevent="editSubmit">
<div class="row">
<div class="col-12">
<div class="mb-3">
<label for="name">Event Name</label>
<input
id="name"
v-model="editevent.editTitle"
type="text"
class="form-control"
placeholder="Insert Event name"
/>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label class="control-label">Category</label>
<select
v-model="editevent.editcategory"
class="form-control"
name="category"
>
<option
v-for="option in categories"
:key="option.backgroundColor"
:value="`${option.value}`"
>
{{ option.name }}
</option>
</select>
</div>
</div>
</div>
<div class="text-end p-3">
<b-button variant="light" @click="closeModal">Close</b-button>
<b-button class="ms-1" variant="danger" @click="confirm"
>Delete</b-button
>
<b-button class="ms-1" variant="success" @click="editSubmit"
>Save</b-button
>
</div>
</form>
</b-modal>
</Layout>
</template>

View File

@ -1,56 +0,0 @@
const categories = [
{
name: 'Danger',
value: 'bg-danger'
},
{
name: 'Success',
value: 'bg-success'
},
{
name: 'Primary',
value: 'bg-primary'
},
{
name: 'Info',
value: 'bg-info'
},
{
name: 'Dark',
value: 'bg-dark'
},
{
name: 'Warning',
value: 'bg-warning'
},
];
const calendarEvents = [
{
id: 1,
title: 'Hey!',
start: new Date().setDate(new Date().getDate() + 2),
className: 'bg-warning text-white',
},
{
id: 2,
title: 'See John Deo',
start: new Date(),
end: new Date(),
className: 'bg-success text-white',
},
{
id: 3,
title: 'Meet John Deo',
start: new Date().setDate(new Date().getDate() + 2),
className: 'bg-info text-white',
},
{
id: 4,
title: 'Buy a Theme',
start: new Date().setDate(new Date().getDate() + 4),
className: 'bg-primary text-white'
}
];
export { categories, calendarEvents };

View File

@ -1,239 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import {
linewithDataChart,
dashedLineChart,
splineAreaChart,
columnChart,
columnDatalabelChart,
barChart,
mixedChart,
radialChart,
pieChart,
donutChart
} from "./data-apex";
/**
* Apex-chart component
*/
export default {
page: {
title: "Apex Chart",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader },
data() {
return {
linewithDataChart: linewithDataChart,
dashedLineChart: dashedLineChart,
splineAreaChart: splineAreaChart,
columnChart: columnChart,
columnDatalabelChart: columnDatalabelChart,
barChart: barChart,
mixedChart: mixedChart,
radialChart: radialChart,
pieChart: pieChart,
donutChart: donutChart,
title: "Apex charts",
items: [
{
text: "Charts",
href: "/"
},
{
text: "Apex charts",
active: true
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Line With Data Labels</h4>
<!-- Line with Data Labels chart -->
<apexchart
class="apex-charts"
height="380"
type="line"
dir="ltr"
:series="linewithDataChart.series"
:options="linewithDataChart.chartOptions"
></apexchart>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Dashed Line</h4>
<!-- Dashed Line Chart -->
<apexchart
class="apex-charts"
height="380"
type="line"
dir="ltr"
:series="dashedLineChart.series"
:options="dashedLineChart.chartOptions"
></apexchart>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Spline Area</h4>
<!-- Spline Area chart -->
<apexchart
class="apex-charts"
height="350"
type="area"
dir="ltr"
:series="splineAreaChart.series"
:options="splineAreaChart.chartOptions"
></apexchart>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Column Chart</h4>
<!-- Column Charts -->
<apexchart
class="apex-charts"
height="350"
type="bar"
dir="ltr"
:series="columnChart.series"
:options="columnChart.chartOptions"
></apexchart>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Column With Data Labels</h4>
<!-- Column with Data Labels -->
<apexchart
class="apex-charts"
height="350"
type="bar"
dir="ltr"
:series="columnDatalabelChart.series"
:options="columnDatalabelChart.chartOptions"
></apexchart>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Bar Chart</h4>
<!-- Bar Chart -->
<apexchart
class="apex-charts"
height="350"
type="bar"
dir="ltr"
:series="barChart.series"
:options="barChart.chartOptions"
></apexchart>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Line, Column & Area Chart</h4>
<!-- Line, Column & Area Chart -->
<apexchart
class="apex-charts"
height="350"
type="line"
dir="ltr"
:series="mixedChart.series"
:options="mixedChart.chartOptions"
></apexchart>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Radial Chart</h4>
<!-- Radial Chart -->
<apexchart
class="apex-charts"
height="370"
type="radialBar"
dir="ltr"
:series="radialChart.series"
:options="radialChart.chartOptions"
></apexchart>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Pie Chart</h4>
<!-- Pie Chart -->
<apexchart
class="apex-charts"
height="320"
type="pie"
dir="ltr"
:series="pieChart.series"
:options="pieChart.chartOptions"
></apexchart>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Donut Chart</h4>
<!-- Donut Chart -->
<apexchart
class="apex-charts"
height="320"
type="donut"
dir="ltr"
:series="donutChart.series"
:options="donutChart.chartOptions"
></apexchart>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,304 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import {
smilAnimationChart,
simpleLineChart,
polarBarChart,
areaLineChart,
lineSmoothingChart,
overlappingBarChart,
stackBarChart,
horizontalBarChart,
donutAnimateChart,
simplePieChart,
distributedSeries,
labelPlacementChart,
extremeConfiguration,
lineAreaChart
} from "./data-chartist";
/**
* Chartist-chart component
*/
export default {
page: {
title: "Chartist Chart",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader },
data() {
return {
smilAnimationChart: smilAnimationChart,
simpleLineChart: simpleLineChart,
polarBarChart: polarBarChart,
areaLineChart: areaLineChart,
lineSmoothingChart: lineSmoothingChart,
overlappingBarChart: overlappingBarChart,
stackBarChart: stackBarChart,
horizontalBarChart: horizontalBarChart,
donutAnimateChart: donutAnimateChart,
simplePieChart: simplePieChart,
distributedSeries: distributedSeries,
labelPlacementChart: labelPlacementChart,
extremeConfiguration: extremeConfiguration,
lineAreaChart: lineAreaChart,
title: "Chartist Charts",
items: [
{
text: "Charts",
href: "/"
},
{
text: "Chartist Charts",
active: true
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Advanced Smil Animations</h4>
<!-- Advanced Smil Animations -->
<chartist
ratio="ct-chart"
:data="smilAnimationChart.data"
:options="smilAnimationChart.options"
type="Line"
></chartist>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Simple Line Chart</h4>
<!-- Simple line chart -->
<chartist
ratio="ct-chart"
:data="simpleLineChart.data"
:options="simpleLineChart.options"
type="Line"
></chartist>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Line Chart With Area</h4>
<!-- Line chart with area -->
<chartist
ratio="ct-chart"
:data="areaLineChart.data"
:options="areaLineChart.options"
type="Line"
></chartist>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Bi-polar Line Chart Wth Area Only</h4>
<!-- Bi-polar Line chart -->
<chartist
ratio="ct-chart"
:data="lineAreaChart.data"
:options="lineAreaChart.options"
type="Line"
></chartist>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Line Interpolation / Smoothing</h4>
<!-- Line Interpolation / Smoothing chart -->
<chartist
ratio="ct-chart"
type="Line"
:data="lineSmoothingChart.data"
:options="lineSmoothingChart.options"
></chartist>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Overlapping Bars On Mobile</h4>
<!-- Overlapping bars on mobile -->
<chartist
ratio="ct-chart"
:data="overlappingBarChart.data"
:options="overlappingBarChart.options"
type="Bar"
></chartist>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Stacked Bar Chart</h4>
<!-- Stacked bar chart -->
<chartist
ratio="ct-chart"
:data="stackBarChart.data"
:options="stackBarChart.options"
type="Bar"
></chartist>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Horizontal Bar Chart</h4>
<!-- Horizontal bar chart -->
<chartist
ratio="ct-chart"
:data="horizontalBarChart.data"
:options="horizontalBarChart.options"
type="Bar"
></chartist>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Distributed Series</h4>
<!-- Distributed series -->
<chartist
ratio="ct-chart"
:data="distributedSeries.data"
:options="distributedSeries.options"
type="Bar"
></chartist>
</div>
<!-- end card-body -->
</div>
</div>
<!-- end col -->
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Label Placement</h4>
<!-- Label placement chart -->
<chartist
ratio="ct-chart"
:data="labelPlacementChart.data"
:options="labelPlacementChart.options"
type="Bar"
></chartist>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Extreme Responsive Configuration</h4>
<chartist
ratio="ct-chart"
:data="extremeConfiguration.data"
:options="extremeConfiguration.options"
type="Bar"
></chartist>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body" dir="ltr">
<h4 class="card-title mb-4">Bi-polar Bar Chart</h4>
<!-- Bi-polar bar -->
<chartist
ratio="ct-chart"
:data="polarBarChart.data"
:options="polarBarChart.options"
type="Bar"
></chartist>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Donut With Svg.animate</h4>
<!-- Animating a Donut with Svg.animate -->
<chartist
ratio="ct-chart"
:data="donutAnimateChart.data"
:options="donutAnimateChart.options"
type="Pie"
></chartist>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Simple Pie Chart</h4>
<!-- Simple pie chart -->
<chartist
ratio="ct-chart"
:data="simplePieChart.data"
:options="simplePieChart.options"
type="Pie"
></chartist>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,240 +0,0 @@
const line = {
type: "line",
data: {
labels: [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
],
datasets: [{
label: "Sales Analytics",
fill: true,
lineTension: 0.5,
backgroundColor: "rgba(85, 110, 230, 0.2)",
borderColor: "#556ee6",
borderCapStyle: "butt",
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: "miter",
pointBorderColor: "#556ee6",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "#556ee6",
pointHoverBorderColor: "#fff",
pointHoverBorderWidth: 2,
pointRadius: 1,
pointHitRadius: 10,
data: [65, 59, 80, 81, 56, 55, 40, 55, 30, 80],
},
{
label: "Monthly Earnings",
fill: true,
lineTension: 0.5,
backgroundColor: "rgba(235, 239, 242, 0.2)",
borderColor: "#ebeff2",
borderCapStyle: "butt",
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: "miter",
pointBorderColor: "#ebeff2",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "#ebeff2",
pointHoverBorderColor: "#eef0f2",
pointHoverBorderWidth: 2,
pointRadius: 1,
pointHitRadius: 10,
data: [80, 23, 56, 65, 23, 35, 85, 25, 92, 36],
},
],
},
options: {
defaultFontColor: "#8791af",
responsive: true,
maintainAspectRatio: false,
xAxes: [{
gridLines: {
color: "rgba(166, 176, 207, 0.1)",
},
},],
yAxes: [{
ticks: {
max: 100,
min: 20,
stepSize: 10,
},
gridLines: {
color: "rgba(166, 176, 207, 0.1)",
},
},],
},
};
const pie = {
type: "pie",
data: {
labels: ["Desktops", "Tablets"],
datasets: [
{
data: [300, 180],
backgroundColor: ["#34c38f", "#ebeff2"],
hoverBackgroundColor: ["#34c38f", "#ebeff2"],
hoverBorderColor: "#fff",
},
],
},
options: {
maintainAspectRatio: true,
responsive: true,
},
};
const Doughnut = {
type: "doughnut",
data: {
labels: ["Desktops", "Tablets"],
datasets: [
{
data: [300, 210],
backgroundColor: ["#556ee6", "#ebeff2"],
hoverBackgroundColor: ["#556ee6", "#ebeff2"],
hoverBorderColor: "#fff",
borderWidth: 0,
radius: "90%",
innerRadius: "75%",
},
],
},
options: {
maintainAspectRatio: true,
},
};
const radar = {
type: 'radar',
data: {
labels: [
'Eating',
'Drinking',
'Sleeping',
'Designing',
'Coding',
'Cycling',
'Running',
],
datasets: [
{
label: 'Desktops',
backgroundColor: 'rgba(52, 195, 143, 0.2)',
borderColor: '#34c38f',
pointBackgroundColor: '#34c38f',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: '#34c38f',
data: [65, 59, 90, 81, 56, 55, 40],
},
{
label: 'Tablets',
backgroundColor: 'rgba(85, 110, 230, 0.2)',
borderColor: '#556ee6',
pointBackgroundColor: '#556ee6',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: '#556ee6',
data: [28, 48, 40, 19, 96, 27, 100],
},
],
},
options: {
maintainAspectRatio: true,
legend: {
position: 'top',
},
}
}
const bar = {
type: "bar",
data: {
labels: [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
],
datasets: [
{
barPercentage: 0.4,
label: "Sales Analytics",
backgroundColor: "rgba(52, 195, 143, 0.8)",
borderColor: "rgba(52, 195, 143, 0.8)",
borderWidth: 1,
hoverBackgroundColor: "rgba(52, 195, 143, 0.9)",
hoverBorderColor: "rgba(52, 195, 143, 0.9)",
data: [65, 59, 81, 45, 56, 80, 50, 20],
},
],
},
options: {
responsive: true,
maintainAspectRatio: false,
xAxes: [
{
gridLines: {
color: "rgba(166, 176, 207, 0.1)",
},
},
],
yAxes: [
{
gridLines: {
color: "rgba(166, 176, 207, 0.1)",
},
},
],
},
};
const PolarArea = {
type: "polarArea",
data: {
labels: ["Series 1", "Series 2", "Series 3", "Series 4"],
datasets: [
{
data: [11, 16, 7, 18],
backgroundColor: ["#f46a6a", "#34c38f", "#f1b44c", "#556ee6"],
label: "My dataset", // for legend
hoverBorderColor: "#fff",
},
],
},
options: {
maintainAspectRatio: true,
legend: {
position: "top",
},
},
};
export {
line,
pie,
Doughnut,
radar,
bar,
PolarArea
};

View File

@ -1,221 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import Vue3ChartJs from "@j-t-mcc/vue3-chartjs";
import { line, pie, Doughnut, radar, bar, PolarArea } from "./data";
/**
* Chartjs-chart component
*/
export default {
page: {
title: "Chartjs Charts",
meta: [{ name: "description", content: appConfig.description }],
},
components: {
Layout,
PageHeader,
Vue3ChartJs,
},
data() {
return {
line: line,
pie: pie,
Doughnut: Doughnut,
radar: radar,
bar: bar,
PolarArea: PolarArea,
title: "Chartjs Charts",
items: [
{
text: "Charts",
href: "/",
},
{
text: "Chartjs Charts",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Line Chart</h4>
<div class="row text-center">
<div class="col-sm-4">
<h5 class="mb-0">86541</h5>
<p class="text-muted">Activated</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">2541</h5>
<p class="text-muted">Pending</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">102030</h5>
<p class="text-muted">Deactivated</p>
</div>
</div>
<!-- Line Chart -->
<vue3-chart-js
class="chartjs-chart"
v-bind="{ ...line }"
></vue3-chart-js>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Bar Chart</h4>
<div class="row text-center">
<div class="col-sm-4">
<h5 class="mb-0">2541</h5>
<p class="text-muted">Activated</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">84845</h5>
<p class="text-muted">Pending</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">12001</h5>
<p class="text-muted">Deactivated</p>
</div>
</div>
<!-- Bar Chart -->
<vue3-chart-js
class="chartjs-chart"
v-bind="{ ...bar }"
></vue3-chart-js>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Pie Chart</h4>
<div class="row text-center">
<div class="col-sm-4">
<h5 class="mb-0">2536</h5>
<p class="text-muted">Activated</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">69421</h5>
<p class="text-muted">Pending</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">89854</h5>
<p class="text-muted">Deactivated</p>
</div>
</div>
<!-- Pie Chart -->
<vue3-chart-js
:height="140"
class="chartjs-chart"
v-bind="{ ...pie }"
></vue3-chart-js>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Donut Chart</h4>
<div class="row text-center">
<div class="col-sm-4">
<h5 class="mb-0">9595</h5>
<p class="text-muted">Activated</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">36524</h5>
<p class="text-muted">Pending</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">62541</h5>
<p class="text-muted">Deactivated</p>
</div>
</div>
<!-- Donut Chart -->
<vue3-chart-js
:height="140"
class="chartjs-chart"
v-bind="{ ...Doughnut }"
></vue3-chart-js>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Polar area Chart</h4>
<div class="row text-center">
<div class="col-sm-4">
<h5 class="mb-0">4852</h5>
<p class="text-muted">Activated</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">3652</h5>
<p class="text-muted">Pending</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">85412</h5>
<p class="text-muted">Deactivated</p>
</div>
</div>
<!-- Polar area Chart -->
<vue3-chart-js
:height="140"
class="chartjs-chart"
v-bind="{ ...PolarArea }"
></vue3-chart-js>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Radar Chart</h4>
<div class="row text-center">
<div class="col-sm-4">
<h5 class="mb-0">694</h5>
<p class="text-muted">Activated</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">55210</h5>
<p class="text-muted">Pending</p>
</div>
<div class="col-sm-4">
<h5 class="mb-0">489498</h5>
<p class="text-muted">Deactivated</p>
</div>
</div>
<!-- Radar Chart -->
<vue3-chart-js
:height="140"
class="chartjs-chart"
v-bind="{ ...radar }"
></vue3-chart-js>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,545 +0,0 @@
const linewithDataChart = {
chartOptions: {
chart: {
height: 380,
type: 'line',
zoom: {
enabled: false
},
toolbar: {
show: false
}
},
colors: ['#556ee6', '#34c38f'],
dataLabels: {
enabled: false,
},
stroke: {
width: [3, 3],
curve: 'straight'
},
title: {
text: 'Average High & Low Temperature',
align: 'left',
style: {
fontWeight: '500',
},
},
grid: {
row: {
colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns
opacity: 0.2
},
borderColor: '#f1f1f1'
},
markers: {
style: 'inverted',
size: 6
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
title: {
text: 'Month'
}
},
yaxis: {
title: {
text: 'Temperature'
},
min: 5,
max: 40
},
legend: {
position: 'top',
horizontalAlign: 'right',
floating: true,
offsetY: -25,
offsetX: -5
},
responsive: [{
breakpoint: 600,
options: {
chart: {
toolbar: {
show: false
}
},
legend: {
show: false
},
}
}],
},
series: [{
name: "High - 2018",
data: [26, 24, 32, 36, 33, 31, 33]
},
{
name: "Low - 2018",
data: [14, 11, 16, 12, 17, 13, 12]
}
],
};
const dashedLineChart = {
series: [{
name: "Session Duration",
data: [45, 52, 38, 24, 33, 26, 21, 20, 6, 8, 15, 10]
},
{
name: "Page Views",
data: [36, 42, 60, 42, 13, 18, 29, 37, 36, 51, 32, 35]
},
{
name: 'Total Visits',
data: [89, 56, 74, 98, 72, 38, 64, 46, 84, 58, 46, 49]
}],
chartOptions: {
chart: {
zoom: {
enabled: false
},
toolbar: {
show: false,
}
},
colors: ['#556ee6', '#f46a6a', '#34c38f'],
dataLabels: {
enabled: false
},
stroke: {
width: [3, 4, 3],
curve: 'straight',
dashArray: [0, 8, 5]
},
title: {
text: 'Page Statistics',
align: 'left',
style: {
fontWeight: '500',
},
},
markers: {
size: 0,
hover: {
sizeOffset: 6
}
},
xaxis: {
categories: ['01 Jan', '02 Jan', '03 Jan', '04 Jan', '05 Jan', '06 Jan', '07 Jan', '08 Jan', '09 Jan',
'10 Jan', '11 Jan', '12 Jan'
],
},
tooltip: {
y: [{
title: {
formatter: function (val) {
return val + " (mins)"
}
}
}, {
title: {
formatter: function (val) {
return val + " per session"
}
}
}, {
title: {
formatter: function (val) {
return val;
}
}
}]
},
grid: {
borderColor: '#f1f1f1',
}
}
};
const splineAreaChart = {
series: [{
name: 'series1',
data: [34, 40, 28, 52, 42, 109, 100]
}, {
name: 'series2',
data: [32, 60, 34, 46, 34, 52, 41]
}],
chartOptions: {
chart: {
toolbar: {
show: false
}
},
dataLabels: {
enabled: false
},
stroke: {
curve: 'smooth',
width: 3,
},
colors: ['#556ee6', '#34c38f'],
xaxis: {
type: 'datetime',
categories: ["2018-09-19T00:00:00", "2018-09-19T01:30:00", "2018-09-19T02:30:00", "2018-09-19T03:30:00", "2018-09-19T04:30:00", "2018-09-19T05:30:00", "2018-09-19T06:30:00"],
},
grid: {
borderColor: '#f1f1f1',
},
tooltip: {
x: {
format: 'dd/MM/yy HH:mm'
},
}
}
};
const columnChart = {
series: [{
name: 'Net Profit',
data: [46, 57, 59, 54, 62, 58, 64, 60, 66]
}, {
name: 'Revenue',
data: [74, 83, 102, 97, 86, 106, 93, 114, 94]
}, {
name: 'Free Cash Flow',
data: [37, 42, 38, 26, 47, 50, 54, 55, 43]
}],
chartOptions: {
chart: {
toolbar: {
show: false,
}
},
plotOptions: {
bar: {
horizontal: false,
columnWidth: '45%',
endingShape: 'rounded'
},
},
dataLabels: {
enabled: false
},
stroke: {
show: true,
width: 2,
colors: ['transparent']
},
colors: ['#34c38f', '#556ee6', '#f46a6a'],
xaxis: {
categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],
},
yaxis: {
title: {
text: '$ (thousands)',
style: {
fontWeight: '500',
},
},
},
grid: {
borderColor: '#f1f1f1',
},
fill: {
opacity: 1
},
tooltip: {
y: {
formatter: function (val) {
return "$ " + val + " thousands"
}
}
}
}
};
const columnDatalabelChart = {
series: [{
name: 'Inflation',
data: [2.5, 3.2, 5.0, 10.1, 4.2, 3.8, 3, 2.4, 4.0, 1.2, 3.5, 0.8]
}],
chartOptions: {
chart: {
toolbar: {
show: false,
}
},
plotOptions: {
bar: {
dataLabels: {
position: 'top', // top, center, bottom
},
}
},
dataLabels: {
enabled: true,
formatter: function (val) {
return val + "%";
},
offsetY: -22,
style: {
fontSize: '12px',
colors: ["#304758"]
}
},
colors: ['#556ee6'],
grid: {
borderColor: '#f1f1f1',
},
xaxis: {
categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
position: 'top',
labels: {
offsetY: -18,
},
axisBorder: {
show: false
},
axisTicks: {
show: false
},
crosshairs: {
fill: {
type: 'gradient',
gradient: {
colorFrom: '#D8E3F0',
colorTo: '#BED1E6',
stops: [0, 100],
opacityFrom: 0.4,
opacityTo: 0.5,
}
}
},
tooltip: {
enabled: true,
offsetY: -35,
}
},
fill: {
gradient: {
shade: 'light',
type: "horizontal",
shadeIntensity: 0.25,
gradientToColors: undefined,
inverseColors: true,
opacityFrom: 1,
opacityTo: 1,
stops: [50, 0, 100, 100]
},
},
yaxis: {
axisBorder: {
show: false
},
axisTicks: {
show: false,
},
labels: {
show: false,
formatter: function (val) {
return val + "%";
}
}
},
title: {
text: 'Monthly Inflation in Argentina, 2002',
floating: true,
offsetY: 330,
align: 'center',
style: {
color: '#444',
fontWeight: '500',
}
},
}
};
const barChart = {
series: [{
data: [380, 430, 450, 475, 550, 584, 780, 1100, 1220, 1365]
}],
chartOptions: {
chart: {
toolbar: {
show: false,
}
},
plotOptions: {
bar: {
horizontal: true,
}
},
dataLabels: {
enabled: false
},
colors: ['#34c38f'],
grid: {
borderColor: '#f1f1f1',
},
xaxis: {
categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan', 'United States', 'China', 'Germany'],
}
}
};
const mixedChart = {
series: [{
name: 'Team A',
type: 'column',
data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30]
}, {
name: 'Team B',
type: 'area',
data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43]
}, {
name: 'Team C',
type: 'line',
data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39]
}],
chartOptions: {
chart: {
stacked: false,
toolbar: {
show: false
}
},
stroke: {
width: [0, 2, 4],
curve: 'smooth'
},
plotOptions: {
bar: {
columnWidth: '50%'
}
},
colors: ['#f46a6a', '#556ee6', '#34c38f'],
fill: {
opacity: [0.85, 0.25, 1],
gradient: {
inverseColors: false,
shade: 'light',
type: "vertical",
opacityFrom: 0.85,
opacityTo: 0.55,
stops: [0, 100, 100, 100]
}
},
labels: ['01/01/2003', '02/01/2003', '03/01/2003', '04/01/2003', '05/01/2003', '06/01/2003', '07/01/2003', '08/01/2003', '09/01/2003', '10/01/2003', '11/01/2003'],
markers: {
size: 0
},
xaxis: {
type: 'datetime'
},
yaxis: {
title: {
text: 'Points',
},
},
tooltip: {
shared: true,
intersect: false,
y: {
formatter: function (y) {
if (typeof y !== "undefined") {
return y.toFixed(0) + " points";
}
return y;
}
}
},
grid: {
borderColor: '#f1f1f1'
}
}
};
const radialChart = {
series: [44, 55, 67, 83],
chartOptions: {
plotOptions: {
radialBar: {
dataLabels: {
name: {
fontSize: '22px',
},
value: {
fontSize: '16px',
},
total: {
show: true,
label: 'Total',
// eslint-disable-next-line no-unused-vars
formatter: function (w) {
// By default this function returns the average of all series. The below is just an example to show the use of custom formatter function
return 249
}
}
}
}
},
labels: ['Computer', 'Tablet', 'Laptop', 'Mobile'],
colors: ['#556ee6', '#34c38f', '#f46a6a', '#f1b44c'],
}
};
const pieChart = {
series: [44, 55, 41, 17, 15],
chartOptions: {
labels: ["Series 1", "Series 2", "Series 3", "Series 4", "Series 5"],
colors: ["#34c38f", "#556ee6", "#f46a6a", "#50a5f1", "#f1b44c"],
legend: {
show: true,
position: 'bottom',
horizontalAlign: 'center',
verticalAlign: 'middle',
floating: false,
fontSize: '14px',
offsetX: 0
},
responsive: [{
breakpoint: 600,
options: {
chart: {
height: 240
},
legend: {
show: false
},
}
}]
}
};
const donutChart = {
series: [44, 55, 41, 17, 15],
chartOptions: {
labels: ["Series 1", "Series 2", "Series 3", "Series 4", "Series 5"],
colors: ["#34c38f", "#556ee6", "#f46a6a", "#50a5f1", "#f1b44c"],
legend: {
show: true,
position: 'bottom',
horizontalAlign: 'center',
verticalAlign: 'middle',
floating: false,
fontSize: '14px',
offsetX: 0
},
responsive: [{
breakpoint: 600,
options: {
chart: {
height: 240
},
legend: {
show: false
},
}
}]
}
};
export { linewithDataChart, dashedLineChart, splineAreaChart, columnChart, columnDatalabelChart, barChart, mixedChart, radialChart, pieChart, donutChart };

View File

@ -1,274 +0,0 @@
const smilAnimationChart = {
data: {
labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
series: [
[12, 9, 7, 8, 5, 4, 6, 2, 3, 3, 4, 6],
[4, 5, 3, 7, 3, 5, 5, 3, 4, 4, 5, 5],
[5, 3, 4, 5, 6, 3, 3, 4, 5, 6, 3, 4],
[3, 4, 5, 6, 7, 6, 4, 5, 6, 7, 6, 3]
]
},
options: {
height: 300
}
};
const simpleLineChart = {
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
series: [
[12, 9, 7, 8, 5],
[2, 1, 3.5, 7, 3],
[1, 3, 4, 5, 6]
]
},
options: {
height: 300,
fullWidth: true,
}
};
const polarBarChart = {
data: {
labels: ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10'],
series: [
[1, 2, 4, 8, 6, -2, -1, -4, -6, -2]
]
},
options: {
height: 300,
high: 10,
low: -10,
axisX: {
labelInterpolationFnc: function (value, index) {
return index % 2 === 0 ? value : null;
}
},
},
};
const areaLineChart = {
data: {
labels: [1, 2, 3, 4, 5, 6, 7, 8],
series: [
[5, 9, 7, 8, 5, 3, 5, 4]
]
},
options: {
low: 0,
showArea: true,
height: 300,
}
};
const lineSmoothingChart = {
data: {
labels: [1, 2, 3, 4, 5],
series: [
[1, 5, 10, 0, 1],
[10, 15, 0, 1, 2]
]
},
options: {
height: 300,
low: 0,
fullWidth: true,
chartPadding: {
right: 20
},
},
};
const overlappingBarChart = {
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
series: [
[5, 4, 3, 7, 5, 10, 3, 4, 8, 10, 6, 8],
[3, 2, 9, 5, 4, 6, 4, 6, 7, 8, 7, 4]
]
},
options: {
seriesBarDistance: 10,
height: 300,
responsiveOptions: [
['screen and (max-width: 640px)', {
seriesBarDistance: 5,
axisX: {
labelInterpolationFnc: (value) => {
return value[0];
}
}
}]
]
},
};
const stackBarChart = {
data: {
labels: ['Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6'],
series: [
[800000, 1200000, 1400000, 1300000, 1520000, 1400000],
[200000, 400000, 500000, 300000, 452000, 500000],
[160000, 290000, 410000, 600000, 588000, 410000]
]
},
options: {
stackBars: true,
axisY: {
labelInterpolationFnc: (value) => {
return (value / 1000) + 'k';
}
},
height: 300
}
};
const horizontalBarChart = {
data: {
labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
series: [
[5, 4, 3, 7, 5, 10, 3],
[3, 2, 9, 5, 4, 6, 4]
]
},
options: {
seriesBarDistance: 10,
reverseData: true,
horizontalBars: true,
axisY: {
offset: 70
},
height: 300
}
};
const donutAnimateChart = {
data: {
series: [10, 20, 50, 20, 5, 50, 15],
labels: [1, 2, 3, 4, 5, 6, 7]
},
options: {
donut: true,
showLabel: false,
height: 300,
},
};
const simplePieChart = {
data: {
series: [5, 3, 4]
},
options: {
height: 300,
showLabel: false
}
};
const distributedSeries = {
data: {
labels: ['XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL'],
series: [20, 60, 120, 200, 180, 20, 10]
},
options: {
height: 300,
distributeSeries: true,
}
};
const labelPlacementChart = {
data: {
labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
series: [
[5, 4, 3, 7, 5, 10, 3],
[3, 2, 9, 5, 4, 6, 4]
]
},
options: {
height: 300,
axisX: {
// On the x-axis start means top and end means bottom
position: 'start'
},
axisY: {
// On the y-axis start means left and end means right
position: 'end'
}
}
};
const extremeConfiguration = {
data: {
labels: ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'],
series: [
[5, 4, 3, 7],
[3, 2, 9, 5],
[1, 5, 8, 4],
[2, 3, 4, 6],
[4, 1, 2, 1]
]
},
options: {
height: 300,
axisX: {
labelInterpolationFnc: function (value) {
return value.split(/\s+/).map(function (word) {
return word[0];
}).join('');
}
},
axisY: {
offset: 20
},
responsiveOptions: [
// Options override for media > 400px
['screen and (min-width: 400px)', {
reverseData: true,
horizontalBars: true,
axisY: {
offset: 60
}
}],
// Options override for media > 800px
['screen and (min-width: 800px)', {
stackBars: false,
seriesBarDistance: 10
}],
// Options override for media > 1000px
['screen and (min-width: 1000px)', {
reverseData: false,
horizontalBars: false,
seriesBarDistance: 15
}]
]
},
};
const lineAreaChart = {
data: {
labels: [1, 2, 3, 4, 5, 6, 7, 8],
series: [
[1, 2, 3, 1, -2, 0, 1, 0],
[-2, -1, -2, -1, -2.5, -1, -2, -1],
[0, 0, 0, 1, 2, 2.5, 2, 1],
[2.5, 2, 1, 0.5, 1, 0.5, -1, -2.5]
]
},
options: {
height: 300,
high: 3,
low: -3,
showArea: true,
showLine: false,
showPoint: false,
fullWidth: true,
axisX: {
showLabel: false,
showGrid: false
},
}
}
export {
smilAnimationChart, simpleLineChart, polarBarChart, areaLineChart, lineSmoothingChart, overlappingBarChart,
stackBarChart, horizontalBarChart, donutAnimateChart, simplePieChart, distributedSeries, labelPlacementChart, extremeConfiguration, lineAreaChart
};

View File

@ -1,604 +0,0 @@
import {
graphic
} from "echarts";
let data1 = [];
for (let i = 0; i <= 360; i++) {
let t = (i / 180) * Math.PI;
let r = Math.sin(2 * t) * Math.cos(2 * t);
data1.push([r, i]);
}
const polarChart = {
polar: {
legend: {
data: ["line"],
textStyle: {
color: '#999'
}
},
polar: {
center: ["50%", "54%"]
},
color: ['#34c38f'],
tooltip: {
trigger: "axis",
axisPointer: {
type: "cross"
}
},
angleAxis: {
type: "value",
startAngle: 0
},
radiusAxis: {
min: 0
},
series: [{
coordinateSystem: "polar",
name: "line",
type: "line",
showSymbol: false,
data: data1
}],
animationDuration: 2000
}
};
const mixedBarChart = {
// Setup grid
grid: {
zlevel: 0,
x: 80,
x2: 50,
y: 30,
y2: 30,
borderWidth: 0,
backgroundColor: 'rgba(0,0,0,0)',
borderColor: 'rgba(0,0,0,0)',
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
toolbox: {
orient: 'center',
left: 0,
top: 20,
feature: {
dataView: {
readOnly: false,
title: "Data View"
},
magicType: {
type: ['line', 'bar'],
title: {
line: "For line chart",
bar: "For bar chart"
}
},
restore: {
title: "restore"
},
saveAsImage: {
title: "Download Image"
}
}
},
color: ['#34c38f', '#556ee6', '#f46a6a'],
legend: {
data: ['Evaporation', 'Precipitation', 'Average temperature'],
textStyle: {
color: '#8791af'
}
},
xAxis: [{
type: 'category',
data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'],
axisPointer: {
type: 'shadow'
},
axisLine: {
lineStyle: {
color: '#8791af'
},
},
}],
yAxis: [{
type: 'value',
name: 'Water volume',
min: 0,
max: 250,
interval: 50,
axisLine: {
lineStyle: {
color: '#8791af'
},
},
splitLine: {
lineStyle: {
color: "rgba(166, 176, 207, 0.1)"
}
},
axisLabel: {
formatter: '{value} ml'
}
},
{
type: 'value',
name: 'Temperature',
min: 0,
max: 25,
interval: 5,
axisLine: {
lineStyle: {
color: '#8791af'
},
},
splitLine: {
lineStyle: {
color: "rgba(166, 176, 207, 0.1)"
}
},
axisLabel: {
formatter: '{value} ðC'
}
}
],
series: [{
name: 'Evaporation',
type: 'bar',
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2]
},
{
name: 'Precipitation',
type: 'bar',
data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2]
},
{
name: 'Average temperature',
type: 'line',
yAxisIndex: 1,
data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4]
}
]
};
const guageChart = {
tooltip: {
formatter: "{a} <br/>{b} : {c}%"
},
toolbox: {
feature: {
restore: {
title: "Refresh"
},
saveAsImage: {
title: "Download Image"
}
}
},
series: [{
name: 'Business indicator',
type: 'gauge',
detail: {
formatter: '{value}%'
},
axisLine: {
lineStyle: {
color: [
[0.2, '#34c38f'],
[0.8, '#556ee6'],
[1, '#f46a6a']
],
width: 20
}
},
data: [{
value: 50,
name: 'Completion rate'
}]
}]
};
const lineChart = {
// Setup grid
grid: {
zlevel: 0,
x: 50,
x2: 50,
y: 30,
y2: 30,
borderWidth: 0,
backgroundColor: 'rgba(0,0,0,0)',
borderColor: 'rgba(0,0,0,0)',
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLine: {
lineStyle: {
color: '#8791af'
},
},
},
yAxis: {
type: 'value',
axisLine: {
lineStyle: {
color: '#8791af'
},
},
splitLine: {
lineStyle: {
color: "rgba(166, 176, 207, 0.1)"
}
}
},
legend: {
data: ['Desktops', 'Laptops', 'Tablets'],
textStyle: {
color: '#999'
}
},
series: [{
name: 'Desktops',
type: 'line',
stack: 'yes',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Laptops',
type: 'line',
stack: 'yes',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Tablets',
type: 'line',
stack: 'yes',
data: [150, 232, 201, 154, 190, 330, 410]
},
]
};
const pieChart = {
visualMap: {
show: false,
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
legend: {
orient: 'vertical',
left: 'left',
data: ['Laptop', 'Tablet', 'Mobile', 'Others', 'Desktop'],
textStyle: {
color: '#999'
}
},
color: ['#556ee6', '#f1b44c', '#f46a6a', '#50a5f1', '#34c38f'],
series: [{
name: 'Total sales',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: [{
value: 335,
name: 'Laptop'
},
{
value: 310,
name: 'Tablet'
},
{
value: 234,
name: 'Mobile'
},
{
value: 135,
name: 'Others'
},
{
value: 1548,
name: 'Desktop'
}
],
// itemStyle: {
// emphasis: {
// shadowBlur: 10,
// shadowOffsetX: 0,
// shadowColor: 'rgba(0, 0, 0, 0.5)'
// }
// }
}]
};
var data = [
[
[28604, 77, 17096869, 'Australia', 1990],
[31163, 77.4, 27662440, 'Canada', 1990],
[1516, 68, 1154605773, 'China', 1990],
[13670, 74.7, 10582082, 'Cuba', 1990],
[28599, 75, 4986705, 'Finland', 1990],
[29476, 77.1, 56943299, 'France', 1990],
[31476, 75.4, 78958237, 'Germany', 1990],
[28666, 78.1, 254830, 'Iceland', 1990],
[1777, 57.7, 870601776, 'India', 1990],
[29550, 79.1, 122249285, 'Japan', 1990],
[2076, 67.9, 20194354, 'North Korea', 1990],
[12087, 72, 42972254, 'South Korea', 1990],
[24021, 75.4, 3397534, 'New Zealand', 1990],
[43296, 76.8, 4240375, 'Norway', 1990],
[10088, 70.8, 38195258, 'Poland', 1990],
[19349, 69.6, 147568552, 'Russia', 1990],
[10670, 67.3, 53994605, 'Turkey', 1990],
[26424, 75.7, 57110117, 'United Kingdom', 1990],
[37062, 75.4, 252847810, 'United States', 1990]
],
[
[44056, 81.8, 23968973, 'Australia', 2015],
[43294, 81.7, 35939927, 'Canada', 2015],
[13334, 76.9, 1376048943, 'China', 2015],
[21291, 78.5, 11389562, 'Cuba', 2015],
[38923, 80.8, 5503457, 'Finland', 2015],
[37599, 81.9, 64395345, 'France', 2015],
[44053, 81.1, 80688545, 'Germany', 2015],
[42182, 82.8, 329425, 'Iceland', 2015],
[5903, 66.8, 1311050527, 'India', 2015],
[36162, 83.5, 126573481, 'Japan', 2015],
[1390, 71.4, 25155317, 'North Korea', 2015],
[34644, 80.7, 50293439, 'South Korea', 2015],
[34186, 80.6, 4528526, 'New Zealand', 2015],
[64304, 81.6, 5210967, 'Norway', 2015],
[24787, 77.3, 38611794, 'Poland', 2015],
[23038, 73.13, 143456918, 'Russia', 2015],
[19360, 76.5, 78665830, 'Turkey', 2015],
[38225, 81.4, 64715810, 'United Kingdom', 2015],
[53354, 79.1, 321773631, 'United States', 2015]
]
];
const bubbleChart = {
grid: {
zlevel: 0,
x: 50,
x2: 50,
y: 30,
y2: 30,
borderWidth: 0,
backgroundColor: 'rgba(0,0,0,0)',
borderColor: 'rgba(0,0,0,0)',
},
legend: {
right: 10,
data: ['2018', '2019'],
textStyle: {
color: '#999'
}
},
xAxis: {
axisLine: {
lineStyle: {
color: '#8791af'
},
},
splitLine: {
lineStyle: {
type: 'dashed',
color: "rgba(166, 176, 207, 0.1)"
}
},
},
yAxis: {
axisLine: {
lineStyle: {
color: '#8791af'
},
},
splitLine: {
lineStyle: {
type: 'dashed',
color: "rgba(166, 176, 207, 0.1)"
}
},
scale: true
},
series: [{
name: '2018',
data: data[0],
type: 'scatter',
symbolSize(data) {
return Math.sqrt(data[2]) / 5e2
},
emphasis: {
label: {
show: true,
formatter({
data
}) {
return data[3]
},
position: 'top'
}
},
itemStyle: {
shadowBlur: 10,
shadowColor: 'rgba(120, 36, 50, 0.5)',
shadowOffsetY: 5,
color: new graphic.RadialGradient(0.4, 0.3, 1, [{
offset: 0,
color: 'rgb(134, 204, 255)'
},
{
offset: 1,
color: 'rgb(85, 110, 230)'
}
])
}
},
{
name: '2019',
data: data[1],
type: 'scatter',
symbolSize(data) {
return Math.sqrt(data[2]) / 5e2
},
emphasis: {
label: {
show: true,
formatter({
data
}) {
return data[3]
},
position: 'top'
}
},
itemStyle: {
shadowBlur: 10,
shadowColor: 'rgba(52, 195, 143, 0.5)',
shadowOffsetY: 5,
color: new graphic.RadialGradient(0.4, 0.3, 1, [{
offset: 0,
color: 'rgb(111, 255, 203)'
},
{
offset: 1,
color: 'rgb(52, 195, 143)'
}
])
}
}
]
};
const doughnutChart = {
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)'
},
legend: {
orient: 'vertical',
x: 'left',
data: ['Laptop', 'Tablet', 'Mobile', 'Others', 'Desktop'],
textStyle: {
color: '#999'
}
},
color: ['#556ee6', '#f1b44c', '#f46a6a', '#50a5f1', '#34c38f'],
series: [{
name: 'Total sales',
type: 'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
emphasis: {
label: {
show: true,
}
},
normal: {
show: false
},
data: [{
value: 335,
name: 'Laptop'
},
{
value: 310,
name: 'Tablet'
},
{
value: 234,
name: 'Mobile'
},
{
value: 135,
name: 'Others'
},
{
value: 1548,
name: 'Desktop'
}
]
}]
};
const candleStickChart = {
// Setup grid
grid: {
zlevel: 0,
x: 50,
x2: 50,
y: 30,
y2: 30,
borderWidth: 0,
backgroundColor: 'rgba(0,0,0,0)',
borderColor: 'rgba(0,0,0,0)',
},
xAxis: {
data: ['2017-10-24', '2017-10-25', '2017-10-26', '2017-10-27'],
axisLine: {
lineStyle: {
color: '#8791af'
},
},
splitLine: {
lineStyle: {
color: "rgba(166, 176, 207, 0.1)"
}
},
},
yAxis: {
axisLine: {
lineStyle: {
color: '#8791af'
},
},
splitLine: {
lineStyle: {
color: "rgba(166, 176, 207, 0.1)"
}
},
},
series: [{
type: 'k',
data: [
[20, 30, 10, 35],
[40, 35, 30, 55],
[33, 38, 33, 40],
[40, 40, 32, 42]
],
itemStyle: {
color: '#556ee6',
color0: '#34c38f',
borderColor: '#556ee6',
borderColor0: '#34c38f'
}
}]
};
export {
polarChart,
mixedBarChart,
guageChart,
lineChart,
pieChart,
bubbleChart,
doughnutChart,
candleStickChart
};

View File

@ -1,170 +0,0 @@
<script>
import { VueEcharts } from "vue3-echarts";
// import "echarts/lib/chart/line";
// import "echarts/lib/chart/bar";
// import "echarts/lib/chart/pie";
// import "echarts/lib/chart/scatter";
// import "echarts/lib/chart/candlestick";
// import "echarts/lib/chart/gauge";
// import "echarts/lib/component/legend";
// import "echarts/lib/component/title";
// import "echarts/lib/component/tooltip";
// import "echarts/lib/component/polar";
// import "echarts/lib/component/toolbox";
// import "echarts/lib/component/grid";
// import "echarts/lib/component/axis";
import Layout from "../../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import {
polarChart,
lineChart,
pieChart,
bubbleChart,
doughnutChart,
mixedBarChart,
guageChart,
candleStickChart,
} from "./data";
export default {
page: {
title: "Echart Chart",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader, VueEcharts },
data() {
return {
// polarChart: polarChart,
// lineChart: lineChart,
// pieChart: pieChart,
// bubbleChart: bubbleChart,
// doughnutChart: doughnutChart,
// mixedBarChart: mixedBarChart,
// candleStickChart: candleStickChart,
// guageChart: guageChart,
title: "ECharts",
items: [
{
text: "Charts",
href: "/",
},
{
text: "ECharts",
active: true,
},
],
};
},
computed: {
option() {
return {
polarChart: polarChart,
lineChart: lineChart,
pieChart: pieChart,
bubbleChart: bubbleChart,
doughnutChart: doughnutChart,
mixedBarChart: mixedBarChart,
candleStickChart: candleStickChart,
guageChart: guageChart,
};
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Line Chart</h4>
<vue-echarts
:option="option.lineChart"
style="height: 300px"
ref="chart"
/>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Mix Line-Bar</h4>
<vue-echarts
:option="option.mixedBarChart"
style="height: 300px"
ref="chart"
/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Pie Chart</h4>
<vue-echarts :option="option.pieChart" style="height: 300px" />
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Doughnut Chart</h4>
<vue-echarts :option="option.doughnutChart" style="height: 300px" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Candle Stick Chart</h4>
<vue-echarts
:option="option.candleStickChart"
style="height: 300px"
/>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Gauge Chart</h4>
<vue-echarts :option="option.guageChart" style="height: 300px" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Bubble Chart</h4>
<vue-echarts :option="option.bubbleChart" style="height: 300px" />
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Polar Chart</h4>
<vue-echarts
:option="option.polarChart.polar"
style="height: 300px"
/>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,88 +0,0 @@
const chatData = [
{
id: 1,
image: require('@/assets/images/users/avatar-2.jpg'),
name: 'Steven Franklin',
message: 'Hey! there I\'m available',
time: '05 min',
color: 'secondary'
},
{
id: 2,
image: require('@/assets/images/users/avatar-3.jpg'),
name: 'Adam Miller',
message: 'I\'ve finished it! See you so',
time: '12 min',
color: 'success'
},
{
id: 3,
name: 'Keith Gonzales',
message: 'This theme is awesome!',
time: '24 min',
color: 'success'
},
{
id: 4,
image: require('@/assets/images/users/avatar-4.jpg'),
name: 'Jose Vickery',
message: 'Nice to meet you',
time: '1 hr',
color: 'warning'
},
{
id: 5,
name: 'Mitchel Givens',
message: 'Hey! there I\'m available',
time: '3 hrs',
color: 'secondary'
},
{
id: 6,
image: require('@/assets/images/users/avatar-4.jpg'),
name: 'Stephen Hadley',
message: 'I\'ve finished it! See you so',
time: '5 hrs',
color: 'success'
},
{
id: 7,
image: require('@/assets/images/users/avatar-2.jpg'),
name: 'Leord Joseph',
message: 'This theme is awesome!',
time: '24 min',
color: 'success'
},
];
const chatMessagesData = [
{
name: 'Steven Franklin',
message: 'Hello!',
time: '10:00'
},
{
align: 'right',
name: 'Henry Wells',
message: 'Hi, How are you? What about our next meeting?',
time: '10:02'
},
{
name: 'Steven Franklin',
message: 'Yeah everything is fine',
time: '10:06'
},
{
name: 'Steven Franklin',
message: '& Next meeting tomorrow 10.00AM',
time: '10:06'
},
{
align: 'right',
name: 'Henry Wells',
message: 'Wow that\'s great',
time: '10:07'
}
];
export { chatData, chatMessagesData };

View File

@ -1,675 +0,0 @@
<script>
import { SimpleBar } from "simplebar-vue3";
import Layout from "../../layouts/main";
import appConfig from "@/app.config";
import PageHeader from "@/components/page-header";
import { chatData, chatMessagesData } from "./data";
import { required, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
/**
* Chat Component
*/
export default {
setup() {
return { v$: useVuelidate() };
},
page: {
title: "Chat",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
components: {
Layout,
PageHeader,
SimpleBar,
},
data() {
return {
chatData: chatData,
chatMessagesData: chatMessagesData,
title: "Chat",
items: [
{
text: "Skote",
href: "/",
},
{
text: "Chat",
active: true,
},
],
submitted: false,
form: {
message: "",
},
username: "Steven Franklin",
};
},
validations: {
form: {
message: {
required: helpers.withMessage("Message is required", required),
},
},
},
methods: {
/**
* Get the name of user
*/
chatUsername(name) {
this.username = name;
this.usermessage = "Hello";
this.chatMessagesData = [];
const currentDate = new Date();
this.chatMessagesData.push({
name: this.username,
message: this.usermessage,
time: currentDate.getHours() + ":" + currentDate.getMinutes(),
});
},
/**
* Char form Submit
*/
// eslint-disable-next-line no-unused-vars
formSubmit(e) {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
const message = this.form.message;
const currentDate = new Date();
this.chatMessagesData.push({
align: "right",
name: "Henry Wells",
message,
time: currentDate.getHours() + ":" + currentDate.getMinutes(),
});
this.handleScroll();
}
this.submitted = false;
this.form = {};
},
handleScroll() {
if (this.$refs.current.$el) {
setTimeout(() => {
this.$refs.current.SimpleBar.value.getScrollElement().scrollTop =
this.$refs.current.SimpleBar.value.getScrollElement().scrollHeight + 1500;
}, 500);
}
},
},
mounted() {
var container1 = document.querySelector(
"#chat-list .simplebar-content-wrapper"
);
container1.scrollTo({ top: 500, behavior: "smooth" });
var container2 = document.querySelector(
"#containerElement .simplebar-content-wrapper"
);
container2.scrollTo({ top: 500, behavior: "smooth" });
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="d-lg-flex">
<div class="chat-leftsidebar me-lg-4">
<div class>
<div class="py-4 border-bottom">
<div class="d-flex">
<div class="align-self-center me-3">
<img
src="@/assets/images/users/avatar-1.jpg"
class="avatar-xs rounded-circle"
alt
/>
</div>
<div class="flex-grow-1">
<h5 class="font-size-15 mt-0 mb-1">Henry Wells</h5>
<p class="text-muted mb-0">
<i class="mdi mdi-circle text-success align-middle me-1"></i>
Active
</p>
</div>
<b-dropdown
menu-class="dropdown-menu-end"
class="chat-noti-dropdown active"
right
variant="white"
>
<template v-slot:button-content>
<i class="bx bx-bell bx-tada"></i>
</template>
<b-dropdown-item>Action</b-dropdown-item>
<b-dropdown-item>Another action</b-dropdown-item>
<b-dropdown-item>Something else here</b-dropdown-item>
</b-dropdown>
</div>
</div>
</div>
<div class="search-box chat-search-box py-4">
<div class="position-relative">
<input type="text" class="form-control" placeholder="Search..." />
<i class="bx bx-search-alt search-icon"></i>
</div>
</div>
<div class="chat-leftsidebar-nav">
<b-tabs pills fill content-class="py-4">
<b-tab title="Tab 1" active>
<template v-slot:title>
<i class="bx bx-chat font-size-20 d-sm-none"></i>
<span class="d-none d-sm-block">Chat</span>
</template>
<b-card-text>
<div>
<h5 class="font-size-14 mb-3">Recent</h5>
<SimpleBar style="max-height: 410px" id="chat-list">
<ul class="list-unstyled chat-list">
<li
class
v-for="data of chatData"
:key="data.id"
@click="chatUsername(data.name)"
:class="{ active: username == data.name }"
>
<a href="javascript: void(0);">
<div class="d-flex">
<div class="align-self-center me-3">
<i
:class="`mdi mdi-circle text-${data.color} font-size-10`"
></i>
</div>
<div
class="align-self-center me-3"
v-if="data.image"
>
<img
:src="`${data.image}`"
class="rounded-circle avatar-xs"
alt
/>
</div>
<div
class="avatar-xs align-self-center me-3"
v-if="!data.image"
>
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>{{ data.name.charAt(0) }}</span
>
</div>
<div class="flex-grow-1 overflow-hidden">
<h5 class="text-truncate font-size-14 mb-1">
{{ data.name }}
</h5>
<p class="text-truncate mb-0">
{{ data.message }}
</p>
</div>
<div class="font-size-11">{{ data.time }}</div>
</div>
</a>
</li>
</ul>
</SimpleBar>
</div>
</b-card-text>
</b-tab>
<b-tab>
<template v-slot:title>
<i class="bx bx-group font-size-20 d-sm-none"></i>
<span class="d-none d-sm-block">Groups</span>
</template>
<b-card-text>
<h5 class="font-size-14 mb-3">Groups</h5>
<ul class="list-unstyled chat-list">
<li>
<a href="#">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>G</span
>
</div>
<div class="flex-grow-1">
<h5 class="font-size-14 mb-0">General</h5>
</div>
</div>
</a>
</li>
<li>
<a href="#">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>R</span
>
</div>
<div class="flex-grow-1">
<h5 class="font-size-14 mb-0">Reporting</h5>
</div>
</div>
</a>
</li>
<li>
<a href="#">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>M</span
>
</div>
<div class="flex-grow-1">
<h5 class="font-size-14 mb-0">Meeting</h5>
</div>
</div>
</a>
</li>
<li>
<a href="#">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>A</span
>
</div>
<div class="flex-grow-1">
<h5 class="font-size-14 mb-0">Project A</h5>
</div>
</div>
</a>
</li>
<li>
<a href="#">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>B</span
>
</div>
<div class="flex-grow-1">
<h5 class="font-size-14 mb-0">Project B</h5>
</div>
</div>
</a>
</li>
</ul>
</b-card-text>
</b-tab>
<b-tab>
<template v-slot:title>
<i class="bx bx-book-content font-size-20 d-sm-none"></i>
<span class="d-none d-sm-block">Contacts</span>
</template>
<b-card-text>
<h5 class="font-size-14 mb-3">Contacts</h5>
<SimpleBar style="height: 410px">
<div>
<div class="avatar-xs mb-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>A</span
>
</div>
<ul class="list-unstyled chat-list">
<li>
<a href="#">
<h5 class="font-size-14 mb-0">Adam Miller</h5>
</a>
</li>
<li>
<a href="#">
<h5 class="font-size-14 mb-0">Alfonso Fisher</h5>
</a>
</li>
</ul>
</div>
<div class="mt-4">
<div class="avatar-xs mb-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>B</span
>
</div>
<ul class="list-unstyled chat-list">
<li>
<a href="#">
<h5 class="font-size-14 mb-0">Bonnie Harney</h5>
</a>
</li>
</ul>
</div>
<div class="mt-4">
<div class="avatar-xs mb-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>C</span
>
</div>
<ul class="list-unstyled chat-list">
<li>
<a href="#">
<h5 class="font-size-14 mb-0">Charles Brown</h5>
</a>
<a href="#">
<h5 class="font-size-14 mb-0">Carmella Jones</h5>
</a>
<a href="#">
<h5 class="font-size-14 mb-0">Carrie Williams</h5>
</a>
</li>
</ul>
</div>
<div class="mt-4">
<div class="avatar-xs mb-3">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
"
>D</span
>
</div>
<ul class="list-unstyled chat-list">
<li>
<a href="#">
<h5 class="font-size-14 mb-0">Dolores Minter</h5>
</a>
</li>
</ul>
</div>
</SimpleBar>
</b-card-text>
</b-tab>
</b-tabs>
</div>
</div>
<div class="w-100 user-chat">
<div class="card">
<div class="p-4 border-bottom">
<div class="row">
<div class="col-md-4 col-9">
<h5 class="font-size-15 mb-1">{{ username }}</h5>
<p class="text-muted mb-0">
<i class="mdi mdi-circle text-success align-middle me-1"></i>
Active now
</p>
</div>
<div class="col-md-8 col-3">
<ul class="list-inline user-chat-nav text-end mb-0">
<li class="list-inline-item d-none d-sm-inline-block">
<b-dropdown
menu-class="dropdown-menu-md dropdown-menu-end"
variant="white"
right
toggle-class="nav-btn"
>
<template v-slot:button-content>
<i class="bx bx-search-alt-2"></i>
</template>
<form class="p-3">
<div class="form-group m-0">
<div class="input-group">
<input
type="text"
class="form-control"
placeholder="Search ..."
aria-label="Recipient's username"
/>
<div class="input-group-append">
<button class="btn btn-primary" type="submit">
<i class="mdi mdi-magnify"></i>
</button>
</div>
</div>
</div>
</form>
</b-dropdown>
</li>
<li class="list-inline-item d-none d-sm-inline-block">
<b-dropdown
toggle-class="nav-btn"
menu-class="dropdown-menu-end"
right
variant="white"
>
<template v-slot:button-content>
<i class="bx bx-cog"></i>
</template>
<b-dropdown-item>View Profile</b-dropdown-item>
<b-dropdown-item>Clear chat</b-dropdown-item>
<b-dropdown-item>Muted</b-dropdown-item>
<b-dropdown-item>Delete</b-dropdown-item>
</b-dropdown>
</li>
<li class="list-inline-item">
<b-dropdown
toggle-class="nav-btn"
menu-class="dropdown-menu-end"
right
variant="white"
>
<template v-slot:button-content>
<i class="bx bx-dots-horizontal-rounded"></i>
</template>
<b-dropdown-item>Action</b-dropdown-item>
<b-dropdown-item>Another action</b-dropdown-item>
<b-dropdown-item>Something else</b-dropdown-item>
</b-dropdown>
</li>
</ul>
</div>
</div>
</div>
<div class="chat-users">
<div class="chat-conversation p-3">
<SimpleBar
style="max-height: 470px"
id="containerElement"
ref="current"
>
<ul class="list-unstyled">
<li>
<div class="chat-day-title">
<span class="title">Today</span>
</div>
</li>
<li
v-for="data of chatMessagesData"
:key="data.message"
:class="{ right: `${data.align}` === 'right' }"
>
<div class="conversation-list">
<b-dropdown
variant="white"
menu-class="dropdown-menu-end"
>
<template v-slot:button-content>
<i class="bx bx-dots-vertical-rounded"></i>
</template>
<b-dropdown-item>Copy</b-dropdown-item>
<b-dropdown-item>Save</b-dropdown-item>
<b-dropdown-item>Forward</b-dropdown-item>
<b-dropdown-item>Delete</b-dropdown-item>
</b-dropdown>
<div class="ctext-wrap">
<div class="conversation-name">{{ data.name }}</div>
<p>{{ data.message }}</p>
<p class="chat-time mb-0">
<i class="bx bx-time-five align-middle me-1"></i>
{{ data.time }}
</p>
</div>
</div>
</li>
</ul>
</SimpleBar>
</div>
<div class="p-3 chat-input-section">
<form @submit.prevent="formSubmit" class="row">
<div class="col">
<div class="position-relative">
<input
type="text"
v-model="form.message"
class="form-control chat-input rounded"
placeholder="Enter Message..."
:class="{
'is-invalid': submitted && v$.form.message.$error,
}"
/>
<div
v-if="submitted && v$.form.message.$error"
class="invalid-feedback"
>
<span v-if="v$.form.message.required.$message">{{
v$.form.message.required.$message
}}</span>
</div>
<div class="chat-input-links">
<ul class="list-inline mb-0">
<li class="list-inline-item">
<a
href="javascript: void(0);"
v-b-tooltip.hover
placement="top"
title="Emoji"
>
<i class="mdi mdi-emoticon-happy-outline"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript: void(0);"
v-b-tooltip.hover
placement="top"
title="Images"
>
<i class="mdi mdi-file-image-outline"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript: void(0);"
v-b-tooltip.hover
placement="top"
title="Add Files"
>
<i class="mdi mdi-file-document-outline"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="col-auto">
<button
type="submit"
class="btn btn-primary btn-rounded chat-send w-md"
>
<span class="d-none d-sm-inline-block me-2">Send</span>
<i class="mdi mdi-send"></i>
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,300 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { required, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
import Multiselect from "@vueform/multiselect";
import { userGridData } from "./data-user";
/**
* Contacts-grid component
*/
export default {
setup() {
return { v$: useVuelidate() };
},
page: {
title: "Contact Users Grid",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader, Multiselect },
data() {
return {
userGridData: userGridData,
title: "Users Grid",
items: [
{
text: "Contacts",
href: "/",
},
{
text: "Users Grid",
active: true,
},
],
showModal: false,
submitted: false,
users: {
name: "",
designation: "",
email: "",
},
value1: null,
options: [
"Photoshop",
"illustrator",
"Html",
"Css",
"Php",
"Java",
"Python",
"Ruby",
],
};
},
validations: {
users: {
name: {
required: helpers.withMessage("Name is required", required),
},
designation: {
required: helpers.withMessage("Designation is required", required),
},
email: { required: helpers.withMessage("Email is required", required) },
},
},
methods: {
/**
* Modal form submit
*/
// eslint-disable-next-line no-unused-vars
handleSubmit(e) {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
this.userGridData.push({
id: this.userGridData.length + 1,
name: this.users.name,
designation: this.users.designation,
projects: this.value1,
email: this.users.email,
});
this.showModal = false;
this.users = {};
this.value1 = [];
}
this.submitted = false;
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="d-flex">
<button class="btn btn-success ms-auto mb-2" @click="showModal = true">
Add Customer
</button>
</div>
</div>
<b-modal v-model="showModal" title="Add Customer" hide-footer>
<form @submit.prevent="handleSubmit">
<div class="row">
<div class="col-12">
<div class="mb-3">
<label for="name">Event Name</label>
<input
id="name"
v-model="users.name"
type="text"
class="form-control"
placeholder="Insert name"
:class="{
'is-invalid': submitted && v$.users.name.$error,
}"
/>
<div
v-if="submitted && v$.users.name.$error"
class="invalid-feedback"
>
<span v-if="v$.users.name.required.$message">{{
v$.users.name.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label for="name">Designation</label>
<input
id="designation"
v-model="users.designation"
type="text"
class="form-control"
placeholder="Insert designation"
:class="{
'is-invalid': submitted && v$.users.designation.$error,
}"
/>
<div
v-if="submitted && v$.users.designation.$error"
class="invalid-feedback"
>
<span v-if="v$.users.designation.required.$message">{{
v$.users.designation.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label for="email">Email</label>
<input
id="email"
v-model="users.email"
type="email"
class="form-control"
placeholder="Insert email"
:class="{
'is-invalid': submitted && v$.users.email.$error,
}"
/>
<div
v-if="submitted && v$.users.email.$error"
class="invalid-feedback"
>
<span v-if="v$.users.email.required.$message">{{
v$.users.email.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-12">
<label for="projects">Projects</label>
<multiselect
v-model="value1"
:options="options"
:multiple="true"
></multiselect>
</div>
</div>
<div class="text-end mt-3">
<b-button variant="light" @click="showModal = false">Close</b-button>
<b-button type="submit" variant="success" class="ms-1"
>Create event</b-button
>
</div>
</form>
</b-modal>
<div class="row">
<div
v-for="user in userGridData"
:key="user.id"
class="col-xl-3 col-sm-6"
>
<div class="card text-center">
<div class="card-body">
<div v-if="!user.image" class="avatar-sm mx-auto mb-4">
<span
class="
avatar-title
rounded-circle
bg-soft bg-primary
text-primary
font-size-16
"
>{{ user.name.charAt(0) }}</span
>
</div>
<div v-if="user.image" class="mb-4">
<img
class="rounded-circle avatar-sm"
:src="`${user.image}`"
alt
/>
</div>
<h5 class="font-size-15 mb-1">
<a href="javascript: void(0);" class="text-dark">{{
user.name
}}</a>
</h5>
<p class="text-muted">{{ user.designation }}</p>
<div>
<a
href="javascript: void(0);"
class="badge bg-primary font-size-11 m-1"
>{{ user.projects[0] }}</a
>
<a
href="javascript: void(0);"
class="badge bg-primary font-size-11 m-1"
>{{ user.projects[1] }}</a
>
<a
href="javascript: void(0);"
class="badge bg-primary font-size-11 m-1"
>{{ user.projects[2] }}</a
>
</div>
</div>
<div class="card-footer bg-transparent border-top">
<div class="contact-links d-flex font-size-20">
<div class="flex-fill">
<a
v-b-tooltip.hover.top
title="Message"
href="javascript: void(0);"
>
<i class="bx bx-message-square-dots"></i>
</a>
</div>
<div class="flex-fill">
<a
v-b-tooltip.hover.top
title="Projects"
href="javascript: void(0);"
>
<i class="bx bx-pie-chart-alt"></i>
</a>
</div>
<div class="flex-fill">
<a
v-b-tooltip.hover.top
title="Profile"
href="javascript: void(0);"
>
<i class="bx bx-user-circle"></i>
</a>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
<div class="row">
<div class="col-12">
<div class="text-center my-3">
<a href="javascript:void(0);" class="text-success">
<i class="bx bx-hourglass bx-spin me-2"></i> Load more
</a>
</div>
</div>
<!-- end col-->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,144 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { userGridData } from "./data-user";
/**
* Contacts-list component
*/
export default {
page: {
title: "Contact Users List",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader },
data() {
return {
userGridData: userGridData,
title: "Users List",
items: [
{
text: "Contacts",
href: "/"
},
{
text: "Users List",
active: true
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<div class="table-responsive">
<table class="table align-middle table-nowrap table-hover">
<thead class="table-light">
<tr>
<th scope="col" style="width: 70px;">#</th>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">Tags</th>
<th scope="col">Projects</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<tr v-for="list in userGridData" :key="list.id">
<td>
<div v-if="!list.image" class="avatar-xs">
<span class="avatar-title rounded-circle">{{list.name.charAt(0)}}</span>
</div>
<div v-if="list.image">
<img class="rounded-circle avatar-xs" :src="`${list.image}`" alt />
</div>
</td>
<td>
<h5 class="font-size-14 mb-1">
<a href="#" class="text-dark">{{list.name}}</a>
</h5>
<p class="text-muted mb-0">{{list.designation}}</p>
</td>
<td>{{list.email}}</td>
<td>
<div>
<a
href="javascript: void(0);"
class="badge badge-soft-primary font-size-11 m-1"
>{{list.projects[0]}}</a>
<a
href="javascript: void(0);"
class="badge badge-soft-primary font-size-11 m-1"
>{{list.projects[1]}}</a>
<a
href="javascript: void(0);"
class="badge badge-soft-primary font-size-11 m-1"
>{{list.projects[2]}}</a>
</div>
</td>
<td>125</td>
<td>
<ul class="list-inline font-size-20 contact-links mb-0">
<li class="list-inline-item px-2">
<a v-b-tooltip.hover title="Message">
<i class="bx bx-message-square-dots"></i>
</a>
</li>
<li class="list-inline-item px-2">
<a v-b-tooltip.hover title="Profile">
<i class="bx bx-user-circle"></i>
</a>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
<div class="row">
<div class="col-lg-12">
<ul class="pagination pagination-rounded justify-content-center mt-4">
<li class="page-item disabled">
<a href="#" class="page-link">
<i class="mdi mdi-chevron-left"></i>
</a>
</li>
<li class="page-item">
<a href="#" class="page-link">1</a>
</li>
<li class="page-item active">
<a href="#" class="page-link">2</a>
</li>
<li class="page-item">
<a href="#" class="page-link">3</a>
</li>
<li class="page-item">
<a href="#" class="page-link">4</a>
</li>
<li class="page-item">
<a href="#" class="page-link">5</a>
</li>
<li class="page-item">
<a href="#" class="page-link">
<i class="mdi mdi-chevron-right"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,304 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { revenueChart } from "./data-profile";
import Stat from "@/components/widgets/stat";
/**
* Contacts-Profile component
*/
export default {
page: {
title: "Profile",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader, Stat },
data() {
return {
revenueChart: revenueChart,
title: "Profile",
items: [
{
text: "Contacts",
href: "/"
},
{
text: "Profile",
active: true
}
],
statData: [
{
icon: "bx bx-check-circle",
title: "Completed Projects",
value: "125"
},
{
icon: "bx bx-hourglass",
title: "Pending Projects",
value: "12"
},
{
icon: "bx bx-package",
title: "Total Revenue",
value: "$36,524"
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-4">
<div class="card overflow-hidden">
<div class="bg-soft bg-primary">
<div class="row">
<div class="col-7">
<div class="text-primary p-3">
<h5 class="text-primary">Welcome Back !</h5>
<p>It will seem like simplified</p>
</div>
</div>
<div class="col-5 align-self-end">
<img src="@/assets/images/profile-img.png" alt class="img-fluid" />
</div>
</div>
</div>
<div class="card-body pt-0">
<div class="row">
<div class="col-sm-4">
<div class="avatar-md profile-user-wid mb-4">
<img
src="@/assets/images/users/avatar-1.jpg"
alt
class="img-thumbnail rounded-circle"
/>
</div>
<h5 class="font-size-15 text-truncate">Cynthia Price</h5>
<p class="text-muted mb-0 text-truncate">UI/UX Designer</p>
</div>
<div class="col-sm-8">
<div class="pt-4">
<div class="row">
<div class="col-6">
<h5 class="font-size-15">125</h5>
<p class="text-muted mb-0">Projects</p>
</div>
<div class="col-6">
<h5 class="font-size-15">$1245</h5>
<p class="text-muted mb-0">Revenue</p>
</div>
</div>
<div class="mt-4">
<a href class="btn btn-primary btn-sm">
View Profile
<i class="mdi mdi-arrow-right ms-1"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end card -->
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Personal Information</h4>
<p
class="text-muted mb-4"
>Hi I'm Cynthia Price,has been the industry's standard dummy text To an English person, it will seem like simplified English, as a skeptical Cambridge.</p>
<div class="table-responsive ">
<table class="table table-nowrap mb-0">
<tbody>
<tr>
<th scope="row">Full Name :</th>
<td>Cynthia Price</td>
</tr>
<tr>
<th scope="row">Mobile :</th>
<td>(123) 123 1234</td>
</tr>
<tr>
<th scope="row">E-mail :</th>
<td>cynthiaskote@gmail.com</td>
</tr>
<tr>
<th scope="row">Location :</th>
<td>California, United States</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- end card -->
<div class="card">
<div class="card-body">
<h4 class="card-title mb-5">Experience</h4>
<div class>
<ul class="verti-timeline list-unstyled">
<li class="event-list active">
<div class="event-timeline-dot">
<i class="bx bx-right-arrow-circle bx-fade-right"></i>
</div>
<div class="d-flex">
<div class="me-3">
<i class="bx bx-server h4 text-primary"></i>
</div>
<div class="flex-grow-1">
<div>
<h5 class="font-size-15">
<a href="javascript: void(0);" class="text-dark">Back end Developer</a>
</h5>
<span class="text-primary">2016 - 19</span>
</div>
</div>
</div>
</li>
<li class="event-list">
<div class="event-timeline-dot">
<i class="bx bx-right-arrow-circle"></i>
</div>
<div class="d-flex">
<div class="me-3">
<i class="bx bx-code h4 text-primary"></i>
</div>
<div class="flex-grow-1">
<div>
<h5 class="font-size-15">
<a href="javascript: void(0);" class="text-dark">Front end Developer</a>
</h5>
<span class="text-primary">2013 - 16</span>
</div>
</div>
</div>
</li>
<li class="event-list">
<div class="event-timeline-dot">
<i class="bx bx-right-arrow-circle"></i>
</div>
<div class="d-flex">
<div class="me-3">
<i class="bx bx-edit h4 text-primary"></i>
</div>
<div class="flex-grow-1">
<div>
<h5 class="font-size-15">
<a href="javascript: void(0);" class="text-dark">UI /UX Designer</a>
</h5>
<span class="text-primary">2011 - 13</span>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<!-- end card -->
</div>
<div class="col-xl-8">
<div class="row">
<div v-for="stat of statData" :key="stat.icon" class="col-md-4">
<Stat :icon="stat.icon" :title="stat.title" :value="stat.value" />
</div>
</div>
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Revenue</h4>
<apexchart
class="apex-charts"
type="bar"
height="320"
:series="revenueChart.series"
:options="revenueChart.chartOptions"
></apexchart>
</div>
</div>
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">My Projects</h4>
<div class="table-responsive">
<table class="table table-nowrap table-hover mb-0">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Projects</th>
<th scope="col">Start Date</th>
<th scope="col">Deadline</th>
<th scope="col">Budget</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Skote admin UI</td>
<td>2 Sep, 2019</td>
<td>20 Oct, 2019</td>
<td>$506</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Skote admin Logo</td>
<td>1 Sep, 2019</td>
<td>2 Sep, 2019</td>
<td>$94</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Redesign - Landing page</td>
<td>21 Sep, 2019</td>
<td>29 Sep, 2019</td>
<td>$156</td>
</tr>
<tr>
<th scope="row">4</th>
<td>App Landing UI</td>
<td>29 Sep, 2019</td>
<td>04 Oct, 2019</td>
<td>$122</td>
</tr>
<tr>
<th scope="row">5</th>
<td>Blog Template</td>
<td>05 Oct, 2019</td>
<td>16 Oct, 2019</td>
<td>$164</td>
</tr>
<tr>
<th scope="row">6</th>
<td>Redesign - Multipurpose Landing</td>
<td>17 Oct, 2019</td>
<td>05 Nov, 2019</td>
<td>$192</td>
</tr>
<tr>
<th scope="row">7</th>
<td>Logo Branding</td>
<td>04 Nov, 2019</td>
<td>05 Nov, 2019</td>
<td>$94</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,43 +0,0 @@
const revenueChart = {
series: [{
name: 'Revenue',
data: [42, 85, 101, 56, 37, 105, 38, 58, 92, 82, 72, 32]
}],
chartOptions: {
chart: {
toolbar: {
show: false,
}
},
plotOptions: {
bar: {
horizontal: false,
columnWidth: '14%',
endingShape: 'rounded'
},
},
dataLabels: {
enabled: false
},
stroke: {
show: true,
width: 2,
colors: ['transparent']
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
},
yaxis: {
title: {
text: '$ (thousands)'
}
},
fill: {
opacity: 1
},
colors: ['#556ee6'],
}
};
export { revenueChart };

View File

@ -1,65 +0,0 @@
const userGridData = [
{
id: 1,
name: 'David McHenry',
designation: 'UI/UX Designer',
projects: ['Photoshop', 'illustrator'],
email: 'david@skote.com'
},
{
id: 2,
image: require('@/assets/images/users/avatar-2.jpg'),
name: 'Frank Kirk',
designation: 'Frontend Developer',
projects: ['Html', 'Css', '2 + more'],
email: 'frank@skote.com'
},
{
id: 3,
image: require('@/assets/images/users/avatar-3.jpg'),
name: 'Rafael Morales',
designation: 'Backend Developer',
projects: ['Php', 'Java', 'Python'],
email: 'Rafael@skote.com'
},
{
id: 4,
name: 'Mark Ellison',
designation: 'Full Stack Developer',
projects: ['Ruby', 'Php', '2 + more'],
email: 'mark@skote.com'
},
{
id: 5,
image: require('@/assets/images/users/avatar-4.jpg'),
name: 'Minnie Walter',
designation: 'Frontend Developer',
projects: ['Html', 'Css', '2 + more'],
email: 'minnie@skote.com'
},
{
id: 6,
image: require('@/assets/images/users/avatar-5.jpg'),
name: 'Shirley Smith',
designation: 'UI/UX Designer',
projects: ['Photoshop', 'illustrator'],
email: 'shirley@skote.com'
},
{
id: 7,
name: 'John Santiago',
designation: 'Full Stack Developer',
projects: ['Ruby', 'Php', '2 + more'],
email: 'john@skote.com'
},
{
id: 8,
image: require('@/assets/images/users/avatar-5.jpg'),
name: 'Colin Melton',
designation: 'Backend Developer',
projects: ['Php', 'Java', 'Python'],
email: 'colin@skote.com'
},
];
export { userGridData };

View File

@ -1,376 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import appConfig from "@/app.config";
import PageHeader from "@/components/page-header";
/**
* Buy/Sell component
*/
export default {
page: {
title: "Buy/Sell",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader },
data() {
return {
title: "Buy/Sell",
items: [
{
text: "Crypto",
href: "/"
},
{
text: "Buy/Sell",
active: true
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<div class="float-end">
<b-dropdown ngbDropdown menu-class="dropdown-menu-md dropdown-menu-end" right variant="light">
<template v-slot:button-content>
<i class="mdi mdi-wallet me-1"></i>
<span class="d-none d-sm-inline-block" ngbDropdownToggle>
Wallet Balance
<i class="mdi mdi-chevron-down"></i>
</span>
</template>
<div class="dropdown-item-text">
<div>
<p class="text-muted mb-2">Available Balance</p>
<h5 class="mb-0">$ 9148.23</h5>
</div>
</div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript: void(0);">
BTC :
<span class="float-end">1.02356</span>
</a>
<a class="dropdown-item" href="javascript: void(0);">
ETH :
<span class="float-end">0.04121</span>
</a>
<a class="dropdown-item" href="javascript: void(0);">
LTC :
<span class="float-end">0.00356</span>
</a>
<div class="dropdown-divider"></div>
<a
class="dropdown-item text-primary text-center"
href="javascript: void(0);"
>Learn more</a>
</b-dropdown>
</div>
<h4 class="card-title mb-4">Buy/Sell Crypto</h4>
<b-tabs content-class="crypto-buy-sell-nav-content p-4" nav-class="nav-tabs-custom">
<b-tab title="Buy" active>
<form>
<div class="mb-2">
<label>Currency :</label>
<div class="row">
<div class="col-xl-2 col-sm-4">
<div class="mb-3">
<label class="card-radio-label mb-2">
<input
type="radio"
name="currency"
id="buycurrencyoption1"
class="card-radio-input"
checked
/>
<div class="card-radio">
<div>
<i
class="mdi mdi-bitcoin font-size-24 text-warning align-middle me-2"
></i>
<span>Bitcoin</span>
</div>
</div>
</label>
<div>
<p class="text-muted mb-1">Current price :</p>
<h5 class="font-size-16">0.00016 BTC</h5>
</div>
</div>
</div>
<div class="col-xl-2 col-sm-4">
<div class="mb-3">
<label class="card-radio-label mb-2">
<input
type="radio"
name="currency"
id="buycurrencyoption2"
class="card-radio-input"
/>
<div class="card-radio">
<div>
<i
class="mdi mdi-ethereum font-size-24 text-primary align-middle me-2"
></i>
<span>Ethereum</span>
</div>
</div>
</label>
<div>
<p class="text-muted mb-1">Current price :</p>
<h5 class="font-size-16">0.0073 ETH</h5>
</div>
</div>
</div>
<div class="col-xl-2 col-sm-4">
<div class="mb-3">
<label class="card-radio-label mb-2">
<input
type="radio"
name="currency"
id="buycurrencyoption3"
class="card-radio-input"
/>
<div class="card-radio">
<div>
<i
class="mdi mdi-litecoin font-size-24 text-info align-middle me-2"
></i>
<span>litecoin</span>
</div>
</div>
</label>
<div>
<p class="text-muted mb-1">Current price :</p>
<h5 class="font-size-16">0.025 LTC</h5>
</div>
</div>
</div>
</div>
</div>
<div class="mb-2">
<label>Payment method :</label>
<div class="row">
<div class="col-xl-2 col-sm-4">
<label class="card-radio-label mb-3">
<input
type="radio"
name="pay-method"
id="pay-methodoption1"
class="card-radio-input"
/>
<div class="card-radio">
<i
class="fab fa-cc-mastercard font-size-24 text-primary align-middle me-2"
></i>
<span>Credit / Debit Card</span>
</div>
</label>
</div>
<div class="col-xl-2 col-sm-4">
<label class="card-radio-label mb-3">
<input
type="radio"
name="pay-method"
id="pay-methodoption3"
class="card-radio-input"
checked
/>
<div class="card-radio">
<i class="fab fa-cc-paypal font-size-24 text-primary align-middle me-2"></i>
<span>Paypal</span>
</div>
</label>
</div>
</div>
</div>
<div class="mb-3">
<label>Add value :</label>
<div class="row">
<div class="col-sm-6">
<div class="input-group mb-2 currency-value">
<div class="input-group-prepend">
<span class="input-group-text">Bitcoin</span>
</div>
<input type="text" class="form-control" />
</div>
</div>
<div class="col-sm-6">
<div class="input-group mb-2">
<input type="text" class="form-control text-sm-right" />
<div class="input-group-append">
<span class="input-group-text">USD Amount</span>
</div>
</div>
</div>
</div>
</div>
<div class="mb-3">
<label>Wallet Address :</label>
<input type="text" class="form-control" />
</div>
<div class="text-center mt-4">
<button type="button" class="btn btn-success">Buy Crypto currency</button>
</div>
</form>
</b-tab>
<b-tab title="Sell">
<form>
<div class="mb-2">
<label>Currency :</label>
<div class="row">
<div class="col-xl-2 col-sm-4">
<div class="mb-3">
<label class="card-radio-label mb-2">
<input
type="radio"
name="currency"
id="sellcurrencyoption1"
class="card-radio-input"
checked
/>
<div class="card-radio">
<div>
<i
class="mdi mdi-bitcoin font-size-24 text-warning align-middle me-2"
></i>
<span>Bitcoin</span>
</div>
</div>
</label>
<div>
<p class="text-muted mb-1">Current price :</p>
<h5 class="font-size-16">0.00016 BTC</h5>
</div>
</div>
</div>
<div class="col-xl-2 col-sm-4">
<div class="mb-3">
<label class="card-radio-label mb-2">
<input
type="radio"
name="currency"
id="sellcurrencyoption2"
class="card-radio-input"
/>
<div class="card-radio">
<div>
<i
class="mdi mdi-ethereum font-size-24 text-primary align-middle me-2"
></i>
<span>Ethereum</span>
</div>
</div>
</label>
<div>
<p class="text-muted mb-1">Current price :</p>
<h5 class="font-size-16">0.0073 ETH</h5>
</div>
</div>
</div>
<div class="col-xl-2 col-sm-4">
<div class="mb-3">
<label class="card-radio-label mb-2">
<input
type="radio"
name="currency"
id="sellcurrencyoption3"
class="card-radio-input"
/>
<div class="card-radio">
<div>
<i
class="mdi mdi-litecoin font-size-24 text-info align-middle me-2"
></i>
<span>litecoin</span>
</div>
</div>
</label>
<div>
<p class="text-muted mb-1">Current price :</p>
<h5 class="font-size-16">0.025 LTC</h5>
</div>
</div>
</div>
</div>
</div>
<div class="mb-3">
<label>Email :</label>
<input type="email" class="form-control" />
</div>
<div class="mb-3">
<label>Add value :</label>
<div class="row">
<div class="col-sm-6">
<div class="input-group mb-2 currency-value">
<div class="input-group-prepend">
<span class="input-group-text">Crypto value</span>
</div>
<input type="text" class="form-control" />
</div>
</div>
<div class="col-sm-6">
<div class="input-group mb-2">
<input type="text" class="form-control text-sm-right" />
<div class="input-group-append">
<span class="input-group-text">USD Amount</span>
</div>
</div>
</div>
</div>
</div>
<div class="mb-3">
<label>Wallet Address :</label>
<input type="text" class="form-control" />
</div>
<div class="text-center mt-4">
<button type="button" class="btn btn-danger">Sell Crypto currency</button>
</div>
</form>
</b-tab>
</b-tabs>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,316 +0,0 @@
const priceCandlestickChart = {
series: [{
data: [{
x: new Date(1538778600000),
y: [6629.81, 6650.5, 6623.04, 6633.33]
},
{
x: new Date(1538780400000),
y: [6632.01, 6643.59, 6620, 6630.11]
},
{
x: new Date(1538782200000),
y: [6630.71, 6648.95, 6623.34, 6635.65]
},
{
x: new Date(1538784000000),
y: [6635.65, 6651, 6629.67, 6638.24]
},
{
x: new Date(1538785800000),
y: [6638.24, 6640, 6620, 6624.47]
},
{
x: new Date(1538787600000),
y: [6624.53, 6636.03, 6621.68, 6624.31]
},
{
x: new Date(1538789400000),
y: [6624.61, 6632.2, 6617, 6626.02]
},
{
x: new Date(1538791200000),
y: [6627, 6627.62, 6584.22, 6603.02]
},
{
x: new Date(1538793000000),
y: [6605, 6608.03, 6598.95, 6604.01]
},
{
x: new Date(1538794800000),
y: [6604.5, 6614.4, 6602.26, 6608.02]
},
{
x: new Date(1538796600000),
y: [6608.02, 6610.68, 6601.99, 6608.91]
},
{
x: new Date(1538798400000),
y: [6608.91, 6618.99, 6608.01, 6612]
},
{
x: new Date(1538800200000),
y: [6612, 6615.13, 6605.09, 6612]
},
{
x: new Date(1538802000000),
y: [6612, 6624.12, 6608.43, 6622.95]
},
{
x: new Date(1538803800000),
y: [6623.91, 6623.91, 6615, 6615.67]
},
{
x: new Date(1538805600000),
y: [6618.69, 6618.74, 6610, 6610.4]
},
{
x: new Date(1538807400000),
y: [6611, 6622.78, 6610.4, 6614.9]
},
{
x: new Date(1538809200000),
y: [6614.9, 6626.2, 6613.33, 6623.45]
},
{
x: new Date(1538811000000),
y: [6623.48, 6627, 6618.38, 6620.35]
},
{
x: new Date(1538812800000),
y: [6619.43, 6620.35, 6610.05, 6615.53]
},
{
x: new Date(1538814600000),
y: [6615.53, 6617.93, 6610, 6615.19]
},
{
x: new Date(1538816400000),
y: [6615.19, 6621.6, 6608.2, 6620]
},
{
x: new Date(1538818200000),
y: [6619.54, 6625.17, 6614.15, 6620]
},
{
x: new Date(1538820000000),
y: [6620.33, 6634.15, 6617.24, 6624.61]
},
{
x: new Date(1538821800000),
y: [6625.95, 6626, 6611.66, 6617.58]
},
{
x: new Date(1538823600000),
y: [6619, 6625.97, 6595.27, 6598.86]
},
{
x: new Date(1538825400000),
y: [6598.86, 6598.88, 6570, 6587.16]
},
{
x: new Date(1538827200000),
y: [6588.86, 6600, 6580, 6593.4]
},
{
x: new Date(1538829000000),
y: [6593.99, 6598.89, 6585, 6587.81]
},
{
x: new Date(1538830800000),
y: [6587.81, 6592.73, 6567.14, 6578]
},
{
x: new Date(1538832600000),
y: [6578.35, 6581.72, 6567.39, 6579]
},
{
x: new Date(1538834400000),
y: [6579.38, 6580.92, 6566.77, 6575.96]
},
{
x: new Date(1538836200000),
y: [6575.96, 6589, 6571.77, 6588.92]
},
{
x: new Date(1538838000000),
y: [6588.92, 6594, 6577.55, 6589.22]
},
{
x: new Date(1538839800000),
y: [6589.3, 6598.89, 6589.1, 6596.08]
},
{
x: new Date(1538841600000),
y: [6597.5, 6600, 6588.39, 6596.25]
},
{
x: new Date(1538843400000),
y: [6598.03, 6600, 6588.73, 6595.97]
},
{
x: new Date(1538845200000),
y: [6595.97, 6602.01, 6588.17, 6602]
},
{
x: new Date(1538847000000),
y: [6602, 6607, 6596.51, 6599.95]
},
{
x: new Date(1538848800000),
y: [6600.63, 6601.21, 6590.39, 6591.02]
},
{
x: new Date(1538850600000),
y: [6591.02, 6603.08, 6591, 6591]
},
{
x: new Date(1538852400000),
y: [6591, 6601.32, 6585, 6592]
},
{
x: new Date(1538854200000),
y: [6593.13, 6596.01, 6590, 6593.34]
},
{
x: new Date(1538856000000),
y: [6593.34, 6604.76, 6582.63, 6593.86]
},
{
x: new Date(1538857800000),
y: [6593.86, 6604.28, 6586.57, 6600.01]
},
{
x: new Date(1538859600000),
y: [6601.81, 6603.21, 6592.78, 6596.25]
},
{
x: new Date(1538861400000),
y: [6596.25, 6604.2, 6590, 6602.99]
},
{
x: new Date(1538863200000),
y: [6602.99, 6606, 6584.99, 6587.81]
},
{
x: new Date(1538865000000),
y: [6587.81, 6595, 6583.27, 6591.96]
},
{
x: new Date(1538866800000),
y: [6591.97, 6596.07, 6585, 6588.39]
},
{
x: new Date(1538868600000),
y: [6587.6, 6598.21, 6587.6, 6594.27]
},
{
x: new Date(1538870400000),
y: [6596.44, 6601, 6590, 6596.55]
},
{
x: new Date(1538872200000),
y: [6598.91, 6605, 6596.61, 6600.02]
},
{
x: new Date(1538874000000),
y: [6600.55, 6605, 6589.14, 6593.01]
},
{
x: new Date(1538875800000),
y: [6593.15, 6605, 6592, 6603.06]
},
{
x: new Date(1538877600000),
y: [6603.07, 6604.5, 6599.09, 6603.89]
},
{
x: new Date(1538879400000),
y: [6604.44, 6604.44, 6600, 6603.5]
},
{
x: new Date(1538881200000),
y: [6603.5, 6603.99, 6597.5, 6603.86]
},
{
x: new Date(1538883000000),
y: [6603.85, 6605, 6600, 6604.07]
},
{
x: new Date(1538884800000),
y: [6604.98, 6606, 6604.07, 6606]
},
]
}],
chartOptions: {
chart: {
type: 'candlestick',
height: 310,
toolbar: false,
zoom: {
enabled: true,
}
},
plotOptions: {
candlestick: {
colors: {
upward: '#34c38f',
downward: '#f46a6a'
}
}
},
xaxis: {
type: 'datetime'
},
yaxis: {
tooltip: {
enabled: true
}
}
}
};
const notificationData = [
{
id: 1,
date: '15 Mar ',
text: 'If several languages coalesce of the resulting.'
},
{
id: 2,
date: '14 Mar ',
text: 'New common language will be more simple and regular than the existing'
},
{
id: 3,
date: '10 Mar',
text: 'It will seem like simplified English as a skeptical Cambridge'
},
{
id: 4,
date: '13 Mar',
text: 'To achieve this, it would be necessary'
},
{
id: 5,
date: '12 Mar ',
text: 'Cum sociis natoque penatibus et magnis dis'
},
{
id: 6,
date: '11 Mar ',
text: 'New common language will be more simple and regular than the existing'
},
{
id: 7,
date: '10 Mar ',
text: 'It will seem like simplified English as a skeptical Cambridge'
},
{
id: 8,
date: '09 Mar ',
text: 'To achieve this, it would be necessary'
},
];
export { priceCandlestickChart, notificationData };

View File

@ -1,370 +0,0 @@
<script>
import { SimpleBar } from "simplebar-vue3"
import Layout from "../../../layouts/main";
import appConfig from "@/app.config";
import PageHeader from "@/components/page-header";
import { priceCandlestickChart, notificationData } from "./data";
/**
* Exchange component
*/
export default {
page: {
title: "Exchange",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader, SimpleBar },
data() {
return {
priceCandlestickChart: priceCandlestickChart,
notificationData: notificationData,
title: "Exchange",
items: [
{
text: "Crypto",
href: "/",
},
{
text: "Exchange",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<div class="d-flex align-items-start">
<div class="flex-shrink-0 me-3">
<img
src="@/assets/images/users/avatar-1.jpg"
alt
class="avatar-md rounded-circle img-thumbnail"
/>
</div>
<div class="flex-grow-1 align-self-center">
<div class="text-muted">
<h5>Henry wells</h5>
<p class="mb-1">henrywells@abc.com</p>
<p class="mb-0">Id no: #SK0234</p>
</div>
</div>
<b-dropdown
ngbDropdown
menu-class="dropdown-menu-md dropdown-menu-end"
right
variant="light"
>
<template v-slot:button-content>
<i class="mdi mdi-wallet me-1"></i>
<span class="d-none d-sm-inline-block" ngbDropdownToggle>
Wallet Balance
<i class="mdi mdi-chevron-down"></i>
</span>
</template>
<div class="dropdown-item-text">
<div>
<p class="text-muted mb-2">Available Balance</p>
<h5 class="mb-0">$ 9148.23</h5>
</div>
</div>
<b-dropdown-divider></b-dropdown-divider>
<b-dropdown-item>
BTC :
<span class="float-end">1.02356</span>
</b-dropdown-item>
<b-dropdown-item>
ETH :
<span class="float-end">0.04121</span>
</b-dropdown-item>
<b-dropdown-item>
LTC :
<span class="float-end">0.00356</span>
</b-dropdown-item>
<b-dropdown-divider></b-dropdown-divider>
<a
class="dropdown-item text-primary text-center"
href="javascript: void(0);"
>Learn more</a
>
</b-dropdown>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xl-8">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Price</h4>
<div class="row">
<div class="col-xl-3 col-sm-4">
<div class="d-flex">
<div class="avatar-sm me-3">
<span
class="avatar-title rounded-circle bg-soft bg-warning text-warning font-size-22"
>
<i class="mdi mdi-bitcoin"></i>
</span>
</div>
<div class="flex-grow-1">
<p class="text-muted mb-2">Bitcoin</p>
<h5>1.02356 BTC</h5>
</div>
</div>
</div>
<div class="col-xl-3 col-sm-4">
<div class="mt-4 mt-sm-0">
<p class="text-muted mb-2">In USD</p>
<h5>6310.22 USD</h5>
</div>
</div>
<div class="col-xl-3 col-sm-4">
<div class="mt-4 mt-sm-0">
<p class="text-muted mb-2">Last 24 hrs</p>
<h5>
0.24 %
<i class="mdi mdi-arrow-up text-success"></i>
</h5>
</div>
</div>
</div>
<div class="mt-4">
<apexchart
class="apex-charts"
height="310"
type="candlestick"
dir="ltr"
:series="priceCandlestickChart.series"
:options="priceCandlestickChart.chartOptions"
></apexchart>
</div>
</div>
</div>
</div>
<div class="col-xl-4">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Buy / Sell</h4>
<div>
<p class="text-muted mb-2">
<i class="mdi mdi-wallet me-1"></i> Wallet Balance
</p>
<h5>$ 9148.23</h5>
</div>
<div class="mt-4">
<b-tabs nav-class="bg-light rounded" pills content-class="mt-4">
<b-tab title="Buy" active>
<h5 class="font-size-14 mb-4">Buy Coin</h5>
<div>
<div>
<label>Add Amount :</label>
<div class="input-group mb-3">
<label class="input-group-text">Amount</label>
<select class="form-select" style="max-width: 90px">
<option value="BT" selected="">BTC</option>
<option value="ET">ETH</option>
<option value="LT">LTC</option>
</select>
<input type="text" class="form-control" />
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text">Price</label>
</div>
<input type="text" class="form-control" />
<div class="input-group-append">
<label class="input-group-text">$</label>
</div>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text">Total</label>
</div>
<input type="text" class="form-control" />
</div>
</div>
<div class="text-center">
<button type="button" class="btn btn-success w-md">
Buy Coin
</button>
</div>
</div>
</b-tab>
<b-tab title="Sell">
<h5 class="font-size-14 mb-4">Sell Coin</h5>
<div>
<div>
<label>Add Amount :</label>
<div class="input-group mb-3">
<label class="input-group-text">Amount</label>
<select class="form-select" style="max-width: 90px">
<option value="BT" selected="">BTC</option>
<option value="ET">ETH</option>
<option value="LT">LTC</option>
</select>
<input type="text" class="form-control" />
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text">Price</label>
</div>
<input type="text" class="form-control" />
<div class="input-group-append">
<label class="input-group-text">$</label>
</div>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text">Total</label>
</div>
<input type="text" class="form-control" />
</div>
</div>
<div class="text-center">
<button type="button" class="btn btn-danger w-md">
Sell Coin
</button>
</div>
</div>
</b-tab>
</b-tabs>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Order book</h4>
<div class="table-responsive ">
<table class="table table-bordered mb-0">
<thead>
<tr class="text-center">
<th colspan="3">Buy</th>
<th colspan="3">Sell</th>
</tr>
<tr>
<th scope="col">Amount</th>
<th scope="col">Total</th>
<th scope="col">Price</th>
<th scope="col">Amount</th>
<th scope="col">Total</th>
<th scope="col">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>0.0412</td>
<td>0.0412</td>
<td>256.18</td>
<td>0.0201</td>
<td>0.0201</td>
<td>124.98</td>
</tr>
<tr>
<td>0.0301</td>
<td>0.0301</td>
<td>187.16</td>
<td>0.0165</td>
<td>0.0165</td>
<td>102.60</td>
</tr>
<tr>
<td>0.0523</td>
<td>0.0523</td>
<td>325.21</td>
<td>0.0348</td>
<td>0.0348</td>
<td>216.39</td>
</tr>
<tr>
<td>0.0432</td>
<td>0.0432</td>
<td>268.62</td>
<td>0.0321</td>
<td>0.0321</td>
<td>199.60</td>
</tr>
<tr>
<td>0.0246</td>
<td>0.0246</td>
<td>152.96</td>
<td>0.0403</td>
<td>0.0403</td>
<td>250.59</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Notifications</h4>
<SimpleBar style="max-height: 310px">
<ul class="verti-timeline list-unstyled">
<li
class="event-list"
v-for="data of notificationData"
:key="data.id"
>
<div class="event-timeline-dot">
<i class="bx bx-right-arrow-circle font-size-18"></i>
</div>
<div class="d-flex">
<div class="me-3">
<h5 class="font-size-14">
{{ data.date }}
<i
class="bx bx-right-arrow-alt font-size-16 text-primary align-middle ms-2"
></i>
</h5>
</div>
<div class="flex-grow-1">
<div>{{ data.text }}</div>
</div>
</div>
</li>
</ul>
</SimpleBar>
</div>
</div>
</div>
</div>
</Layout>
</template>

File diff suppressed because it is too large Load Diff

View File

@ -1,247 +0,0 @@
<script>
import { FormWizard, TabContent } from "@anivive/vue3-form-wizard";
// import vue2Dropzone from "vue2-dropzone";
import Layout from "../../../layouts/main";
import appConfig from "@/app.config";
import PageHeader from "@/components/page-header";
/**
* KYC Application component
*/
export default {
methods: {
onComplete: function () {
this.$refs.iswizard.reset();
},
},
page: {
title: "KYC Application",
meta: [{ name: "description", content: appConfig.description }],
},
components: {
Layout,
PageHeader,
// vueDropzone: vue2Dropzone,
FormWizard,
TabContent,
},
mounted() {},
data() {
return {
title: "KYC Application",
items: [
{
text: "Crypto",
href: "/",
},
{
text: "KYC Application",
active: true,
},
],
showModal: false,
dropzoneOptions: {
url: "https://httpbin.org/post",
thumbnailWidth: 120,
maxFilesize: 0.5,
headers: { "My-Awesome-Header": "header value" },
},
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row justify-content-center mt-lg-5">
<div class="col-xl-5 col-sm-8">
<div class="card">
<div class="card-body">
<div class="text-center">
<div class="row justify-content-center">
<div class="col-lg-10">
<h4 class="mt-4 fw-semibold">KYC Verification</h4>
<p class="text-muted mt-3">
Itaque earum rerum hic tenetur a sapiente delectus ut aut
reiciendis perferendis asperiores repellat.
</p>
<div class="mt-4">
<!-- Button trigger modal -->
<button
type="button"
class="btn btn-primary"
@click="showModal = true"
>
Click here for Verification
</button>
</div>
</div>
<div class="row justify-content-center mt-5 mb-2">
<div class="col-sm-6 col-8">
<div>
<img
src="@/assets/images/verification-img.png"
alt
class="img-fluid"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<b-modal
v-model="showModal"
size="lg"
centered
title="Verify your Account"
hide-footer
>
<form-wizard
shape="tab"
color="#556ee6"
ref="iswizard"
@on-complete="onComplete"
>
<tab-content
icon="mdi mdi-account-circle"
title="Personal Info"
class="kyc-wizard"
>
<form>
<div class="row">
<div class="col-lg-6">
<div class="mb-3">
<label for="kycfirstname-input">First name</label>
<input
type="text"
class="form-control"
id="kycfirstname-input"
placeholder="Enter First name"
/>
</div>
</div>
<div class="col-lg-6">
<div class="mb-3">
<label for="kyclastname-input">Last name</label>
<input
type="text"
class="form-control"
id="kyclastname-input"
placeholder="Enter Last name"
/>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="mb-3">
<label for="kycphoneno-input">Phone</label>
<input
type="text"
class="form-control"
id="kycphoneno-input"
placeholder="Enter Phone number"
/>
</div>
</div>
<div class="col-lg-6">
<div class="mb-3">
<label for="kycbirthdate-input">Date of birth</label>
<input
type="text"
class="form-control"
id="kycbirthdate-input"
placeholder="Enter Date of birth"
/>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="mb-3">
<label for="kycselectcity-input" class="form-label"
>City</label
>
<select class="form-select" id="kycselectcity-input">
<option value="SF" selected>San Francisco</option>
<option value="LA">Los Angeles</option>
<option value="SD">San Diego</option>
</select>
</div>
</div>
</div>
</form>
</tab-content>
<tab-content
icon="mdi mdi-email"
title="Confirm Email"
class="kyc-wizard"
>
<form>
<div class="row">
<div class="col-lg-12">
<div class="mb-3">
<label for="kycemail-input">Email</label>
<input
type="email"
class="form-control"
id="kycemail-input"
placeholder="Enter Email Address"
/>
</div>
<div class="mb-3">
<label for="kycconfirmcode-input">Confirm code</label>
<input
type="email"
class="form-control"
id="kycconfirmcode-input"
placeholder="Enter Confirm code"
/>
</div>
<div class="mb-3">
Didn't recieve code ?
<button type="button" class="btn btn-link">
Resend Code
</button>
</div>
</div>
</div>
</form>
</tab-content>
<tab-content
icon="mdi mdi-checkbox-marked-circle-outline"
title="Document Verification"
class="kyc-wizard"
>
<h5 class="font-size-14 mb-3">
Upload document file for a verification
</h5>
<div class="kyc-doc-verification">
<!-- <vue-dropzone
id="dropzone"
ref="myVueDropzone"
:use-custom-slot="true"
:options="dropzoneOptions"
>
<div class="dropzone-custom-content">
<i class="display-4 text-muted bx bxs-cloud-upload"></i>
<h4>Drop files here or click to upload.</h4>
</div>
</vue-dropzone> -->
<!-- end row -->
</div>
</tab-content>
</form-wizard>
</b-modal>
</Layout>
</template>

View File

@ -1,412 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import appConfig from "@/app.config";
import PageHeader from "@/components/page-header";
/**
* Lending component
*/
export default {
page: {
title: "Lending",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader },
data() {
return {
title: "Lending",
items: [
{
text: "Crypto",
href: "/"
},
{
text: "Lending",
active: true
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-4">
<div class="card">
<div class="card-body border-bottom">
<b-dropdown
class="float-end ms-2"
toggle-class="text-muted p-0"
menu-class="dropdown-menu-end"
right
variant="white"
>
<template v-slot:button-content>
<i class="mdi mdi-dots-horizontal font-size-18"></i>
</template>
<b-dropdown-item>Action</b-dropdown-item>
<b-dropdown-item>Another action</b-dropdown-item>
<b-dropdown-item>Something else here</b-dropdown-item>
</b-dropdown>
<div>
<div class="mb-4 me-3">
<i class="mdi mdi-account-circle text-primary h1"></i>
</div>
<div>
<h5 class>Henry Wells</h5>
<p class="text-muted mb-1">henrywells@abc.com</p>
<p class="text-muted mb-0">Id no: #SK0234</p>
</div>
</div>
</div>
<div class="card-body border-bottom">
<div>
<div class="row">
<div class="col-sm-6">
<div>
<p class="text-muted mb-2">Available Balance</p>
<h5>$ 9148.00</h5>
</div>
</div>
<div class="col-sm-6">
<div class="text-sm-end mt-4 mt-sm-0">
<p class="text-muted mb-2">Since last month</p>
<h5>
+ $ 215.53
<span class="badge bg-success ms-1 align-bottom">+ 1.3 %</span>
</h5>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">How it work</h4>
<div>
<ul class="verti-timeline list-unstyled">
<li class="event-list">
<div class="event-timeline-dot">
<i class="bx bx-right-arrow-circle"></i>
</div>
<div class="d-flex">
<div class="me-3">
<i class="bx bx-user-plus h2 text-primary"></i>
</div>
<div class="flex-grow-1">
<div>
<h5 class="font-size-14">Register account</h5>
<p class="text-muted">
New common language will be more simple and regular
than the existing.
</p>
</div>
</div>
</div>
</li>
<li class="event-list">
<div class="event-timeline-dot">
<i class="bx bx-right-arrow-circle"></i>
</div>
<div class="d-flex">
<div class="me-3">
<i class="bx bx-copy-alt h2 text-primary"></i>
</div>
<div class="flex-grow-1">
<div>
<h5 class="font-size-14">Select Deposit</h5>
<p class="text-muted">
To achieve this, it would be necessary to have uniform
grammar.
</p>
</div>
</div>
</div>
</li>
<li class="event-list">
<div class="event-timeline-dot">
<i class="bx bx-right-arrow-circle"></i>
</div>
<div class="d-flex">
<div class="me-3">
<i class="bx bx-cloud-download h2 text-primary"></i>
</div>
<div class="flex-grow-1">
<div>
<h5 class="font-size-14">Get Earnings</h5>
<p class="text-muted">
New common language will be more simple and regular
than the existing.
</p>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-xl-8">
<div class="card">
<div class="card-body">
<h4 class="card-title">Deposits</h4>
<div class="row">
<div class="col-lg-4">
<div class="border p-3 rounded mt-4">
<div class="d-flex align-items-center mb-3">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-warning text-warning font-size-18"
>
<i class="mdi mdi-bitcoin"></i>
</span>
</div>
<h5 class="font-size-14 mb-0">Bitcoin</h5>
</div>
<div class="row">
<div class="col-lg-6">
<div class="text-muted mt-3">
<p>Annual Yield</p>
<h4>4.05 %</h4>
<p class="mb-0">0.00745 BTC</p>
</div>
</div>
<div class="col-lg-6 align-self-end">
<div class="float-end mt-3">
<a href="javascript: void(0);" class="btn btn-primary">Select</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="border p-3 rounded mt-4">
<div class="d-flex align-items-center mb-3">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-18"
>
<i class="mdi mdi-ethereum"></i>
</span>
</div>
<h5 class="font-size-14 mb-0">Ethereum</h5>
</div>
<div class="row">
<div class="col-lg-6">
<div class="text-muted mt-3">
<p>Annual Yield</p>
<h4>5.08 %</h4>
<p class="mb-0">0.0056 ETH</p>
</div>
</div>
<div class="col-lg-6 align-self-end">
<div class="float-end mt-3">
<a href="javascript: void(0);" class="btn btn-primary">Select</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="border p-3 rounded mt-4">
<div class="d-flex align-items-center mb-3">
<div class="avatar-xs me-3">
<span class="avatar-title rounded-circle bg-soft bg-info text-info font-size-18">
<i class="mdi mdi-litecoin"></i>
</span>
</div>
<h5 class="font-size-14 mb-0">Litecoin</h5>
</div>
<div class="row">
<div class="col-lg-6">
<div class="text-muted mt-3">
<p>Annual Yield</p>
<h4>4.12 %</h4>
<p class="mb-0">0.00245 LTC</p>
</div>
</div>
<div class="col-lg-6 align-self-end">
<div class="float-end mt-3">
<a href="javascript: void(0);" class="btn btn-primary">Select</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">My Assets</h4>
<div class="table-responsive">
<table class="table table-nowrap table-centered mb-0 align-middle">
<thead>
<tr>
<th scope="col">Token</th>
<th scope="col">Price</th>
<th scope="col">Invest</th>
<th scope="col">Loans</th>
<th scope="col" colspan="2">Total</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-warning text-warning font-size-18"
>
<i class="mdi mdi-bitcoin"></i>
</span>
</div>
<span>BTC</span>
</div>
</th>
<td>
<div class="text-muted">$ 7525.47</div>
</td>
<td>
<h5 class="font-size-14 mb-1">1.2601</h5>
<div class="text-muted">$6225.74</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.1512</h5>
<div class="text-muted">$742.32</div>
</td>
<td>
<h5 class="font-size-14 mb-1">4.2562</h5>
<div class="text-muted">$6425.42</div>
</td>
<td style="width: 120px;">
<a href="javascript: void(0);" class="btn btn-primary btn-sm w-xs">View</a>
</td>
</tr>
<tr>
<th scope="row">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-18"
>
<i class="mdi mdi-ethereum"></i>
</span>
</div>
<span>ETH</span>
</div>
</th>
<td>
<div class="text-muted">$ 4235.78</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.0814</h5>
<div class="text-muted">$3256.29</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.0253</h5>
<div class="text-muted">$675.04</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.0921</h5>
<div class="text-muted">$4536.24</div>
</td>
<td>
<a href="javascript: void(0);" class="btn btn-primary btn-sm w-xs">View</a>
</td>
</tr>
<tr>
<th scope="row">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-info text-info font-size-18"
>
<i class="mdi mdi-litecoin"></i>
</span>
</div>
<span>LTC</span>
</div>
</th>
<td>
<div class="text-muted">$ 3726.06</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.0682</h5>
<div class="text-muted">$2936.14</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.0234</h5>
<div class="text-muted">$523.17</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.0823</h5>
<div class="text-muted">$3254.23</div>
</td>
<td>
<a href="javascript: void(0);" class="btn btn-primary btn-sm w-xs">View</a>
</td>
</tr>
<tr>
<th scope="row">
<div class="d-flex align-items-center">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-warning text-warning font-size-18"
>
<i class="mdi mdi-bitcoin"></i>
</span>
</div>
<span>BTC</span>
</div>
</th>
<td>
<div class="text-muted">$ 7525.47</div>
</td>
<td>
<h5 class="font-size-14 mb-1">1.2601</h5>
<div class="text-muted">$6225.74</div>
</td>
<td>
<h5 class="font-size-14 mb-1">0.1512</h5>
<div class="text-muted">$742.32</div>
</td>
<td>
<h5 class="font-size-14 mb-1">4.2562</h5>
<div class="text-muted">$6425.42</div>
</td>
<td>
<a href="javascript: void(0);" class="btn btn-primary btn-sm w-xs">View</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,116 +0,0 @@
const ordersData = [
{
status: 'Completed',
date: '03 Mar, 2020',
type: 'Buy',
coin: 'Bitcoin',
value: '1.00952 BTC',
usd: '$ 9067.62'
},
{
status: 'Completed',
date: '04 Mar, 2020',
type: 'Buy',
coin: 'Litecoin',
value: '0.00214 LTC',
usd: '$ 9067.62'
},
{
status: 'Pending',
date: '05 Mar, 2020',
type: 'Sell',
coin: 'Bitcoin',
value: '1.00952 BTC',
usd: '$ 9067.62'
},
{
status: 'Completed',
date: '03 Mar, 2020',
type: 'Sell',
coin: 'Ethereum',
value: '0.00413 ETH',
usd: '$ 2123.01'
},
{
status: 'Completed',
date: '08 Mar, 2020',
type: 'Buy',
coin: 'Litecoin',
value: '1.00124 LTC',
usd: '$ 1802.62'
},
{
status: 'Pending',
date: '06 Mar, 2020',
type: 'Sell',
coin: 'Ethereum',
value: '0.00413 ETH',
usd: '$ 2123.01'
},
{
status: 'Failed',
date: '05 Mar, 2020',
type: 'Buy',
coin: 'Bitcoin',
value: '1.00952 BTC',
usd: '$ 9067.62'
},
{
status: 'Completed',
date: '03 Mar, 2020',
type: 'Buy',
coin: 'Ethereum',
value: '0.00413 ETH',
usd: '$ 2123.01'
},
{
status: 'Pending',
date: '10 Mar, 2020',
type: 'Buy',
coin: 'Bitcoin',
value: '1.00952 BTC',
usd: '$ 9067.62'
},
{
status: 'Pending',
date: '18 Mar, 2020',
type: 'Buy',
coin: 'Litecoin',
value: '0.00224 LTC',
usd: '$ 1773.01'
},
{
status: 'Completed',
date: '03 Mar, 2020',
type: 'Buy',
coin: 'Bitcoin',
value: '1.00952 BTC',
usd: '$ 9423.73'
},
{
status: 'Pending',
date: '15 Mar, 2020',
type: 'Sell',
coin: 'Ethereum',
value: '0.00413 ETH',
usd: '$ 2123.01'
},
{
status: 'Completed',
date: '03 Mar, 2020',
type: 'Sell',
coin: 'Bitcoin',
value: '1.00952 BTC',
usd: '$ 9067.62'
},
{
status: 'Failed',
date: '01 Mar, 2020',
type: 'Sell',
coin: 'Litecoin',
value: '1.00217 LTC',
usd: '$ 9067.62'
}
]
export { ordersData };

View File

@ -1,234 +0,0 @@
<script>
import { ref } from "vue";
import Datepicker from "vue3-datepicker";
import Layout from "../../../layouts/main";
import appConfig from "@/app.config";
import PageHeader from "@/components/page-header";
import { ordersData } from "./data";
/**
* Orders component
*/
export default {
page: {
title: "Orders",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
components: {
Datepicker,
Layout,
PageHeader,
},
data() {
return {
ordersData: ordersData,
title: "Orders",
items: [
{
text: "Crypto",
href: "/",
},
{
text: "Orders",
active: true,
},
],
totalRows: 1,
currentPage: 1,
perPage: 10,
pageOptions: [10, 25, 50, 100],
filter: null,
filterOn: [],
sortBy: "value",
sortDesc: false,
fields: [
{
key: "date",
sortable: true,
},
{
key: "type",
sortable: true,
},
{
key: "coin",
sortable: true,
},
{
key: "value",
sortable: true,
},
{
key: "usd",
sortable: true,
},
{
key: "status",
sortable: true,
},
],
coinvalue: "",
statusValue: "",
typeValue: null,
datepickervalue: ref(new Date()),
};
},
computed: {
/**
* Total no. of records
*/
rows() {
return this.ordersData.length;
},
},
mounted() {
// Set the initial number of items
this.totalRows = this.items.length;
},
methods: {
/**
* Search the table data with search input
*/
onFiltered(filteredItems) {
// Trigger pagination to update the number of buttons/pages due to filtering
this.totalRows = filteredItems.length;
this.currentPage = 1;
},
},
};
</script>
<template lang="en">
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-3">Orders</h4>
<b-tabs content-class="p-3" nav-class="nav-tabs-custom">
<b-tab title="All Orders" active>
<form>
<div class="row">
<div class="col-xl col-sm-6">
<div class="form-group mt-3 mb-0">
<label>Date :</label>
<Datepicker v-model="datepickervalue" class="form-control" :first-day-of-week="1" lang="en" confirm></Datepicker>
</div>
</div>
<div class="col-xl col-sm-6">
<div class="form-group mt-3 mb-0">
<label>Coin</label>
<select class="form-control select2-search-disable">
<option value="BTC" selected>Bitcoin</option>
<option value="ETH">Ethereum</option>
<option value="LTC">litecoin</option>
</select>
</div>
</div>
<div class="col-xl col-sm-6">
<div class="form-group mt-3 mb-0">
<label>Type</label>
<select class="form-control select2-search-disable">
<option value="BU" selected>Buy</option>
<option value="SE">Sell</option>
</select>
</div>
</div>
<div class="col-xl col-sm-6">
<div class="form-group mt-3 mb-0">
<label>Status</label>
<select class="form-control select2-search-disable">
<option value="CO" selected>Completed</option>
<option value="PE">Pending</option>
</select>
</div>
</div>
<div class="col-xl col-sm-6 align-self-end">
<div class="mt-3">
<button type="button" class="btn btn-primary w-md">
Add Order
</button>
</div>
</div>
</div>
</form>
<div class="row mt-5">
<div class="col-sm-12 col-md-6">
<div id="tickets-table_length" class="dataTables_length">
<label class="d-inline-flex align-items-center fw-normal">
Show&nbsp;
<b-form-select v-model="perPage" size="sm" class="form-select form-select-sm" :options="pageOptions"></b-form-select>&nbsp;entries
</label>
</div>
</div>
<!-- Search -->
<div class="col-sm-12 col-md-6">
<div id="tickets-table_filter" class="dataTables_filter text-end">
<label class="d-inline-flex align-items-center fw-normal">
Search:
<b-form-input v-model="filter" type="search" class="form-control form-control-sm ms-2"></b-form-input>
</label>
</div>
</div>
<!-- End search -->
</div>
<!-- Table -->
<div class="table-responsive mt-3 mb-0">
<b-table :items="ordersData" :fields="fields" responsive="sm" :per-page="perPage" :current-page="currentPage" :sort-by.sync="sortBy" :sort-desc.sync="sortDesc" :filter="filter" :filter-included-fields="filterOn" @filtered="onFiltered"></b-table>
</div>
<div class="row">
<div class="col">
<div class="dataTables_paginate paging_simple_numbers float-end">
<ul class="pagination pagination-rounded mb-0">
<!-- pagination -->
<b-pagination v-model="currentPage" :total-rows="rows" :per-page="perPage"></b-pagination>
</ul>
</div>
</div>
</div>
</b-tab>
<b-tab title="Processing">
<div class="row mt-3">
<div class="col-sm-12 col-md-6">
<div id="tickets-table_length" class="dataTables_length">
<label class="d-inline-flex align-items-center fw-normal">
Show&nbsp;
<b-form-select v-model="perPage" size="sm" :options="pageOptions" class="form-select form-select-sm"></b-form-select>&nbsp;entries
</label>
</div>
</div>
<!-- Search -->
<div class="col-sm-12 col-md-6">
<div id="tickets-table_filter" class="dataTables_filter text-md-end">
<label class="d-inline-flex align-items-center fw-normal">
Search:
<b-form-input v-model="filter" type="search" class="form-control form-control-sm ms-2"></b-form-input>
</label>
</div>
</div>
<!-- End search -->
</div>
<div class="table-responsive mt-3 mb-0">
<b-table :items="ordersData" :fields="fields" responsive="sm" :per-page="perPage" :current-page="currentPage" :sort-by.sync="sortBy" :sort-desc.sync="sortDesc" :filter="filter" :filter-included-fields="filterOn" @filtered="onFiltered"></b-table>
</div>
</b-tab>
</b-tabs>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,158 +0,0 @@
const OveviewChart = {
series: [{
type: 'area',
name: 'BTC',
data: [87, 57, 74, 99, 75, 38, 62, 47, 82, 56, 45, 47]
}, {
type: 'area',
name: 'ETH',
data: [28, 41, 52, 42, 13, 18, 29, 18, 36, 51, 55, 35]
}, {
type: 'line',
name: 'LTC',
data: [45, 52, 38, 24, 33, 65, 45, 75, 54, 18, 28, 10]
}],
chartOptions: {
chart: {
height: 240,
type: 'line',
toolbar: {
show: false,
}
},
dataLabels: {
enabled: false
},
stroke: {
curve: 'smooth',
width: 2,
dashArray: [0, 0, 3]
},
fill: {
type: 'solid',
opacity: [0.15, 0.05, 1],
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
},
colors: ['#f1b44c', '#3452e1', '#50a5f1'],
}
};
const activitiesData = [
{
id: '#SK3215',
date: '03 Mar, 2020',
type: 'Buy',
currency: 'Bitcoin',
amount: '1.00952 BTC',
usd: '$ 9067.62'
},
{
id: '#SK3216',
date: '04 Mar, 2020',
type: 'Buy',
currency: 'Litecoin',
amount: '0.00214 LTC',
usd: '$ 9067.62'
},
{
id: '#SK3217',
date: '05 Mar, 2020',
type: 'Sell',
currency: 'Bitcoin',
amount: '1.00952 BTC',
usd: '$ 9067.62'
},
{
id: '#SK3218',
date: '03 Mar, 2020',
type: 'Sell',
currency: 'Ethereum',
amount: '0.00413 ETH',
usd: '$ 2123.01'
},
{
id: '#SK3219',
date: '08 Mar, 2020',
type: 'Buy',
currency: 'Litecoin',
amount: '1.00124 LTC',
usd: '$ 1802.62'
},
{
id: '#SK3220',
date: '06 Mar, 2020',
type: 'Sell',
currency: 'Ethereum',
amount: '0.00413 ETH',
usd: '$ 2123.01'
},
{
id: '#SK3221',
date: '05 Mar, 2020',
type: 'Buy',
currency: 'Bitcoin',
amount: '1.00952 BTC',
usd: '$ 9067.62'
},
{
id: '#SK32122',
date: '03 Mar, 2020',
type: 'Buy',
currency: 'Ethereum',
amount: '0.00413 ETH',
usd: '$ 2123.01'
},
{
id: '#SK3223',
date: '10 Mar, 2020',
type: 'Buy',
currency: 'Bitcoin',
amount: '1.00952 BTC',
usd: '$ 9067.62'
},
{
id: '#SK3224',
date: '18 Mar, 2020',
type: 'Buy',
currency: 'Litecoin',
amount: '0.00224 LTC',
usd: '$ 1773.01'
},
{
id: '#SK3225',
date: '03 Mar, 2020',
type: 'Buy',
currency: 'Bitcoin',
amount: '1.00952 BTC',
usd: '$ 9423.73'
},
{
id: '#SK3226',
date: '15 Mar, 2020',
type: 'Sell',
currency: 'Ethereum',
amount: '0.00413 ETH',
usd: '$ 2123.01'
},
{
id: '#SK3227',
date: '03 Mar, 2020',
type: 'Sell',
currency: 'Bitcoin',
amount: '1.00952 BTC',
usd: '$ 9067.62'
},
{
id: '#SK3228',
date: '01 Mar, 2020',
type: 'Sell',
currency: 'Litecoin',
amount: '1.00217 LTC',
usd: '$ 9067.62'
},
]
export { OveviewChart, activitiesData };

View File

@ -1,381 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import appConfig from "@/app.config";
import PageHeader from "@/components/page-header";
import { OveviewChart, activitiesData } from "./data";
/**
* Wallets component
*/
export default {
page: {
title: "Wallet",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
components: {
Layout,
PageHeader,
},
data() {
return {
OveviewChart: OveviewChart,
activitiesData: activitiesData,
title: "Wallet",
items: [
{
text: "Crypto",
href: "/",
},
{
text: "Wallet",
active: true,
},
],
totalRows: 1,
currentPage: 1,
perPage: 10,
pageOptions: [
{ text: '10', value: '10' },
{ text: '25', value: '25' },
{ text: '50', value: '50' },
{ text: '100', value: '100' }
],
filter: null,
filterOn: [],
sortBy: "id",
sortDesc: false,
fields: [
{
key: "id",
label: "ID No",
sortable: true,
},
{
key: "date",
sortable: true,
},
{
key: "type",
sortable: true,
},
{
key: "currency",
sortable: true,
},
{
key: "amount",
sortable: true,
},
{
key: "usd",
label: "Amount in USD",
sortable: true,
},
],
};
},
computed: {
/**
* Total no. of records
*/
rows() {
return this.activitiesData.length;
},
},
mounted() {
// Set the initial number of items
this.totalRows = this.items.length;
},
methods: {
/**
* Search the table data with search input
*/
onFiltered(filteredItems) {
// Trigger pagination to update the number of buttons/pages due to filtering
this.totalRows = filteredItems.length;
this.currentPage = 1;
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-4">
<div class="card">
<div class="card-body">
<div class="d-flex align-items-start">
<div class="flex-shrink-0 me-4">
<i class="mdi mdi-account-circle text-primary h1"></i>
</div>
<div class="flex-grow-1">
<div class="text-muted">
<h5>Henry Wells</h5>
<p class="mb-1">henrywells@abc.com</p>
<p class="mb-0">Id no: #SK0234</p>
</div>
</div>
<b-dropdown
variant="white"
toggle-class="text-muted p-0"
toggle-tag="div"
>
<template v-slot:button-content>
<i class="mdi mdi-dots-horizontal font-size-18"></i>
</template>
<b-dropdown-item>Action</b-dropdown-item>
<b-dropdown-item>Another action</b-dropdown-item>
<b-dropdown-item>Something else here</b-dropdown-item>
</b-dropdown>
</div>
</div>
<div class="card-body border-top">
<div class="row">
<div class="col-sm-6">
<div>
<p class="text-muted mb-2">Available Balance</p>
<h5>$ 9148.23</h5>
</div>
</div>
<div class="col-sm-6">
<div class="text-sm-end mt-4 mt-sm-0">
<p class="text-muted mb-2">Since last month</p>
<h5>
+ $ 248.35
<span class="badge bg-success ms-1 align-bottom"
>+ 1.3 %</span
>
</h5>
</div>
</div>
</div>
</div>
<div class="card-body border-top">
<p class="text-muted mb-4">In this month</p>
<div class="text-center">
<div class="row">
<div class="col-sm-4">
<div>
<div class="font-size-24 text-primary mb-2">
<i class="bx bx-send"></i>
</div>
<p class="text-muted mb-2">Send</p>
<h5>$ 654.42</h5>
<div class="mt-3">
<a href="#" class="btn btn-primary btn-sm w-md">Send</a>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="mt-4 mt-sm-0">
<div class="font-size-24 text-primary mb-2">
<i class="bx bx-import"></i>
</div>
<p class="text-muted mb-2">receive</p>
<h5>$ 1054.32</h5>
<div class="mt-3">
<a href="#" class="btn btn-primary btn-sm w-md"
>Receive</a
>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="mt-4 mt-sm-0">
<div class="font-size-24 text-primary mb-2">
<i class="bx bx-wallet"></i>
</div>
<p class="text-muted mb-2">Withdraw</p>
<h5>$ 824.34</h5>
<div class="mt-3">
<a href="#" class="btn btn-primary btn-sm w-md"
>Withdraw</a
>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-8">
<div class="row">
<div class="col-sm-4">
<div class="card mini-stats-wid">
<div class="card-body">
<div class="d-flex">
<div class="me-3 align-self-center">
<i class="mdi mdi-bitcoin h2 text-warning mb-0"></i>
</div>
<div class="flex-grow-1">
<p class="text-muted mb-2">Bitcoin Wallet</p>
<h5 class="mb-0">
1.02356 BTC
<span class="font-size-14 text-muted"> = $ 9148.00 </span>
</h5>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="card mini-stats-wid">
<div class="card-body">
<div class="d-flex">
<div class="me-3 align-self-center">
<i class="mdi mdi-ethereum h2 text-primary mb-0"></i>
</div>
<div class="flex-grow-1">
<p class="text-muted mb-2">Ethereum Wallet</p>
<h5 class="mb-0">
0.04121 ETH
<span class="font-size-14 text-muted"> = $ 8235.00 </span>
</h5>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="card mini-stats-wid">
<div class="card-body">
<div class="d-flex">
<div class="me-3 align-self-center">
<i class="mdi mdi-litecoin h2 text-info mb-0"></i>
</div>
<div class="flex-grow-1">
<p class="text-muted mb-2">litecoin Wallet</p>
<h5 class="mb-0">
0.00356 BTC
<span class="font-size-14 text-muted"> = $ 4721.00 </span>
</h5>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="card">
<div class="card-body">
<h4 class="card-title mb-3">Overview</h4>
<div>
<apexchart
class="apex-charts"
height="228"
type="line"
dir="ltr"
:series="OveviewChart.series"
:options="OveviewChart.chartOptions"
></apexchart>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Activities</h4>
<b-tabs content-class="mt-3" nav-class="nav-tabs-custom">
<b-tab title="All" active>
<div class="row mt-4">
<div class="col-sm-12 col-md-6">
<div id="tickets-table_length" class="dataTables_length">
<label class="d-inline-flex align-items-center fw-normal">
Show&nbsp;
<select
v-model="perPage"
size="sm"
class="form-control form-select form-select-sm"
>
<option v-for="option in pageOptions" :key="option.value" :value="option.value">
{{ option.text }}
</option>
</select
>
&nbsp;entries
</label>
</div>
</div>
<!-- Search -->
<div class="col-sm-12 col-md-6">
<div
id="tickets-table_filter"
class="dataTables_filter text-md-end"
>
<label class="d-inline-flex align-items-center">
Search:
<b-form-input
v-model="filter"
type="search"
class="form-control form-control-sm ms-2"
></b-form-input>
</label>
</div>
</div>
<!-- End search -->
</div>
<!-- Table -->
<div class="table-responsive table-hover mb-0">
<b-table
:items="activitiesData"
:fields="fields"
responsive="sm"
:per-page="perPage"
:current-page="currentPage"
:v-model:sort-by="sortBy"
:v-model:sort-desc="sortDesc"
:filter="filter"
:filter-included-fields="filterOn"
@filtered="onFiltered"
></b-table>
</div>
<div class="row">
<div class="col">
<div
class="dataTables_paginate paging_simple_numbers float-end"
>
<ul class="pagination pagination-rounded mb-0">
<!-- pagination -->
<b-pagination
v-model="currentPage"
:total-rows="rows"
:per-page="perPage"
></b-pagination>
</ul>
</div>
</div>
</div>
</b-tab>
<b-tab title="Buy" disabled> </b-tab>
<b-tab title="Sell" disabled> </b-tab>
</b-tabs>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,344 +0,0 @@
<script>
import axios from "axios";
import DropZone from "@/components/widgets/dropZone";
import { ref } from "vue";
import Multiselect from "@vueform/multiselect";
import { required, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Add-product component
*/
export default {
page: {
title: "Add Product",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
setup() {
let dropzoneFile = ref("");
const drop = (e) => {
dropzoneFile.value = e.dataTransfer.files[0];
};
const selectedFile = () => {
dropzoneFile.value = document.querySelector(".dropzoneFile").files[0];
};
return { dropzoneFile, drop, selectedFile, v$: useVuelidate() };
},
components: {
DropZone,
Multiselect,
Layout,
PageHeader,
},
data() {
return {
title: "Add Product",
items: [
{
text: "Ecommerce",
href: "/",
},
{
text: "Add Product",
active: true,
},
],
value: null,
value1: null,
product: {
name: "",
manufacture_name: "",
manufacture_brand: "",
price: null,
},
formData: new FormData(),
submitted: false,
options: [
"Alaska",
"Hawaii",
"California",
"Nevada",
"Oregon",
"Washington",
"Arizona",
"Colorado",
"Idaho",
"Montana",
"Nebraska",
"New Mexico",
"North Dakota",
"Utah",
"Wyoming",
"Alabama",
"Arkansas",
"Illinois",
"Iowa",
],
image: "",
file: "",
};
},
validations: {
product: {
name: {
required: helpers.withMessage("Name is required", required),
},
manufacture_name: {
required: helpers.withMessage("manufacture name is required", required),
},
manufacture_brand: {
required: helpers.withMessage(
"Manufacture brand is required",
required
),
},
price: {
required: helpers.withMessage("Price is required", required),
},
},
},
methods: {
onAccept(file) {
this.image = file.name;
this.file = file;
},
productAdd() {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
let formData = new FormData();
formData.append("name", this.product.name);
formData.append("manufacture_name", this.product.manufacture_name);
formData.append("manufacture_brand", this.product.manufacture_brand);
formData.append("price", this.product.price);
formData.append("image", this.file, this.image);
//** Add product in api using post method *//
axios
.post(`http://localhost:8000/api/products`, formData)
.then((res) => {
return res;
})
.catch((err) => {
return err;
});
}
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Basic Information</h4>
<p class="card-title-desc">Fill all information below</p>
<form @submit.prevent="productAdd">
<div class="row">
<div class="col-sm-6">
<div class="mb-3">
<label for="productname">Product Name</label>
<input
id="productname"
v-model="product.name"
name="name"
type="text"
class="form-control"
:class="{
'is-invalid': submitted && v$.product.name.$error,
}"
/>
<div
v-if="submitted && v$.product.name.$error"
class="invalid-feedback"
>
<span v-if="v$.product.name.required.$message">{{
v$.product.name.required.$message
}}</span>
</div>
</div>
<div class="mb-3">
<label for="manufacturername">Manufacturer Name</label>
<input
id="manufacturername"
v-model="product.manufacture_name"
name="manufacture_name"
type="text"
class="form-control"
:class="{
'is-invalid':
submitted && v$.product.manufacture_name.$error,
}"
/>
<div
v-if="submitted && v$.product.manufacture_name.$error"
class="invalid-feedback"
>
<span
v-if="v$.product.manufacture_name.required.$message"
>{{
v$.product.manufacture_name.required.$message
}}</span
>
</div>
</div>
<div class="mb-3">
<label for="manufacturerbrand">Manufacturer Brand</label>
<input
id="manufacturerbrand"
v-model="product.manufacture_brand"
name="manufacture_brand"
type="text"
class="form-control"
:class="{
'is-invalid':
submitted && v$.product.manufacture_brand.$error,
}"
/>
<div
v-if="submitted && v$.product.manufacture_brand.$error"
class="invalid-feedback"
>
<span
v-if="v$.product.manufacture_brand.required.$message"
>{{
v$.product.manufacture_brand.required.$message
}}</span
>
</div>
</div>
<div class="mb-3">
<label for="price">Price</label>
<input
id="price"
name="price"
v-model="product.price"
:class="{
'is-invalid': submitted && v$.product.price.$error,
}"
type="text"
class="form-control"
/>
<div
v-if="submitted && v$.product.price.$error"
class="invalid-feedback"
>
<span v-if="v$.product.price.required.$message">{{
v$.product.price.required.$message
}}</span>
</div>
</div>
<label>Product Images</label>
<DropZone @drop.prevent="drop" @change="selectedFile" />
<span class="file-info">File: {{ dropzoneFile.name }}</span>
</div>
<div class="col-sm-6">
<div class="mb-3">
<label class="control-label">Category</label>
<multiselect
v-model="value"
:options="options"
></multiselect>
</div>
<div class="mb-3">
<label class="control-label">Features</label>
<multiselect
v-model="value1"
:options="options"
:multiple="true"
></multiselect>
</div>
<div class="mb-3">
<label for="productdesc">Product Description</label>
<textarea
id="productdesc"
class="form-control"
rows="5"
></textarea>
</div>
</div>
</div>
<div class="mt-2">
<button type="submit" class="btn btn-primary me-1">
Save Changes
</button>
<button type="submit" class="btn btn-secondary">Cancel</button>
</div>
</form>
</div>
</div>
<div class="card">
<div class="card-body">
<h4 class="card-title">Meta Data</h4>
<p class="card-title-desc">Fill all information below</p>
<form>
<div class="row">
<div class="col-sm-6">
<div class="mb-3">
<label for="metatitle">Meta title</label>
<input
id="metatitle"
name="productname"
type="text"
class="form-control"
/>
</div>
<div class="mb-3">
<label for="metakeywords">Meta Keywords</label>
<input
id="metakeywords"
name="manufacturername"
type="text"
class="form-control"
/>
</div>
</div>
<div class="col-sm-6">
<div class="mb-3">
<label for="metadescription">Meta Description</label>
<textarea
id="metadescription"
class="form-control"
rows="5"
></textarea>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary me-1">
Save Changes
</button>
<button type="submit" class="btn btn-secondary">Cancel</button>
</form>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,424 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Product-cart component
*/
export default {
page: {
title: "Cart",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Cart",
items: [
{
text: "Ecommerce",
href: "/",
},
{
text: "Cart",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-8">
<div class="card">
<div class="card-body">
<div class="table-responsive">
<table class="table align-middle mb-0 table-nowrap">
<thead class="table-light">
<tr>
<th>Product</th>
<th>Product Desc</th>
<th>Price</th>
<th>Quantity</th>
<th colspan="2">Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<img
src="@/assets/images/product/img-1.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</td>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Half sleeve T-shirt</router-link
>
</h5>
<p class="mb-0">
Color :
<span class="fw-medium">Maroon</span>
</p>
</td>
<td>$ 450</td>
<td>
<input
type="number"
value="2"
name="demo_vertical"
class="form-control"
style="width: 120px"
/>
</td>
<td>$ 900</td>
<td>
<a
href="javascript:void(0);"
class="action-icon text-danger"
>
<i class="mdi mdi-trash-can font-size-18"></i>
</a>
</td>
</tr>
<tr>
<td>
<img
src="@/assets/images/product/img-2.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</td>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Light blue T-shirt</router-link
>
</h5>
<p class="mb-0">
Color :
<span class="fw-medium">Light blue</span>
</p>
</td>
<td>$ 225</td>
<td>
<input
type="number"
value="1"
name="demo_vertical"
class="form-control"
style="width: 120px"
/>
</td>
<td>$ 225</td>
<td>
<a
href="javascript:void(0);"
class="action-icon text-danger"
>
<i class="mdi mdi-trash-can font-size-18"></i>
</a>
</td>
</tr>
<tr>
<td>
<img
src="@/assets/images/product/img-3.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</td>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Black Color T-shirt</router-link
>
</h5>
<p class="mb-0">
Color :
<span class="fw-medium">Black</span>
</p>
</td>
<td>$ 152</td>
<td>
<input
type="number"
value="2"
name="demo_vertical"
class="form-control"
style="width: 120px"
/>
</td>
<td>$ 304</td>
<td>
<a
href="javascript:void(0);"
class="action-icon text-danger"
>
<i class="mdi mdi-trash-can font-size-18"></i>
</a>
</td>
</tr>
<tr>
<td>
<img
src="@/assets/images/product/img-4.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</td>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Hoodie (Blue)</router-link
>
</h5>
<p class="mb-0">
Color :
<span class="fw-medium">Blue</span>
</p>
</td>
<td>$ 145</td>
<td>
<input
type="number"
value="2"
name="demo_vertical"
class="form-control"
style="width: 120px"
/>
</td>
<td>$ 290</td>
<td>
<a
href="javascript:void(0);"
class="action-icon text-danger"
>
<i class="mdi mdi-trash-can font-size-18"></i>
</a>
</td>
</tr>
<tr>
<td>
<img
src="@/assets/images/product/img-5.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</td>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Half sleeve T-Shirt</router-link
>
</h5>
<p class="mb-0">
Color :
<span class="fw-medium">Light orange</span>
</p>
</td>
<td>$ 138</td>
<td>
<input
type="number"
value="1"
name="demo_vertical"
class="form-control"
style="width: 120px"
/>
</td>
<td>$ 138</td>
<td>
<a
href="javascript:void(0);"
class="action-icon text-danger"
>
<i class="mdi mdi-trash-can font-size-18"></i>
</a>
</td>
</tr>
<tr>
<td>
<img
src="@/assets/images/product/img-6.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</td>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Green color T-shirt</router-link
>
</h5>
<p class="mb-0">
Color :
<span class="fw-medium">Green</span>
</p>
</td>
<td>$ 152</td>
<td>
<input
type="number"
value="2"
name="demo_vertical"
class="form-control"
style="width: 120px"
/>
</td>
<td>$ 304</td>
<td>
<a
href="javascript:void(0);"
class="action-icon text-danger"
>
<i class="mdi mdi-trash-can font-size-18"></i>
</a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="row mt-4">
<div class="col-sm-6">
<router-link
to="/ecommerce/product-detail/1"
class="btn btn-secondary"
>
<i class="mdi mdi-arrow-left me-1"></i> Continue Shopping
</router-link>
</div>
<!-- end col -->
<div class="col-sm-6">
<div class="text-sm-end mt-2 mt-sm-0">
<router-link to="/ecommerce/checkout" class="btn btn-success">
<i class="mdi mdi-cart-arrow-right me-1"></i> Checkout
</router-link>
</div>
</div>
<!-- end col -->
</div>
<!-- end row-->
</div>
</div>
</div>
<div class="col-xl-4">
<div class="card">
<div class="card-body">
<h5 class="card-title mb-4">Card Details</h5>
<div class="card bg-primary text-white visa-card mb-0">
<div class="card-body">
<div>
<i class="bx bxl-visa visa-pattern"></i>
<div class="float-end">
<i class="bx bxl-visa visa-logo display-3"></i>
</div>
<div>
<i class="bx bx-chip h1 text-warning"></i>
</div>
</div>
<div class="row mt-5">
<div class="col-4">
<p>
<i class="fas fa-star-of-life m-1"></i>
<i class="fas fa-star-of-life m-1"></i>
<i class="fas fa-star-of-life m-1"></i>
</p>
</div>
<div class="col-4">
<p>
<i class="fas fa-star-of-life m-1"></i>
<i class="fas fa-star-of-life m-1"></i>
<i class="fas fa-star-of-life m-1"></i>
</p>
</div>
<div class="col-4">
<p>
<i class="fas fa-star-of-life m-1"></i>
<i class="fas fa-star-of-life m-1"></i>
<i class="fas fa-star-of-life m-1"></i>
</p>
</div>
</div>
<div class="mt-5">
<h5 class="text-white float-end mb-0">12/22</h5>
<h5 class="text-white mb-0">Fredrick Taylor</h5>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<h4 class="card-title mb-3">Order Summary</h4>
<div class="table-responsive">
<table class="table mb-0">
<tbody>
<tr>
<td>Grand Total :</td>
<td>$ 1,857</td>
</tr>
<tr>
<td>Discount :</td>
<td>- $ 157</td>
</tr>
<tr>
<td>Shipping Charge :</td>
<td>$ 25</td>
</tr>
<tr>
<td>Estimated Tax :</td>
<td>$ 19.22</td>
</tr>
<tr>
<th>Total :</th>
<th>$ 1744.22</th>
</tr>
</tbody>
</table>
</div>
<!-- end table-responsive -->
</div>
</div>
<!-- end card -->
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,502 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import Multiselect from '@vueform/multiselect'
/**
* Product-checkout Component
*/
export default {
page: {
title: "Checkout",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Multiselect, Layout, PageHeader },
data() {
return {
title: "Checkout",
items: [
{
text: "Ecommerce",
href: "/",
},
{
text: "Checkout",
active: true,
},
],
stateValue: null,
countryValue: null,
stateOptions: [
"Alaska",
"Hawaii",
"California",
"Nevada",
"Oregon",
"Washington",
"Arizona",
"Colorado",
"Idaho",
"Montana",
"Nebraska",
"New Mexico",
"North Dakota",
"Utah",
"Wyoming",
"Alabama",
"Arkansas",
"Illinois",
"Iowa",
],
countryOptions: [
"Afghanistan",
"Albania",
"Algeria",
"American Samoa",
"Andorra",
"Angola",
"Anguilla",
"Antarctica",
"Argentina",
"Hawaii",
"California",
"Colombia",
"Congo",
"Dominica",
"Denmark",
"Nevada",
"Oregon",
"Washington",
"Ecuador",
"Idaho",
"Montana",
"Namibia",
"Nauru",
"Nepal",
"Netherlands",
"Nicaragua",
"New Caledonia",
"North Dakota",
"Tonga",
"Tunisia",
"Thailand",
"Turkey",
"Illinois",
"Tuvalu",
"Uganda",
"Uruguay",
"United Arab Emirates",
"United Kingdom",
"Venezuela",
"Zimbabwe",
"Uruguay",
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="checkout-tabs">
<b-tabs
pills
vertical
nav-class="p-0"
nav-wrapper-class="col-xl-2 col-sm-3"
content-class="w-100"
>
<b-tab active>
<template v-slot:title>
<i class="bx bxs-truck d-block check-nav-icon mt-4 mb-2"></i>
<p class="fw-bold mb-4">Shipping Info</p>
</template>
<b-card-text>
<div class="card">
<div class="card-body">
<h4 class="card-title">Shipping information</h4>
<p class="card-title-desc">Fill all information below</p>
<form>
<b-row class="mb-4">
<b-col md="2">
<label for="input-name">Name</label>
</b-col>
<b-col md="10">
<b-form-input
id="input-name"
placeholder="Enter your name"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-4">
<b-col md="2">
<label for="billing-email-address">Email Address</label>
</b-col>
<b-col md="10">
<b-form-input
id="billing-email-address"
placeholder="Enter your email"
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-4">
<b-col md="2">
<label for="billing-phone">Phone</label>
</b-col>
<b-col md="10">
<b-form-input
id="billing-phone"
placeholder="Enter your Phone no."
></b-form-input>
</b-col>
</b-row>
<b-row class="mb-4">
<b-col md="2">
<label for="billing-address">Address</label>
</b-col>
<b-col md="10">
<b-form-textarea
id="billing-address"
rows="3"
placeholder="Enter full address"
></b-form-textarea>
</b-col>
</b-row>
<div class="form-group row mb-4">
<label class="col-md-2 col-form-label">Country</label>
<div class="col-md-10">
<multiselect
v-model="countryValue"
:options="countryOptions"
></multiselect>
</div>
</div>
<div class="form-group row mb-4">
<label class="col-md-2 col-form-label">States</label>
<div class="col-md-10">
<multiselect
v-model="stateValue"
:options="stateOptions"
></multiselect>
</div>
</div>
<b-row class="mb-4">
<b-col md="2">
<label for="example-textarea">Order Notes:</label>
</b-col>
<b-col md="10">
<b-form-textarea
id="example-textarea"
rows="3"
placeholder="Write some note.."
></b-form-textarea>
</b-col>
</b-row>
</form>
</div>
</div>
<div class="row mt-4">
<div class="col-sm-6">
<router-link
to="/ecommerce/cart"
class="btn text-muted d-none d-sm-inline-block btn-link"
>
<i class="mdi mdi-arrow-left me-1"></i> Back to Shopping Cart
</router-link>
</div>
<!-- end col -->
<div class="col-sm-6">
<div class="text-end">
<router-link
to="/ecommerce/checkout"
class="btn btn-success"
>
<i class="mdi mdi-truck-fast me-1"></i> Proceed to Shipping
</router-link>
</div>
</div>
<!-- end col -->
</div>
</b-card-text>
</b-tab>
<b-tab>
<template v-slot:title>
<i class="bx bx-money d-block check-nav-icon mt-4 mb-2"></i>
<p class="fw-bold mb-4">Payment Info</p>
</template>
<b-card-text>
<div class="card">
<div class="card-body">
<div>
<h4 class="card-title">Payment information</h4>
<p class="card-title-desc">Fill all information below</p>
<div>
<div class="form-check form-check-inline font-size-16">
<input
class="form-check-input"
type="radio"
name="paymentoptionsRadio"
id="paymentoptionsRadio1"
checked=""
/>
<label
class="form-check-label font-size-13"
for="paymentoptionsRadio1"
><i
class="fab fa-cc-mastercard me-1 font-size-20 align-top"
></i>
Credit / Debit Card</label
>
</div>
<div class="form-check form-check-inline font-size-16">
<input
class="form-check-input"
type="radio"
name="paymentoptionsRadio"
id="paymentoptionsRadio2"
/>
<label
class="form-check-label font-size-13"
for="paymentoptionsRadio2"
><i
class="fab fa-cc-paypal me-1 font-size-20 align-top"
></i>
Paypal</label
>
</div>
<div class="form-check form-check-inline font-size-16">
<input
class="form-check-input"
type="radio"
name="paymentoptionsRadio"
id="paymentoptionsRadio3"
/>
<label
class="form-check-label font-size-13"
for="paymentoptionsRadio3"
><i
class="far fa-money-bill-alt me-1 font-size-20 align-top"
></i>
Cash on Delivery</label
>
</div>
</div>
<h5 class="mt-5 mb-3 font-size-15">For card Payment</h5>
<div class="p-4 border">
<form>
<b-form-group
id="input-group-2"
label="Card Number"
label-for="input-card"
class="mb-0"
>
<b-form-input
id="input-card"
placeholder="0000 0000 0000 0000"
></b-form-input>
</b-form-group>
<b-row class="mt-4">
<b-col lg="6">
<b-form-group
id="input-group-2"
label="Name on card"
label-for="input-number"
class="mb-0"
>
<b-form-input
id="input-number"
placeholder="Name on Card"
></b-form-input>
</b-form-group>
</b-col>
<b-col lg="3">
<b-form-group
id="input-group-2"
label="Expiry date"
label-for="input-date"
class="mb-0"
>
<b-form-input
id="input-date"
placeholder="MM/YY"
></b-form-input>
</b-form-group>
</b-col>
<b-col lg="3">
<b-form-group
id="input-group-2"
label="CVV Code"
label-for="cvvcodeInput"
class="mb-0"
>
<b-form-input
id="cvvcodeInput"
placeholder="Enter CVV Code"
></b-form-input>
</b-form-group>
</b-col>
</b-row>
</form>
</div>
</div>
</div>
</div>
<div class="row mt-4">
<div class="col-sm-6">
<router-link
to="/ecommerce/cart"
class="btn text-muted d-none d-sm-inline-block btn-link"
>
<i class="mdi mdi-arrow-left me-1"></i> Back to Shopping Cart
</router-link>
</div>
<!-- end col -->
<div class="col-sm-6">
<div class="text-end">
<router-link
to="/ecommerce/checkout"
class="btn btn-success"
>
<i class="mdi mdi-truck-fast me-1"></i> Proceed to Shipping
</router-link>
</div>
</div>
<!-- end col -->
</div>
</b-card-text>
</b-tab>
<b-tab>
<template v-slot:title>
<i class="bx bx-badge-check d-block check-nav-icon mt-4 mb-2"></i>
<p class="fw-bold mb-4">Confirmation</p>
</template>
<b-card-text>
<div class="card">
<div class="card-body">
<div class="card shadow-none border mb-0">
<div class="card-body">
<h4 class="card-title mb-4">Order Summary</h4>
<div class="table-responsive">
<table class="table align-middle mb-0 table-nowrap">
<thead class="table-light">
<tr>
<th scope="col">Product</th>
<th scope="col">Product Desc</th>
<th scope="col">Price</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<img
src="@/assets/images/product/img-1.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</th>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Half sleeve T-shirt (64GB)</router-link
>
</h5>
<p class="text-muted mb-0">$ 450 x 1</p>
</td>
<td>$ 450</td>
</tr>
<tr>
<th scope="row">
<img
src="@/assets/images/product/img-7.png"
alt="product-img"
title="product-img"
class="avatar-md"
/>
</th>
<td>
<h5 class="font-size-14 text-truncate">
<router-link
to="/ecommerce/product-detail"
class="text-dark"
>Wirless Headphone</router-link
>
</h5>
<p class="text-muted mb-0">$ 225 x 1</p>
</td>
<td>$ 225</td>
</tr>
<tr>
<td colspan="2">
<h6 class="m-0 text-end">Sub Total:</h6>
</td>
<td>$ 675</td>
</tr>
<tr>
<td colspan="3">
<div class="bg-soft bg-primary p-3 rounded">
<h5 class="font-size-14 text-primary mb-0">
<i class="fas fa-shipping-fast me-2"></i>
Shipping
<span class="float-end">Free</span>
</h5>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<h6 class="m-0 text-end">Total:</h6>
</td>
<td>$ 675</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="row mt-4">
<div class="col-sm-6">
<router-link
to="/ecommerce/cart"
class="btn text-muted d-none d-sm-inline-block btn-link"
>
<i class="mdi mdi-arrow-left me-1"></i> Back to Shopping Cart
</router-link>
</div>
<!-- end col -->
<div class="col-sm-6">
<div class="text-end">
<router-link
to="/ecommerce/checkout"
class="btn btn-success"
>
<i class="mdi mdi-truck-fast me-1"></i> Proceed to Shipping
</router-link>
</div>
</div>
<!-- end col -->
</div>
</b-card-text>
</b-tab>
</b-tabs>
</div>
</Layout>
</template>

View File

@ -1,401 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import { required, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
import { customersData } from "./data-customers";
import appConfig from "@/app.config";
/**
* Customers component
*/
export default {
page: {
title: "Customers",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
customersData: customersData,
title: "Customers",
items: [
{
text: "Ecommerce",
href: "/",
},
{
text: "Customers",
active: true,
},
],
showModal: false,
submitted: false,
customers: {
username: "",
phone: "",
email: "",
address: "",
balance: "",
},
};
},
setup() {
return { v$: useVuelidate() };
},
validations: {
customers: {
username: {
required: helpers.withMessage("Username is required", required),
},
phone: {
required: helpers.withMessage("Phone is required", required),
},
email: { required: helpers.withMessage("Email is required", required) },
address: {
required: helpers.withMessage("Address is required", required),
},
balance: {
required: helpers.withMessage("Balance is required", required),
},
},
},
methods: {
/**
* Modal form submit
*/
// eslint-disable-next-line no-unused-vars
handleSubmit(e) {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
const currentDate = new Date();
this.customersData.push({
username: this.customers.username,
phone: this.customers.phone,
email: this.customers.email,
address: this.customers.address,
balance: this.customers.balance,
rating: "4.3",
date: currentDate.getHours() + ":" + currentDate.getMinutes(),
});
this.showModal = false;
this.customers = {};
}
this.submitted = false;
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row mb-2">
<div class="col-sm-4">
<div class="search-box me-2 mb-2 d-inline-block">
<div class="position-relative">
<input
type="text"
class="form-control"
placeholder="Search..."
/>
<i class="bx bx-search-alt search-icon"></i>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="text-sm-end">
<button
type="button"
class="btn btn-success btn-rounded mb-2 me-2"
@click="showModal = true"
>
<i class="mdi mdi-plus me-1"></i> New Customers
</button>
<b-modal
v-model="showModal"
title="Add New Customer"
title-class="text-black font-18"
body-class="p-3"
hide-footer
>
<form @submit.prevent="handleSubmit">
<div class="row">
<div class="col-12">
<div class="mb-3">
<label for="name">Event Name</label>
<input
id="name"
v-model="customers.username"
type="text"
class="form-control"
placeholder="Insert username"
:class="{
'is-invalid':
submitted && v$.customers.username.$error,
}"
/>
<div
v-if="submitted && v$.customers.username.$error"
class="invalid-feedback"
>
<span
v-if="v$.customers.username.required.$message"
>{{
v$.customers.username.required.$message
}}</span
>
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label for="phone">Phone</label>
<input
id="phone"
v-model="customers.phone"
type="text"
class="form-control"
placeholder="Insert phone"
:class="{
'is-invalid':
submitted && v$.customers.phone.$error,
}"
/>
<div
v-if="submitted && v$.customers.phone.$error"
class="invalid-feedback"
>
<span
v-if="v$.customers.phone.required.$message"
>{{
v$.customers.phone.required.$message
}}</span
>
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label for="email">Email</label>
<input
id="email"
v-model="customers.email"
type="email"
class="form-control"
placeholder="Insert email"
:class="{
'is-invalid':
submitted && v$.customers.email.$error,
}"
/>
<div
v-if="submitted && v$.customers.email.$error"
class="invalid-feedback"
>
<span
v-if="v$.customers.email.required.$message"
>{{
v$.customers.email.required.$message
}}</span
>
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label for="address">Address</label>
<input
id="address"
v-model="customers.address"
type="text"
class="form-control"
placeholder="Insert address"
:class="{
'is-invalid':
submitted && v$.customers.address.$error,
}"
/>
<div
v-if="submitted && v$.customers.address.$error"
class="invalid-feedback"
>
<span
v-if="v$.customers.address.required.$message"
>{{
v$.customers.address.required.$message
}}</span
>
</div>
</div>
</div>
<div class="col-12">
<div class="mb-3">
<label for="balance">Balance</label>
<input
id="balance"
v-model="customers.balance"
type="text"
class="form-control"
placeholder="Insert balance"
:class="{
'is-invalid':
submitted && v$.customers.balance.$error,
}"
/>
<div
v-if="submitted && v$.customers.balance.$error"
class="invalid-feedback"
>
<span
v-if="v$.customers.balance.required.$message"
>{{
v$.customers.balance.required.$message
}}</span
>
</div>
</div>
</div>
</div>
<div class="text-end pt-5 mt-3">
<b-button variant="light" @click="showModal = false"
>Close</b-button
>
<b-button type="submit" variant="success" class="ms-1"
>Create event</b-button
>
</div>
</form>
</b-modal>
</div>
</div>
<!-- end col-->
</div>
<div class="table-responsive">
<table class="table table-centered table-nowrap align-middle">
<thead>
<tr>
<th>#</th>
<th>Username</th>
<th>Phone / Email</th>
<th>Address</th>
<th>Rating</th>
<th>Wallet Balance</th>
<th>Joining Date</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr v-for="customers in customersData" :key="customers.id">
<td>
<div class="form-check font-size-16">
<input
:id="`customCheck${customers.id}`"
type="checkbox"
class="form-check-input"
/>
<label
class="form-check-label"
:for="`customCheck${customers.id}`"
>&nbsp;</label
>
</div>
</td>
<td>{{ customers.username }}</td>
<td>
<p class="mb-1">{{ customers.phone }}</p>
<p class="mb-0">{{ customers.email }}</p>
</td>
<td>{{ customers.address }}</td>
<td>
<span class="badge bg-success font-size-12">
<i class="mdi mdi-star me-1"></i>
{{ customers.rating }}
</span>
</td>
<td>{{ customers.balance }}</td>
<td>{{ customers.date }}</td>
<td>
<b-dropdown
class="card-drop"
variant="white"
right
toggle-class="p-0"
menu-class="dropdown-menu-end"
>
<template v-slot:button-content>
<i class="mdi mdi-dots-horizontal font-size-18"></i>
</template>
<b-dropdown-item>
<i class="fas fa-pencil-alt text-success me-1"></i>
Edit
</b-dropdown-item>
<b-dropdown-item>
<i class="fas fa-trash-alt text-danger me-1"></i>
Delete
</b-dropdown-item>
</b-dropdown>
</td>
</tr>
</tbody>
</table>
</div>
<ul class="pagination pagination-rounded justify-content-end mb-2">
<li class="page-item disabled">
<a
class="page-link"
href="javascript: void(0);"
aria-label="Previous"
>
<i class="mdi mdi-chevron-left"></i>
</a>
</li>
<li class="page-item active">
<a class="page-link" href="javascript: void(0);">1</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">2</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">3</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">4</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">5</a>
</li>
<li class="page-item">
<a
class="page-link"
href="javascript: void(0);"
aria-label="Next"
>
<i class="mdi mdi-chevron-right"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,84 +0,0 @@
const customersData = [
{
id: 1,
username: 'Stephen Rash',
phone: '325-250-1106',
email: 'StephenRash@teleworm.us',
address: '2470 Grove Street Bethpage, NY 11714',
rating: '4.2',
balance: '$5,412',
date: '07 Oct, 2019'
},
{
id: 2,
username: 'Juan Mays',
phone: '443-523-4726',
email: 'JuanMays@armyspy.com',
address: '3755 Harron Drive Salisbury, MD 21875',
rating: '4.0',
balance: '$5,632',
date: '06 Oct, 2019'
},
{
id: 3,
username: 'Scott Henry',
phone: '704-629-9535',
email: 'ScottHenry@jourrapide.com',
address: '3632 Snyder Avenue Bessemer City, NC 28016',
rating: '4.4',
balance: '$7,523',
date: '06 Oct, 2019'
},
{
id: 4,
username: 'Cody Menendez',
phone: '701-832-5838',
email: 'CodyMenendez@armyspy.com',
address: '4401 Findley Avenue Minot, ND 58701',
rating: '4.1',
balance: '$6,325',
date: '05 Oct, 2019'
},
{
id: 5,
username: 'Jason Merino',
phone: '706-219-4095',
email: 'JasonMerino@dayrep.com',
address: '3159 Holly Street Cleveland, GA 30528',
rating: '3.8',
balance: '$4,523',
date: '04 Oct, 2019'
},
{
id: 6,
username: 'Kyle Aquino',
phone: '415-232-5443',
email: 'KyleAquino@teleworm.us',
address: '4861 Delaware Avenue San Francisco, CA 94143',
rating: '4.0',
balance: '$5,412',
date: '03 Oct, 2019'
},
{
id: 7,
username: 'David Gaul',
phone: '314-483-4679',
email: 'DavidGaul@teleworm.us',
address: '1207 Cottrill Lane Stlouis, MO 63101',
rating: '4.2',
balance: '$6,180',
date: '02 Oct, 2019'
},
{
id: 8,
username: 'John McCray',
phone: '253-661-7551',
email: 'JohnMcCray@armyspy.com',
address: '3309 Horizon Circle Tacoma, WA 98423',
rating: '4.1',
balance: '$5,2870',
date: '02 Oct, 2019'
}
];
export { customersData };

View File

@ -1,164 +0,0 @@
const clothsData = [
{
id: 1,
product: require('@/assets/images/product/img-1.png'),
discount: 10,
name: 'Half sleeve T-shirt',
oldprice: 450,
newprice: 405,
feature: ['Fit Type: Regular Fit', 'highest quality fabric', 'Suitable for all weather condition', 'Excellent Washing and Light Fastness'],
specification: [{
key: 'size',
value: 'M'
},
{
key: 'color',
value: 'Red'
}],
images: [require('@/assets/images/product/img-1.png'), require('@/assets/images/product/img-5.png'), require('@/assets/images/product/img-3.png'), require('@/assets/images/product/img-6.png')],
colorVariant: [{
key: 'Red',
value: require('@/assets/images/product/img-1.png')
},
{
key: 'Black',
value: require('@/assets/images/product/img-1.png')
}]
},
{
id: 2,
product: require('@/assets/images/product/img-2.png'),
name: 'Light blue T-shirt',
discount: 20,
oldprice: 225,
newprice: 175,
feature: ['Fit Type: Regular Fit', 'highest quality fabric', 'Suitable for all weather condition', 'Excellent Washing and Light Fastness'],
specification: [{
key: 'size',
value: 'M'
},
{
key: 'Color',
value: 'Light Blue'
}],
images: [require('@/assets/images/product/img-2.png'), require('@/assets/images/product/img-1.png'), require('@/assets/images/product/img-5.png'), require('@/assets/images/product/img-3.png')],
colorVariant: [{
key: 'Red',
value: require('@/assets/images/product/img-2.png')
},
{
key: 'Yellow',
value: require('@/assets/images/product/img-2.png')
},
{
key: 'Green',
value: require('@/assets/images/product/img-2.png')
}]
},
{
id: 3,
product: require('@/assets/images/product/img-3.png'),
discount: 14,
name: 'Black Color T-shirt',
oldprice: 177,
newprice: 152,
feature: ['Fit Type: Regular Fit', 'highest quality fabric', 'Suitable for all weather condition', 'Excellent Washing and Light Fastness'],
specification: [{
key: 'size',
value: 'M'
},
{
key: 'color',
value: 'Black'
}],
images: [require('@/assets/images/product/img-3.png'), require('@/assets/images/product/img-1.png'), require('@/assets/images/product/img-5.png'), require('@/assets/images/product/img-2.png')],
colorVariant: [{
key: 'Black',
value: require('@/assets/images/product/img-3.png')
},
{
key: 'Yellow',
value: require('@/assets/images/product/img-3.png')
}]
},
{
id: 4,
product: require('@/assets/images/product/img-4.png'),
name: 'Hoodie (Blue)',
discount: 5,
oldprice: 150,
newprice: 145,
feature: ['Fit Type: Regular Fit', 'highest quality fabric', 'Suitable for all weather condition', 'Excellent Washing and Light Fastness'],
specification: [{
key: 'size',
value: 'M'
},
{
key: 'color',
value: 'Blue'
}],
images: [require('@/assets/images/product/img-4.png'), require('@/assets/images/product/img-4.png'), require('@/assets/images/product/img-4.png'), require('@/assets/images/product/img-4.png')],
colorVariant: [{
key: 'Blue',
value: require('@/assets/images/product/img-4.png')
},
{
key: 'Pink',
value: require('@/assets/images/product/img-4.png')
}]
},
{
id: 5,
product: require('@/assets/images/product/img-5.png'),
discount: 14,
name: 'Half sleeve T-Shirt',
oldprice: 177,
newprice: 152,
feature: ['Fit Type: Regular Fit', 'highest quality fabric', 'Suitable for all weather condition', 'Excellent Washing and Light Fastness'],
specification: [{
key: 'size',
value: 'M'
},
{
key: 'color',
value: 'Pink'
}],
images: [require('@/assets/images/product/img-5.png'), require('@/assets/images/product/img-1.png'), require('@/assets/images/product/img-2.png'), require('@/assets/images/product/img-3.png')],
colorVariant: [{
key: 'Pink',
value: require('@/assets/images/product/img-5.png')
},
{
key: 'Yellow',
value: require('@/assets/images/product/img-5.png')
}]
},
{
id: 6,
product: require('@/assets/images/product/img-6.png'),
discount: 22,
name: 'Green color T-shirt',
oldprice: 240,
newprice: 225,
feature: ['Fit Type: Regular Fit', 'highest quality fabric', 'Suitable for all weather condition', 'Excellent Washing and Light Fastness'],
specification: [{
key: 'size',
value: 'M'
},
{
key: 'color',
value: 'Green'
}],
images: [require('@/assets/images/product/img-6.png'), require('@/assets/images/product/img-3.png'), require('@/assets/images/product/img-2.png'), require('@/assets/images/product/img-1.png')],
colorVariant: [{
key: 'Black',
value: require('@/assets/images/product/img-6.png')
},
{
key: 'Yellow',
value: require('@/assets/images/product/img-6.png')
}]
}
];
export { clothsData };

View File

@ -1,76 +0,0 @@
const shopsData = [
{
id: 1,
name: "Brendle's",
color: 'primary',
avatar: 'B',
products: 112,
balance: '$13,575'
},
{
id: 2,
name: "Tech Hifi",
color: 'warning',
avatar: 'T',
products: 104,
balance: '$11,145'
},
{
id: 3,
name: "Lafayette",
color: 'danger',
avatar: 'L',
products: 126,
balance: '$12,356'
},
{
id: 4,
name: "Packer",
color: 'success',
avatar: 'P',
products: 102,
balance: '$11,228'
},
{
id: 5,
name: "Nedick's",
color: 'info',
avatar: 'N',
products: 96,
balance: '$9,235'
},
{
id: 6,
name: "Hudson's",
color: 'dark',
avatar: 'H',
products: 120,
balance: '$14,794'
},
{
id: 7,
name: "Tech Hifi",
color: 'dark',
avatar: 'T',
products: 104,
balance: '$11,145'
},
{
id: 8,
name: "Brendle's",
color: 'primary',
avatar: 'B',
products: 112,
balance: '$13,575'
},
{
id: 9,
name: "Lafayette",
color: 'success',
avatar: 'L',
products: 126,
balance: '$12,356'
},
];
export { shopsData };

View File

@ -1,181 +0,0 @@
<script>
import Layout from '../../layouts/main'
import PageHeader from '@/components/page-header'
import Transaction from '@/components/widgets/transaction'
import appConfig from "@/app.config";
/**
* Products-order component
*/
export default {
page: {
title: "Orders",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader, Transaction },
data() {
return {
title: 'Orders',
items: [
{
text: 'Ecommerce',
href: '/',
},
{
text: 'Orders',
active: true,
},
],
transactions: [
{
id: '#SK2540',
name: 'Neal Matthews',
date: '07 Oct, 2019',
total: '$400',
status: 'Paid',
payment: ['fab fa-cc-mastercard', 'Mastercard'],
index: 1,
},
{
id: '#SK2541',
name: 'Jamal Burnett',
date: '07 Oct, 2019',
total: '$380',
status: 'Chargeback',
payment: ['fab fa-cc-visa', 'Visa'],
index: 2,
},
{
id: '#SK2542',
name: 'Juan Mitchell',
date: '06 Oct, 2019',
total: '$384',
status: 'Paid',
payment: ['fab fa-cc-paypal', 'Paypal'],
index: 3,
},
{
id: '#SK2543',
name: 'Barry Dick',
date: '05 Oct, 2019',
total: '$412',
status: 'Paid',
payment: ['fab fa-cc-mastercard', 'Mastercard'],
index: 4,
},
{
id: '#SK2544',
name: 'Ronald Taylor',
date: '04 Oct, 2019',
total: '$404',
status: 'Refund',
payment: ['fab fa-cc-visa', 'Visa'],
index: 5,
},
{
id: '#SK2545',
name: 'Jacob Hunter',
date: '04 Oct, 2019',
total: '$392',
status: 'Paid',
payment: ['fab fa-cc-paypal', 'Paypal'],
index: 6,
},
{
id: '#SK2546',
name: 'William Cruz',
date: '03 Oct, 2019',
total: '$374',
status: 'Paid',
payment: ['fas fa-money-bill-alt', 'COD'],
index: 7,
},
{
id: '#SK2547',
name: 'Dustin Moser',
date: '02 Oct, 2019',
total: '$350',
status: 'Paid',
payment: ['fab fa-cc-mastercard', 'Mastercard'],
index: 8,
},
{
id: '#SK2548',
name: 'Clark Benson',
date: '01 Oct, 2019',
total: '$345',
status: 'Refund',
payment: ['fab fa-cc-visa', 'Visa'],
index: 9,
},
],
}
},
}
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="row mb-2">
<div class="col-sm-4">
<div class="search-box me-2 mb-2 d-inline-block">
<div class="position-relative">
<input type="text" class="form-control" placeholder="Search..." />
<i class="bx bx-search-alt search-icon"></i>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="text-sm-end">
<button type="button" class="btn btn-success btn-rounded mb-2 me-2">
<i class="mdi mdi-plus me-1"></i> Add New Order
</button>
</div>
</div>
<!-- end col-->
</div>
<!-- Table data -->
<Transaction :transactions="transactions" />
<ul class="pagination pagination-rounded justify-content-end mb-2">
<li class="page-item disabled">
<a class="page-link" href="javascript: void(0);" aria-label="Previous">
<i class="mdi mdi-chevron-left"></i>
</a>
</li>
<li class="page-item active">
<a class="page-link" href="javascript: void(0);">1</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">2</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">3</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">4</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);">5</a>
</li>
<li class="page-item">
<a class="page-link" href="javascript: void(0);" aria-label="Next">
<i class="mdi mdi-chevron-right"></i>
</a>
</li>
</ul>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,490 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { clothsData } from "./data-products";
/**
* Product detail component
*/
export default {
page: {
title: "Product Detail",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
productDetail: null,
clothsData: clothsData,
title: "Product Detail",
items: [
{
text: "Ecommerce",
href: "/",
},
{
text: "Product Detail",
active: true,
},
],
};
},
created() {
this.productDetail = clothsData.filter((product) => {
return product.id === parseInt(this.$route.params.id);
});
},
methods: {
/**
* Selected image shows
*/
imageShow(event) {
const image = event.target.src;
const expandImg = document.getElementById("expandedImg");
expandImg.src = image;
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-xl-6">
<div class="product-detai-imgs">
<b-tabs
pills
vertical
nav-wrapper-class="col-md-2 col-sm-3 col-4"
>
<b-tab>
<template v-slot:title>
<img
:src="productDetail[0].images[0]"
alt
class="img-fluid mx-auto d-block tab-img rounded"
/>
</template>
<div class="product-img">
<img
:src="productDetail[0].images[0]"
alt
class="img-fluid mx-auto d-block"
/>
</div>
</b-tab>
<b-tab>
<template v-slot:title>
<img
:src="productDetail[0].images[1]"
alt
class="img-fluid mx-auto d-block tab-img rounded"
/>
</template>
<div class="product-img">
<img
:src="productDetail[0].images[1]"
alt
class="img-fluid mx-auto d-block"
/>
</div>
</b-tab>
<b-tab>
<template v-slot:title>
<img
:src="productDetail[0].images[2]"
alt
class="img-fluid mx-auto d-block tab-img rounded"
/>
</template>
<div class="product-img">
<img
:src="productDetail[0].images[2]"
alt
class="img-fluid mx-auto d-block"
/>
</div>
</b-tab>
<b-tab>
<template v-slot:title>
<img
:src="productDetail[0].images[3]"
alt
class="img-fluid mx-auto d-block tab-img rounded"
/>
</template>
<div class="product-img">
<img
:src="productDetail[0].images[3]"
alt
class="img-fluid mx-auto d-block"
/>
</div>
</b-tab>
</b-tabs>
</div>
</div>
<div class="col-xl-6">
<div class="mt-3">
<h4 class="mt-1 mb-3">{{ productDetail[0].name }}</h4>
<p class="text-muted float-left me-3">
<span class="bx bx-star text-warning"></span>
<span class="bx bx-star text-warning ml-1"></span>
<span class="bx bx-star text-warning ml-1"></span>
<span class="bx bx-star text-warning ml-1"></span>
<span class="bx bx-star ml-1"></span>
</p>
<p class="text-muted mb-4">( 152 Customers Review )</p>
<h6 class="text-success text-uppercase">
{{ productDetail[0].discount }} Off
</h6>
<h5 class="mb-4">
Price :
<span class="text-muted me-2">
<del>${{ productDetail[0].oldprice }} USD</del>
</span>
<b>${{ productDetail[0].newprice }} USD</b>
</h5>
<p class="text-muted mb-4">
To achieve this, it would be necessary to have uniform
grammar pronunciation and more common words If several
languages coalesce
</p>
<div class="row mb-3">
<div class="col-md-6">
<div
v-for="(item, index) in productDetail[0].feature"
:key="index"
>
<p class="text-muted">
<i
class="bx bx-unlink font-size-16 align-middle text-primary me-1"
></i>
{{ item }}
</p>
</div>
</div>
<div class="col-md-6">
<div>
<p class="text-muted">
<i
class="bx bx-user-voice font-size-16 align-middle text-primary me-1"
></i>
Bass
</p>
<p class="text-muted">
<i
class="bx bx-cog font-size-16 align-middle text-primary me-1"
></i>
Warranty : 1 Year
</p>
</div>
</div>
</div>
<div class="product-color">
<h5 class="font-size-15">Color :</h5>
<a
href="javascript: void(0);"
class="active"
v-for="(item, index) in productDetail[0].colorVariant"
:key="index"
>
<div class="product-color-item border rounded">
<img :src="item.value" alt class="avatar-md" />
</div>
<p>{{ item.key }}</p>
</a>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="mt-5">
<h5 class="mb-3">Specifications :</h5>
<div class="table-responsive">
<table class="table mb-0 table-bordered">
<tbody>
<tr
v-for="(i, index) in productDetail[0].specification"
:key="index"
>
<th scope="row" style="width: 400px">{{ i.key }}</th>
<td>{{ i.value }}</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- end Specifications -->
<div class="mt-5">
<h5 class="mb-4">Reviews :</h5>
<div class="d-flex py-3 border-bottom">
<img
src="@/assets/images/users/avatar-2.jpg"
class="avatar-xs me-3 rounded-circle"
alt="img"
/>
<div class="flex-grow-1">
<h5 class="mt-0 font-size-15">Brian</h5>
<p class="text-muted">
If several languages coalesce, the grammar of the resulting
language.
</p>
<ul class="list-inline float-sm-end">
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-thumbs-up me-1"></i> Like
</a>
</li>
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-comment-dots me-1"></i> Comment
</a>
</li>
</ul>
<div class="text-muted">
<i class="far fa-calendar-alt text-primary me-1"></i> 5 hrs
ago
</div>
</div>
</div>
<div class="d-flex py-3 border-bottom">
<img
src="@/assets/images/users/avatar-4.jpg"
class="avatar-xs me-3 rounded-circle"
alt="img"
/>
<div class="flex-grow-1">
<h5 class="mt-0 font-size-15">Denver</h5>
<p class="text-muted">
To an English person, it will seem like simplified English,
as a skeptical Cambridge
</p>
<ul class="list-inline float-sm-end">
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-thumbs-up me-1"></i> Like
</a>
</li>
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-comment-dots me-1"></i> Comment
</a>
</li>
</ul>
<div class="text-muted">
<i class="far fa-calendar-alt text-primary me-1"></i> 07
Oct, 2019
</div>
<div class="d-flex mt-4">
<img
src="@/assets/images/users/avatar-5.jpg"
class="avatar-xs me-3 rounded-circle"
alt="img"
/>
<div class="flex-grow-1">
<h5 class="mt-0 font-size-15">Henry</h5>
<p class="text-muted">
Their separate existence is a myth. For science, music,
sport, etc.
</p>
<ul class="list-inline float-sm-end">
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-thumbs-up me-1"></i> Like
</a>
</li>
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-comment-dots me-1"></i> Comment
</a>
</li>
</ul>
<div class="text-muted">
<i class="far fa-calendar-alt text-primary me-1"></i> 08
Oct, 2019
</div>
</div>
</div>
</div>
</div>
<div class="d-flex mt-3 border-bottom">
<div class="avatar-xs me-3">
<span
class="avatar-title bg-soft bg-primary text-primary rounded-circle font-size-16"
>N</span
>
</div>
<div class="flex-grow-1">
<h5 class="mt-0 font-size-15">Neal</h5>
<p class="text-muted">
Everyone realizes why a new common language would be
desirable.
</p>
<ul class="list-inline float-sm-end">
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-thumbs-up me-1"></i> Like
</a>
</li>
<li class="list-inline-item">
<a href="javascript: void(0);">
<i class="far fa-comment-dots me-1"></i> Comment
</a>
</li>
</ul>
<div class="text-muted">
<i class="far fa-calendar-alt text-primary me-1"></i> 05
Oct, 2019
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end card -->
</div>
</div>
<!-- end row -->
<div class="row mt-3">
<div class="col-lg-12">
<div>
<h5 class="mb-3">Recent product :</h5>
<div class="row">
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row align-items-center">
<div class="col-md-4">
<img
src="@/assets/images/product/img-7.png"
alt
class="img-fluid mx-auto d-block"
/>
</div>
<div class="col-md-8">
<div class="text-center text-md-start pt-3 pt-md-0">
<h5 class="mb-3 text-truncate">
<a href="javascript: void(0);" class="text-dark"
>Wirless Headphone</a
>
</h5>
<p class="text-muted mb-4">
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star"></i>
</p>
<h5 class="my-0">
<span class="text-muted me-2">
<del>$240</del>
</span>
<b>$225</b>
</h5>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row align-items-center">
<div class="col-md-4">
<img
src="@/assets/images/product/img-4.png"
alt
class="img-fluid mx-auto d-block"
/>
</div>
<div class="col-md-8">
<div class="text-center text-md-start pt-3 pt-md-0">
<h5 class="mb-3 text-truncate">
<a href="javascript: void(0);" class="text-dark"
>Phone patterned cases</a
>
</h5>
<p class="text-muted mb-4">
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star"></i>
</p>
<h5 class="my-0">
<span class="text-muted me-2">
<del>$150</del>
</span>
<b>$145</b>
</h5>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row align-items-center">
<div class="col-md-4">
<img
src="@/assets/images/product/img-6.png"
alt
class="img-fluid mx-auto d-block"
/>
</div>
<div class="col-md-8">
<div class="text-center text-md-start pt-3 pt-md-0">
<h5 class="mb-3 text-truncate">
<a href="javascript: void(0);" class="text-dark"
>Phone Dark Patterned cases</a
>
</h5>
<p class="text-muted mb-4">
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star"></i>
</p>
<h5 class="my-0">
<span class="text-muted me-2">
<del>$138</del>
</span>
<b>$135</b>
</h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,348 +0,0 @@
<script>
import Slider from "@vueform/slider";
// import axios from "axios";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { clothsData } from "./data-products";
/**
* Products component
*/
export default {
page: {
title: "Product",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Slider, Layout, PageHeader },
data() {
return {
clothsData: clothsData,
title: "Product",
items: [
{
text: "Ecommerce",
href: "/",
},
{
text: "Products",
active: true,
},
],
sliderPrice: 800,
currentPage: 1,
discountRates: [],
};
},
mounted() {
//** Get data from product api */
// axios
// .get(`http://localhost:8000/api/products`)
// .then((res) => {
// this.clothsData = res.data.data;
// })
// .catch((err) => {
// return err;
// });
},
methods: {
valuechange(value) {
this.clothsData = clothsData.filter(function (product) {
return product.newprice <= value;
});
},
searchFilter(e) {
const searchStr = e.target.value;
this.clothsData = clothsData.filter((product) => {
return (
product.name.toLowerCase().search(searchStr.toLowerCase()) !== -1
);
});
},
discountLessFilter(e, percentage) {
if (e === "accepted" && this.discountRates.length === 0) {
this.clothsData = clothsData.filter((product) => {
return product.discount < percentage;
});
} else {
this.clothsData = clothsData.filter((product) => {
return product.discount >= Math.max.apply(null, this);
}, this.discountRates);
}
},
discountMoreFilter(e, percentage) {
if (e === "accepted") {
this.discountRates.push(percentage);
} else {
this.discountRates.splice(this.discountRates.indexOf(percentage), 1);
}
this.clothsData = clothsData.filter((product) => {
return product.discount >= Math.max.apply(null, this);
}, this.discountRates);
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-3">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Filter</h4>
<div>
<h5 class="font-size-14 mb-3">Clothes</h5>
<ul class="list-unstyled product-list">
<li>
<a href="javascript: void(0);">
<i class="mdi mdi-chevron-right me-1"></i> T-shirts
</a>
</li>
<li>
<a href="javascript: void(0);">
<i class="mdi mdi-chevron-right me-1"></i> Shirts
</a>
</li>
<li>
<a href="javascript: void(0);">
<i class="mdi mdi-chevron-right me-1"></i> Jeans
</a>
</li>
<li>
<a href="javascript: void(0);">
<i class="mdi mdi-chevron-right me-1"></i> Jackets
</a>
</li>
</ul>
</div>
<div class="mt-4 pt-3">
<h5 class="font-size-14 mb-3">Price</h5>
<Slider
v-model="sliderPrice"
:min="0"
:max="1000"
@change="valuechange"
/>
</div>
<div class="mt-4 pt-3">
<h5 class="font-size-14 mb-3">Discount</h5>
<b-form-checkbox
id="productdiscountCheck1"
value="accepted"
unchecked-value="not_accepted"
@change="discountLessFilter($event, 10)"
>Less than 10%</b-form-checkbox
>
<b-form-checkbox
id="productdiscountCheck2"
value="accepted"
unchecked-value="not_accepted"
@change="discountMoreFilter($event, 10)"
>10% or more</b-form-checkbox
>
<b-form-checkbox
id="productdiscountCheck3"
value="accepted"
unchecked-value="not_accepted"
@change="discountMoreFilter($event, 20)"
>20% or more</b-form-checkbox
>
<b-form-checkbox
id="productdiscountCheck4"
value="accepted"
unchecked-value="not_accepted"
@change="discountMoreFilter($event, 30)"
>30% or more</b-form-checkbox
>
<b-form-checkbox
id="productdiscountCheck5"
value="accepted"
unchecked-value="not_accepted"
@change="discountMoreFilter($event, 40)"
>40% or more</b-form-checkbox
>
<b-form-checkbox
id="productdiscountCheck6"
value="accepted"
unchecked-value="not_accepted"
@change="discountMoreFilter($event, 50)"
>50% or more</b-form-checkbox
>
</div>
<div class="mt-4 pt-3">
<h5 class="font-size-14 mb-3">Customer Rating</h5>
<div>
<b-form-checkbox
id="checkbox-1"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
4
<i class="bx bx-star text-warning"></i> & Above
</b-form-checkbox>
<b-form-checkbox
id="checkbox-2"
name="checkbox-2"
value="accepted"
unchecked-value="not_accepted"
>
3
<i class="bx bx-star text-warning"></i> & Above
</b-form-checkbox>
<b-form-checkbox
id="checkbox-3"
name="checkbox-3"
value="accepted"
unchecked-value="not_accepted"
>
2
<i class="bx bx-star text-warning"></i> & Above
</b-form-checkbox>
<b-form-checkbox
id="checkbox-4"
name="checkbox-4"
value="accepted"
unchecked-value="not_accepted"
>
1
<i class="bx bx-star text-warning"></i>
</b-form-checkbox>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-9">
<div class="row mb-3">
<div class="col-xl-4 col-sm-6">
<div class="mt-2">
<h5>Clothes</h5>
</div>
</div>
<div class="col-lg-8 col-sm-6">
<form class="mt-4 mt-sm-0 float-sm-end d-flex align-items-center">
<div class="search-box me-2">
<div class="position-relative">
<input
type="text"
class="form-control border-0"
placeholder="Search..."
@input="searchFilter($event)"
/>
<i class="bx bx-search-alt search-icon"></i>
</div>
</div>
<ul class="nav nav-pills product-view-nav">
<li class="nav-item">
<a class="nav-link active" href="javascript: void(0);">
<i class="bx bx-grid-alt"></i>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript: void(0);">
<i class="bx bx-list-ul"></i>
</a>
</li>
</ul>
</form>
</div>
</div>
<div class="row">
<div
v-for="data in clothsData"
:key="data.id"
class="col-xl-4 col-sm-6"
>
<div class="card">
<div class="card-body">
<div class="product-img position-relative">
<div v-if="data.discount" class="avatar-sm product-ribbon">
<span class="avatar-title rounded-circle bg-primary"
>-{{ data.discount }}%</span
>
</div>
<router-link
:to="`/ecommerce/product-detail/${data.id}`"
>
<img
:src="`${data.product}`"
alt
class="img-fluid mx-auto d-block"
/>
</router-link>
</div>
<div class="mt-4 text-center">
<h5 class="mb-3 text-truncate">
<router-link
class="text-dark"
:to="`/ecommerce/product-detail/${data.id}`"
>{{ data.name }}</router-link
>
</h5>
<p class="text-muted">
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star text-warning"></i>
<i class="bx bxs-star"></i>
</p>
<h5 class="my-0">
<span class="text-muted me-2">
<del>${{ data.oldprice }}</del>
</span>
<b>${{ data.newprice }}</b>
</h5>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-12">
<b-pagination
v-if="clothsData.length > 0"
class="justify-content-center"
pills
v-model="currentPage"
:total-rows="clothsData.length"
:per-page="6"
aria-controls="my-table"
></b-pagination>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,93 +0,0 @@
<script>
import Layout from '../../layouts/main'
import PageHeader from '@/components/page-header'
import appConfig from "@/app.config";
import { shopsData } from './data-shops'
/**
* Shops component
*/
export default {
page: {
title: "Shops",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader },
data() {
return {
shopsData: shopsData,
title: 'Shops',
items: [
{
text: 'Ecommerce',
href: '/',
},
{
text: 'Shops',
active: true,
},
],
}
},
}
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div v-for="shops in shopsData" :key="shops.id" class="col-xl-4 col-sm-6">
<div class="card">
<div class="row">
<div class="col-xl-5">
<div class="text-center p-4 border-end">
<div class="avatar-sm mx-auto mb-3 mt-1">
<span
:class="`avatar-title rounded-circle bg-soft bg-${shops.color} text-${shops.color} font-size-16`"
>{{shops.avatar}}</span>
</div>
<h5 class="text-truncate pb-1">{{shops.name}}</h5>
</div>
</div>
<div class="col-xl-7">
<div class="p-4 text-center text-xl-start">
<div class="row">
<div class="col-xs-6">
<div>
<p class="text-muted mb-2 text-truncate">Products</p>
<h5>{{shops.products}}</h5>
</div>
</div>
<div class="col-xs-6">
<div>
<p class="text-muted mb-2 text-truncate">Wallet Balance</p>
<h5>{{shops.balance}}</h5>
</div>
</div>
</div>
<div class="mt-4">
<a href="#" class="text-decoration-underline text-reset">See Profile<i class="mdi mdi-arrow-right"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-12">
<div class="text-center my-3">
<a href="javascript:void(0);" class="text-success">
<i class="bx bx-loader bx-spin font-size-18 align-middle me-2"></i> Load more
</a>
</div>
</div>
<!-- end col-->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,294 +0,0 @@
const emailData = [
{
id: 1,
unread: true,
text: 'warning',
title: 'Lucas Kriebel (via Twitter)',
subject: 'Lucas Kriebel (@LucasKriebel) has sent you a direct message on Twitter! @LucasKriebel - Very cool :) Nicklas, You have a new direct message.',
date: '10-Jan'
},
{
id: 2,
title: 'Randy, me (5)',
subject: 'Yeah i\'d like that! Do you remember the video you showed me of your train ride between Colombo and Kandy? The one with the mountain view? I would love to see that one again!',
date: '01-Feb'
},
{
id: 3,
title: 'Bruen-McCullough',
subject: 'Sed sagittis. Nam congue, risus semper porta volutpat, quam pede lobortis ligula, sit amet eleifend pede libero quis orci. Nullam molestie nibh in lectus.',
date: '28-Apr'
}, {
id: 4,
text: 'warning',
title: 'Muller LLC',
subject: 'Praesent blandit. Nam nulla. Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede.',
date: '08-Jan'
}, {
id: 5,
title: 'Haley and Sons',
subject: 'Quisque porta volutpat erat. Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla. Nunc purus.\n\nPhasellus in felis. Donec semper sapien a libero. Nam dui.\n\nProin leo odio, porttitor id, consequat in, consequat ut, nulla. Sed accumsan felis. Ut at dolor quis odio consequat varius.',
date: '16-Nov'
}, {
id: 6,
unread: true,
title: 'Kohler-Effertz',
subject: 'Curabitur gravida nisi at nibh. In hac habitasse platea dictumst. Aliquam augue quam, sollicitudin vitae, consectetuer eget, rutrum at, lorem.',
date: '05-Oct'
}, {
id: 7,
text: 'warning',
title: 'Stokes, Fay and Pfeffer',
subject: 'Duis bibendum, felis sed interdum venenatis, turpis enim blandit mi, in porttitor pede justo eu massa. Donec dapibus. Duis at velit eu est congue elementum.\n\nIn hac habitasse platea dictumst. Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante. Nulla justo.\n\nAliquam quis turpis eget elit sodales scelerisque. Mauris sit amet eros. Suspendisse accumsan tortor quis turpis.',
date: '16-Apr'
}, {
id: 8,
text: 'warning',
title: 'Hintz-O\'Reilly',
subject: 'Vestibulum ac est lacinia nisi venenatis tristique. Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue. Aliquam erat volutpat.',
date: '30-Dec'
}, {
id: 9,
title: 'Franecki, Simonis and Dach',
subject: 'Maecenas ut massa quis augue luctus tincidunt. Nulla mollis molestie lorem. Quisque ut erat.',
date: '20-Feb'
}, {
id: 10,
unread: true,
text: 'warning',
title: 'Keeling-Bergstrom',
subject: 'Fusce consequat. Nulla nisl. Nunc nisl.\n\nDuis bibendum, felis sed interdum venenatis, turpis enim blandit mi, in porttitor pede justo eu massa. Donec dapibus. Duis at velit eu est congue elementum.',
date: '26-Jan'
}, {
id: 11,
title: 'Waters, Jacobs and Ortiz',
subject: 'Cras non velit nec nisi vulputate nonummy. Maecenas tincidunt lacus at velit. Vivamus vel nulla eget eros elementum pellentesque.',
date: '09-Dec'
}, {
id: 12,
text: 'warning',
title: 'Ernser, Bernier and Schaden',
subject: 'Pellentesque at nulla. Suspendisse potenti. Cras in purus eu magna vulputate luctus.\n\nCum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.',
date: '29-Apr'
}, {
id: 13,
title: 'Davis, Pouros and Welch',
subject: 'Vestibulum ac est lacinia nisi venenatis tristique. Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue. Aliquam erat volutpat.\n\nIn congue. Etiam justo. Etiam pretium iaculis justo.',
date: '12-Jun'
}, {
id: 14,
title: 'O\'Keefe Group\'',
subject: 'Donec diam neque, vestibulum eget, vulputate ut, ultrices vel, augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec pharetra, magna vestibulum aliquet ultrices, erat tortor sollicitudin mi, sit amet lobortis sapien sapien non mi. Integer ac neque.',
date: '01-Mar'
}, {
id: 15,
text: 'warning',
title: 'Batz, Abbott and Jakubowski',
subject: 'Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.\n\nEtiam vel augue. Vestibulum rutrum rutrum neque. Aenean auctor gravida sem.',
date: '12-Oct'
}, {
id: 16,
unread: true,
title: 'Mertz and Sons',
subject: 'Pellentesque at nulla. Suspendisse potenti. Cras in purus eu magna vulputate luctus.',
date: '09-May'
}, {
id: 17,
title: 'Thompson Group',
subject: 'Mauris enim leo, rhoncus sed, vestibulum sit amet, cursus id, turpis. Integer aliquet, massa id lobortis convallis, tortor risus dapibus augue, vel accumsan tellus nisi eu orci. Mauris lacinia sapien quis libero.\n\nNullam sit amet turpis elementum ligula vehicula consequat. Morbi a ipsum. Integer a nibh.\n\nIn quis justo. Maecenas rhoncus aliquam lacus. Morbi quis tortor id nulla ultrices aliquet.',
date: '26-Dec'
}, {
id: 18,
title: 'Jerde, Okuneva and Klocko',
subject: 'Nam ultrices, libero non mattis pulvinar, nulla pede ullamcorper augue, a suscipit nulla elit ac nulla. Sed vel enim sit amet nunc viverra dapibus. Nulla suscipit ligula in lacus.\n\nCurabitur at ipsum ac tellus semper interdum. Mauris ullamcorper purus sit amet nulla. Quisque arcu libero, rutrum ac, lobortis vel, dapibus at, diam.',
date: '02-Feb'
}, {
id: 19,
text: 'warning',
title: 'Boyer-Lubowitz',
subject: 'Maecenas ut massa quis augue luctus tincidunt. Nulla mollis molestie lorem. Quisque ut erat.',
date: '13-Nov'
}, {
id: 20,
title: 'Gutmann, McLaughlin and Nienow',
subject: 'Sed sagittis. Nam congue, risus semper porta volutpat, quam pede lobortis ligula, sit amet eleifend pede libero quis orci. Nullam molestie nibh in lectus.\n\nPellentesque at nulla. Suspendisse potenti. Cras in purus eu magna vulputate luctus.\n\nCum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.',
date: '25-Jul'
}, {
id: 21,
text: 'warning',
title: 'Lebsack-Schmitt',
subject: 'Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo. In blandit ultrices enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n\nProin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.',
date: '30-Sep'
}, {
id: 22,
unread: true,
title: 'Jacobi-Greenholt',
subject: 'Curabitur gravida nisi at nibh. In hac habitasse platea dictumst. Aliquam augue quam, sollicitudin vitae, consectetuer eget, rutrum at, lorem.',
date: '16-May'
}, {
id: 23,
title: 'Kutch, Jacobson and Kozey',
subject: 'Donec diam neque, vestibulum eget, vulputate ut, ultrices vel, augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec pharetra, magna vestibulum aliquet ultrices, erat tortor sollicitudin mi, sit amet lobortis sapien sapien non mi. Integer ac neque.\n\nDuis bibendum. Morbi non quam nec dui luctus rutrum. Nulla tellus.\n\nIn sagittis dui vel nisl. Duis ac nibh. Fusce lacus purus, aliquet at, feugiat non, pretium quis, lectus.',
date: '06-Apr'
}, {
id: 24,
text: 'warning',
title: 'Bernhard and Sons',
subject: 'Phasellus sit amet erat. Nulla tempus. Vivamus in felis eu sapien cursus vestibulum.\n\nProin eu mi. Nulla ac enim. In tempor, turpis nec euismod scelerisque, quam turpis adipiscing lorem, vitae mattis nibh ligula nec sem.\n\nDuis aliquam convallis nunc. Proin at turpis a pede posuere nonummy. Integer non velit.',
date: '09-Feb'
}, {
id: 25,
title: 'Kunze Inc',
text: 'warning',
subject: 'Mauris enim leo, rhoncus sed, vestibulum sit amet, cursus id, turpis. Integer aliquet, massa id lobortis convallis, tortor risus dapibus augue, vel accumsan tellus nisi eu orci. Mauris lacinia sapien quis libero.\n\nNullam sit amet turpis elementum ligula vehicula consequat. Morbi a ipsum. Integer a nibh.\n\nIn quis justo. Maecenas rhoncus aliquam lacus. Morbi quis tortor id nulla ultrices aliquet.',
date: '11-May'
}, {
id: 26,
title: 'Miller Group',
subject: 'Duis bibendum. Morbi non quam nec dui luctus rutrum. Nulla tellus.',
date: '19-Jul'
}, {
id: 27,
title: 'Durgan and Sons',
subject: 'Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.\n\nAenean lectus. Pellentesque eget nunc. Donec quis orci eget orci vehicula condimentum.',
date: '23-Dec'
}, {
id: 28,
text: 'warning',
title: 'Pfannerstill-Kautzer',
subject: 'Curabitur gravida nisi at nibh. In hac habitasse platea dictumst. Aliquam augue quam, sollicitudin vitae, consectetuer eget, rutrum at, lorem.',
date: '20-Jan'
}, {
id: 29,
title: 'O\'Reilly-Ferry',
subject: 'Nullam sit amet turpis elementum ligula vehicula consequat. Morbi a ipsum. Integer a nibh.',
date: '29-Apr'
}, {
id: 30,
title: 'Shields, Jast and Towne',
subject: 'Sed ante. Vivamus tortor. Duis mattis egestas metus.\n\nAenean fermentum. Donec ut mauris eget massa tempor convallis. Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh.',
date: '16-Feb'
}, {
id: 31,
text: 'warning',
title: 'Mayert-Dickinson',
subject: 'Praesent id massa id nisl venenatis lacinia. Aenean sit amet justo. Morbi ut odio.\n\nCras mi pede, malesuada in, imperdiet et, commodo vulputate, justo. In blandit ultrices enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n\nProin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.',
date: '30-Dec'
}, {
id: 32,
title: 'Little LLC',
subject: 'Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.\n\nAenean lectus. Pellentesque eget nunc. Donec quis orci eget orci vehicula condimentum.',
date: '07-Mar'
}, {
id: 33,
text: 'warning',
title: 'Crist, Blanda and Wuckert',
subject: 'Phasellus in felis. Donec semper sapien a libero. Nam dui.',
date: '13-Aug'
}, {
id: 34,
text: 'warning',
title: 'Williamson-Sanford',
subject: 'Suspendisse potenti. In eleifend quam a odio. In hac habitasse platea dictumst.',
date: '09-Jul'
}, {
id: 35,
title: 'Gleason-Shanahan',
subject: 'Quisque porta volutpat erat. Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla. Nunc purus.\n\nPhasellus in felis. Donec semper sapien a libero. Nam dui.\n\nProin leo odio, porttitor id, consequat in, consequat ut, nulla. Sed accumsan felis. Ut at dolor quis odio consequat varius.',
date: '13-May'
}, {
id: 36,
unread: true,
title: 'Franecki-Hodkiewicz',
subject: 'Morbi non lectus. Aliquam sit amet diam in magna bibendum imperdiet. Nullam orci pede, venenatis non, sodales sed, tincidunt eu, felis.',
date: '15-Mar'
}, {
id: 37,
title: 'Bailey-Simonis',
subject: 'Aenean lectus. Pellentesque eget nunc. Donec quis orci eget orci vehicula condimentum.',
date: '18-Sep'
}, {
id: 38,
text: 'warning',
title: 'Grant-Volkman',
subject: 'Quisque id justo sit amet sapien dignissim vestibulum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est. Donec odio justo, sollicitudin ut, suscipit a, feugiat et, eros.',
date: '13-Mar'
}, {
id: 39,
title: 'Kshlerin-Cole',
subject: 'Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.',
date: '21-Nov'
}, {
id: 40,
title: 'Pouros-Funk',
subject: 'Vestibulum ac est lacinia nisi venenatis tristique. Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue. Aliquam erat volutpat.\n\nIn congue. Etiam justo. Etiam pretium iaculis justo.\n\nIn hac habitasse platea dictumst. Etiam faucibus cursus urna. Ut tellus.',
date: '05-Jun'
}, {
id: 41,
title: 'Ziemann-Denesik',
subject: 'Nulla ut erat id mauris vulputate elementum. Nullam varius. Nulla facilisi.',
date: '14-Apr'
}, {
id: 42,
title: 'Johnson LLC',
subject: 'In hac habitasse platea dictumst. Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante. Nulla justo.\n\nAliquam quis turpis eget elit sodales scelerisque. Mauris sit amet eros. Suspendisse accumsan tortor quis turpis.',
date: '30-Nov'
}, {
id: 43,
title: 'Cummings-Ferry',
subject: 'Phasellus in felis. Donec semper sapien a libero. Nam dui.\n\nProin leo odio, porttitor id, consequat in, consequat ut, nulla. Sed accumsan felis. Ut at dolor quis odio consequat varius.\n\nInteger ac leo. Pellentesque ultrices mattis odio. Donec vitae nisi.',
date: '30-Nov'
}, {
id: 44,
title: 'Weimann-Lueilwitz',
subject: 'Integer tincidunt ante vel ipsum. Praesent blandit lacinia erat. Vestibulum sed magna at nunc commodo placerat.\n\nPraesent blandit. Nam nulla. Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede.',
date: '06-Nov'
}, {
id: 45,
unread: true,
title: 'Zieme, Krajcik and Champlin',
subject: 'Proin leo odio, porttitor id, consequat in, consequat ut, nulla. Sed accumsan felis. Ut at dolor quis odio consequat varius.\n\nInteger ac leo. Pellentesque ultrices mattis odio. Donec vitae nisi.\n\nNam ultrices, libero non mattis pulvinar, nulla pede ullamcorper augue, a suscipit nulla elit ac nulla. Sed vel enim sit amet nunc viverra dapibus. Nulla suscipit ligula in lacus.',
date: '28-Mar'
}, {
id: 46,
title: 'Toy-Kunde',
subject: 'Vestibulum quam sapien, varius ut, blandit non, interdum in, ante. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Duis faucibus accumsan odio. Curabitur convallis.',
date: '27-Dec'
}, {
id: 47,
title: 'Mosciski and Sons',
subject: 'Duis aliquam convallis nunc. Proin at turpis a pede posuere nonummy. Integer non velit.',
date: '04-Feb'
}, {
id: 48,
title: 'Lowe, Windler and Wolff',
subject: 'Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.',
date: '13-Mar'
}, {
id: 49,
text: 'warning',
title: 'Bruen-Bashirian',
subject: 'Aliquam quis turpis eget elit sodales scelerisque. Mauris sit amet eros. Suspendisse accumsan tortor quis turpis.\n\nSed ante. Vivamus tortor. Duis mattis egestas metus.',
date: '04-Mar'
}, {
id: 50,
title: 'Nader, Hickle and Ullrich',
subject: 'In hac habitasse platea dictumst. Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante. Nulla justo.\n\nAliquam quis turpis eget elit sodales scelerisque. Mauris sit amet eros. Suspendisse accumsan tortor quis turpis.',
date: '28-May'
}, {
id: 51,
text: 'warning',
title: 'Reilly-Homenick',
subject: 'Aliquam quis turpis eget elit sodales scelerisque. Mauris sit amet eros. Suspendisse accumsan tortor quis turpis.\n\nSed ante. Vivamus tortor. Duis mattis egestas metus.\n\nAenean fermentum. Donec ut mauris eget massa tempor convallis. Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh.',
date: '18-Jan'
}, {
id: 52,
unread: true,
title: 'O\'Connell and Sons',
subject: 'Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.',
date: '03-Aug'
}];
export { emailData };

View File

@ -1,137 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import Toolbar from "./toolbar";
import Sidepanel from "./sidepanel";
import { emailData } from "./data-inbox";
/**
* Email-inbox component
*/
export default {
page: {
title: "Inbox",
meta: [{ name: "description", content: appConfig.description }]
},
components: {
Layout,
PageHeader,
Toolbar,
Sidepanel
},
data() {
return {
emailData: emailData,
paginatedEmailData: emailData,
title: "Inbox",
items: [
{
text: "Email",
href: "/"
},
{
text: "Inbox",
active: true
}
],
// page number
currentPage: 1,
// default page size
perPage: 15,
emailIds: [],
// start and end index
startIndex: 1,
endIndex: 15
};
},
computed: {
rows() {
return this.emailData.length;
}
},
created() {
this.startIndex = 0;
this.endIndex = this.perPage;
this.paginatedEmailData = this.emailData.slice(
this.startIndex,
this.endIndex
);
},
methods: {
onPageChange() {
this.startIndex = (this.currentPage - 1) * this.perPage;
this.endIndex = (this.currentPage - 1) * this.perPage + this.perPage;
this.paginatedEmailData = this.emailData.slice(
this.startIndex,
this.endIndex
);
}
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<!-- Right Sidebar -->
<div class="col-12">
<Sidepanel />
<div class="email-rightbar mb-3">
<div class="card">
<div class="btn-toolbar p-3">
<Toolbar />
</div>
<div class="mt-3">
<ul class="message-list">
<router-link
custom v-slot="{ navigate }"
v-for="(email,index) in paginatedEmailData"
:key="index"
:class="{ 'unread': email.unread === true }"
:to="`/email/reademail/${email.id}`"
>
<li @click="navigate" @keypress.enter="navigate">
<div class="col-mail col-mail-1">
<div class="checkbox-wrapper-mail">
<input :id="`chk-${index}`" type="checkbox" />
<label :for="`chk-${index}`"></label>
</div>
<span :class="`star-toggle far fa-star text-${email.text}`"></span>
<a class="title">{{email.title}}</a>
</div>
<div class="col-mail col-mail-2">
<router-link
:to="`/email/reademail/${email.id}`"
class="subject"
>{{email.subject}}</router-link>
<div class="date">{{email.date}}</div>
</div>
</li>
</router-link>
</ul>
</div>
</div>
<div class="row justify-content-md-between align-items-md-center">
<div class="col-xl-7">Showing {{startIndex}} - {{endIndex}} of {{rows}}</div>
<!-- end col-->
<div class="col-xl-5">
<div class="text-md-right float-end mt-2 pagination-rounded">
<b-pagination
v-model="currentPage"
:total-rows="rows"
:per-page="perPage"
@input="onPageChange"
></b-pagination>
</div>
</div>
<!-- end col-->
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,125 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import Toolbar from "./toolbar";
import Sidepanel from "./sidepanel";
import { emailData } from "./data-inbox";
/**
* Email-read component
*/
export default {
page: {
title: "Read Email",
meta: [{ name: "description", content: appConfig.description }]
},
components: {
Layout,
PageHeader,
Toolbar,
Sidepanel
},
data() {
return {
emailread: null,
emailData: emailData,
title: "Read Email",
items: [
{
text: "Email",
href: "/"
},
{
text: "Read Email",
active: true
}
]
};
},
created() {
this.emailRead = emailData.filter(email => {
return email.id === parseInt(this.$route.params.id);
});
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<!-- Left sidebar -->
<Sidepanel />
<!-- End Left sidebar -->
<!-- Right Sidebar -->
<div class="email-rightbar mb-3">
<div class="card">
<div class="btn-toolbar p-3" role="toolbar">
<Toolbar />
</div>
<div class="card-body">
<div class="d-flex mb-4">
<img
class="d-flex me-3 rounded-circle avatar-sm"
src="@/assets/images/users/avatar-2.jpg"
alt="Generic placeholder image"
/>
<div class="flex-grow-1">
<h5 class="font-size-14 mt-1">Humberto D. Champion</h5>
<small class="text-muted">support@domain.com</small>
</div>
</div>
<h4 class="mt-0 font-size-16">{{emailRead[0].title}}</h4>
<p>Dear Lorem Ipsum,</p>
<p>{{emailRead[0].subject}}</p>
<p>Sed elementum turpis eu lorem interdum, sed porttitor eros commodo. Nam eu venenatis tortor, id lacinia diam. Sed aliquam in dui et porta. Sed bibendum orci non tincidunt ultrices. Vivamus fringilla, mi lacinia dapibus condimentum, ipsum urna lacinia lacus, vel tincidunt mi nibh sit amet lorem.</p>
<p>Sincerly,</p>
<hr />
<div class="row">
<div class="col-xl-2 col-6">
<div class="card">
<img
class="card-img-top img-fluid"
src="@/assets/images/small/img-3.jpg"
alt="Card image cap"
/>
<div class="py-2 text-center">
<a href class="fw-medium">Download</a>
</div>
</div>
</div>
<div class="col-xl-2 col-6">
<div class="card">
<img
class="card-img-top img-fluid"
src="@/assets/images/small/img-4.jpg"
alt="Card image cap"
/>
<div class="py-2 text-center">
<a href class="fw-medium">Download</a>
</div>
</div>
</div>
</div>
<a href="javascript: void(0);" class="btn btn-secondary waves-effect mt-4">
<i class="mdi mdi-reply"></i> Reply
</a>
</div>
</div>
</div>
<!-- card -->
</div>
<!-- end Col-9 -->
</div>
</Layout>
</template>

View File

@ -1,140 +0,0 @@
<script>
import CKEditor from "@ckeditor/ckeditor5-vue";
import ClassicEditor from "@ckeditor/ckeditor5-build-classic";
export default {
components: { ckeditor: CKEditor.component },
data() {
return {
showModal: false,
editor: ClassicEditor,
editorData: "<p>Content of the editor.</p>"
};
}
};
</script>
<template>
<div class="email-leftbar card">
<b-button variant="danger" @click="showModal = true">Compose</b-button>
<div class="mail-list mt-4">
<router-link to="/email/inbox" class="active">
<i class="mdi mdi-email-outline me-2"></i> Inbox
<span class="ms-1 float-end">(18)</span>
</router-link>
<router-link to="/email/inbox">
<i class="mdi mdi-star-outline me-2"></i>Starred
</router-link>
<router-link to="/email/inbox">
<i class="mdi mdi-diamond-stone me-2"></i>Important
</router-link>
<router-link to="/email/inbox">
<i class="mdi mdi-file-outline me-2"></i>Draft
</router-link>
<router-link to="/email/inbox">
<i class="mdi mdi-email-check-outline me-2"></i>Sent Mail
</router-link>
<router-link to="/email/inbox">
<i class="mdi mdi-trash-can-outline me-2"></i>Trash
</router-link>
</div>
<h6 class="mt-4">Labels</h6>
<div class="mail-list mt-1">
<a href="javascript: void(0);">
<span class="mdi mdi-arrow-right-drop-circle text-info float-end"></span>Theme Support
</a>
<a href="javascript: void(0);">
<span class="mdi mdi-arrow-right-drop-circle text-warning float-end"></span>Freelance
</a>
<a href="javascript: void(0);">
<span class="mdi mdi-arrow-right-drop-circle text-primary float-end"></span>Social
</a>
<a href="javascript: void(0);">
<span class="mdi mdi-arrow-right-drop-circle text-danger float-end"></span>Friends
</a>
<a href="javascript: void(0);">
<span class="mdi mdi-arrow-right-drop-circle text-success float-end"></span>Family
</a>
</div>
<h6 class="mt-4">Chat</h6>
<div class="mt-2">
<a href="javascript: void(0);" class="d-flex">
<img
class="d-flex me-3 rounded-circle"
src="@/assets/images/users/avatar-2.jpg"
alt="Generic placeholder image"
height="36"
/>
<div class="flex-grow-1 chat-user-box">
<p class="user-title m-0">Scott Median</p>
<p class="text-muted">Hello</p>
</div>
</a>
<a href="javascript: void(0);" class="d-flex">
<img
class="d-flex me-3 rounded-circle"
src="@/assets/images/users/avatar-3.jpg"
alt="Generic placeholder image"
height="36"
/>
<div class="flex-grow-1 chat-user-box">
<p class="user-title m-0">Julian Rosa</p>
<p class="text-muted">What about our next..</p>
</div>
</a>
<a href="javascript: void(0);" class="d-flex">
<img
class="d-flex me-3 rounded-circle"
src="@/assets/images/users/avatar-4.jpg"
alt="Generic placeholder image"
height="36"
/>
<div class="flex-grow-1 chat-user-box">
<p class="user-title m-0">David Medina</p>
<p class="text-muted">Yeah everything is fine</p>
</div>
</a>
<a href="javascript: void(0);" class="d-flex">
<img
class="d-flex me-3 rounded-circle"
src="@/assets/images/users/avatar-6.jpg"
alt="Generic placeholder image"
height="36"
/>
<div class="flex-grow-1 chat-user-box">
<p class="user-title m-0">Jay Baker</p>
<p class="text-muted">Wow that's great</p>
</div>
</a>
</div>
<b-modal v-model="showModal" title="New Message" centered>
<form>
<div class="mb-3">
<input type="email" class="form-control" placeholder="To" />
</div>
<div class="mb-3">
<input type="text" class="form-control" placeholder="Subject" />
</div>
<div class="mb-3">
<ckeditor v-model="editorData" :editor="editor"></ckeditor>
</div>
</form>
<template v-slot:modal-footer>
<b-button variant="secondary" @click="showModal = false">Close</b-button>
<b-button variant="primary">
Send
<i class="fab fa-telegram-plane ms-1"></i>
</b-button>
</template>
</b-modal>
</div>
</template>

View File

@ -1,388 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Email-template-alert component
*/
export default {
page: {
title: "Alert Email",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Alert Email",
items: [
{
text: "Email Template",
href: "/",
},
{
text: "Alert Email",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<table
class="body-wrap"
style="
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 14px;
width: 100%;
background-color: transparent;
margin: 0;
"
>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
style="
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
"
valign="top"
></td>
<td
class="container"
width="600"
style="
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
display: block !important;
max-width: 600px !important;
clear: both !important;
margin: 0 auto;
"
valign="top"
>
<div
class="content"
style="
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 14px;
max-width: 600px;
display: block;
margin: 0 auto;
padding: 20px;
"
>
<table
class="main"
width="100%"
cellpadding="0"
cellspacing="0"
style="
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
box-sizing: border-box;
font-size: 14px;
border-radius: 7px;
background-color: #fff;
color: #495057;
margin: 0;
box-shadow: 0 0.75rem 1.5rem rgba(18, 38, 63, 0.03);
"
bgcolor="#fff"
>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="alert alert-warning"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 16px;
vertical-align: top;
color: #fff;
font-weight: 500;
text-align: center;
border-radius: 7px 7px 0 0;
background-color: #556ee6;
margin: 0;
padding: 20px;
"
align="center"
bgcolor="#71b6f9"
valign="top"
>
Warning: You're approaching your limit. Please upgrade.
</td>
</tr>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="content-wrap"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
padding: 20px;
"
valign="top"
>
<table
width="100%"
cellpadding="0"
cellspacing="0"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="content-block"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
padding: 0 0 20px;
"
valign="top"
>
You have
<strong
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
><span
style="
background-color: #f46a6a;
color: #ffffff;
padding: 5px 8px;
font-size: 12px;
border-radius: 4px;
"
>1 free report</span
></strong
>
remaining.
</td>
</tr>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="content-block"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
padding: 0 0 20px;
"
valign="top"
>
Add your credit card now to upgrade your account to
a premium plan to ensure you don't miss out on any
reports.
</td>
</tr>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="content-block"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
padding: 0 0 20px;
"
valign="top"
>
<a
href="#"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
color: #fff;
text-decoration: none;
line-height: 2em;
font-weight: bold;
text-align: center;
cursor: pointer;
display: inline-block;
border-radius: 5px;
text-transform: capitalize;
background-color: #34c38f;
margin: 0;
border-color: #34c38f;
border-style: solid;
border-width: 8px 16px;
"
>Upgrade my account</a
>
</td>
</tr>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="content-block"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
padding: 0 0 20px;
"
valign="top"
>
Thanks for choosing <b>Skote</b> Admin.
</td>
</tr>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="content-block"
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
padding: 0 0 20px;
"
valign="top"
>
<b>Skote</b>
<p>Support Team</p>
</td>
</tr>
<tr
style="
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
margin: 0;
"
>
<td
class="content-block"
style="
text-align: center;
font-family: 'Helvetica Neue', Helvetica, Arial,
sans-serif;
box-sizing: border-box;
font-size: 14px;
vertical-align: top;
margin: 0;
padding: 0;
"
valign="top"
>
© 2021 Skote
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<!-- end table -->
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,89 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Basic-email-template component
*/
export default {
page: {
title: "Basic Action",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Basic Action",
items: [
{
text: "Email Template",
href: "/",
},
{
text: "Basic Action",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<table class="body-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: transparent; margin: 0;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td>
<td class="container" width="600" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;" valign="top">
<div class="content" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;">
<table class="main" width="100%" cellpadding="0" cellspacing="0" itemprop="action" itemscope itemtype="http://schema.org/ConfirmAction" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; margin: 0; border: none;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; color: #495057; font-size: 14px; vertical-align: top; margin: 0;padding: 30px; box-shadow: 0 0.75rem 1.5rem rgba(18,38,63,.03); ;border-radius: 7px; background-color: #fff;" valign="top">
<meta itemprop="name" content="Confirm Email" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" />
<table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
Please confirm your email address by clicking the link below.
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
We may need to send you critical information about our service and it is important that we have an accurate email address.
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block" itemprop="handler" itemscope itemtype="http://schema.org/HttpActionHandler" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
<a href="#" itemprop="url" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #FFF; text-decoration: none; line-height: 2em; font-weight: bold; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; text-transform: capitalize; background-color: #34c38f; margin: 0; border-color: #34c38f; border-style: solid; border-width: 8px 16px;">Confirm
email address</a>
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
<b>Skote</b>
<p>Support Team</p>
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block" style="text-align: center;font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0;" valign="top">
© 2021 Skote
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<!-- end table -->
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,118 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Email-template-billing component
*/
export default {
page: {
title: "Billing Email",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Billing Email",
items: [
{
text: "Email Template",
href: "/",
},
{
text: "Billing Email",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<table class="body-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: transparent; margin: 0;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td>
<td class="container" width="600" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;" valign="top">
<div class="content" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;">
<table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; margin: 0; border: none;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-wrap aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;padding: 20px; color: #495057; border: 2px solid #1d1e3a;border-radius: 7px; background-color: #fff;" align="center" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
<h2 class="aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif; box-sizing: border-box; font-size: 24px; color: #000; line-height: 1.2em; font-weight: 400; text-align: center; margin: 40px 0 0;" align="center">Thanks for using <b style="font-weight: 600; text-transform: uppercase;">Skote</b>.</h2>
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top">
<table class="invoice" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; text-align: left; width: 80%; margin: 40px auto;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;" valign="top"><b>Company Name</b>
<br style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" />Invoice #6521
<br style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" />August 01 2017
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;" valign="top">
<table class="invoice-items" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; margin: 0;">
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" valign="top">BS-200 (1 Pc)
</td>
<td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" align="right" valign="top">$10.99
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" valign="top">BS-400 (2 Pcs)
</td>
<td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" align="right" valign="top">$60.00
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" valign="top">BS-1000 (1 Pc)
</td>
<td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" align="right" valign="top">$600.00
</td>
</tr>
<tr class="total" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="alignright" width="80%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;" align="right" valign="top">Total
</td>
<td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;" align="right" valign="top">$670.99
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top">
Skote Inc. 2896 Howell Rd, Russellville, AR, 72823
</td>
</tr>
<tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
<td class="content-block" style="text-align: center;font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0;" valign="top">
© 2021 Skote
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<!-- end table -->
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,47 +0,0 @@
<template>
<div>
<div class="btn-group me-2 mb-2 mb-sm-0">
<button type="button" class="btn btn-primary">
<i class="fa fa-inbox"></i>
</button>
<button type="button" class="btn btn-primary">
<i class="fa fa-exclamation-circle"></i>
</button>
<button type="button" class="btn btn-primary">
<i class="far fa-trash-alt"></i>
</button>
</div>
<b-dropdown class="btn-group me-2 mb-2 mb-sm-0" variant="primary">
<template v-slot:button-content>
<i class="fa fa-folder"></i>
<i class="mdi mdi-chevron-down ms-2"></i>
</template>
<a class="dropdown-item" href="javascript: void(0);">Updates</a>
<a class="dropdown-item" href="javascript: void(0);">Social</a>
<a class="dropdown-item" href="javascript: void(0);">Team Manage</a>
</b-dropdown>
<b-dropdown class="btn-group me-2 mb-2 mb-sm-0" variant="primary">
<template v-slot:button-content>
<i class="fa fa-tag"></i>
<i class="mdi mdi-chevron-down ms-2"></i>
</template>
<a class="dropdown-item" href="javascript: void(0);">Updates</a>
<a class="dropdown-item" href="javascript: void(0);">Social</a>
<a class="dropdown-item" href="javascript: void(0);">Team Manage</a>
</b-dropdown>
<b-dropdown class="btn-group me-2 mb-2 mb-sm-0" variant="primary">
<template v-slot:button-content>
More
<i class="mdi mdi-dots-vertical ms-2"></i>
</template>
<b-dropdown-item href="javascript: void(0);">Mark as Unread</b-dropdown-item>
<b-dropdown-item href="javascript: void(0);">Add to Tasks</b-dropdown-item>
<b-dropdown-item href="javascript: void(0);">Add Star</b-dropdown-item>
<b-dropdown-item href="javascript: void(0);">Mute</b-dropdown-item>
</b-dropdown>
</div>
</template>

File diff suppressed because it is too large Load Diff

View File

@ -1,304 +0,0 @@
<script>
import Datepicker from "vue3-datepicker";
import { ref } from 'vue'
import Switches from "vue-switches";
import Multiselect from "@vueform/multiselect";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Advanced-form component
*/
export default {
page: {
title: "Form Advanced",
meta: [{ name: "description", content: appConfig.description }],
},
components: {
Datepicker,
Switches,
Multiselect,
Layout,
PageHeader,
},
data() {
return {
picked: ref(new Date()),
title: "Form Advanced",
items: [
{
text: "Forms",
href: "/",
},
{
text: "Form Advanced",
active: true,
},
],
defaultdate: "",
autoClose: ref(new Date()),
daterange: ref(new Date()),
demoMonth: ref(new Date()),
demoYear: ref(new Date()),
time: ref(new Date()),
enabled: false,
enabled1: false,
enabled2: false,
enabled3: false,
enabled4: false,
enabled5: false,
small: false,
small1: false,
small2: false,
small3: false,
danger: false,
info: false,
success: false,
primary: false,
secondary: false,
customColor: false,
customColor1: false,
customColor2: false,
customColor3: false,
value: null,
value1: null,
options: [
"Alaska",
"Hawaii",
"California",
"Nevada",
"Oregon",
"Washington",
"Arizona",
"Colorado",
"Idaho",
"Montana",
"Nebraska",
"New Mexico",
"North Dakota",
"Utah",
"Wyoming",
"Alabama",
"Arkansas",
"Illinois",
"Iowa",
],
maxlen: "",
data: "",
option: "",
textarea: "",
defaultNull: null,
defaultspinval: 1,
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Select2</h4>
<p
class="card-title-desc"
>A mobile and touch friendly input spinner component for Bootstrap</p>
<div class="col-sm-8">
<label>Single Select</label>
<multiselect v-model="value" :options="options"></multiselect>
<label class="mt-3">Multiple Select</label>
<multiselect v-model="value1" :options="options" :mode="'multiple'"></multiselect>
</div>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Css Switch</h4>
<p class="card-title-desc">Here are a few types of switches.</p>
<switches v-model="enabled" type-bold="true" class="mb-0"></switches>
<switches v-model="enabled1" type-bold="false" color="warning" class="ms-1 mb-0"></switches>
<switches v-model="enabled2" type-bold="false" color="danger" class="ms-1 mb-0"></switches>
<switches v-model="enabled3" type-bold="false" color="primary" class="ms-1 mb-0"></switches>
<switches v-model="enabled4" type-bold="false" color="success" class="ms-1 mb-0"></switches>
<switches v-model="enabled5" type-bold="false" color="info" class="ms-1 mb-0"></switches>
<h5 class="mt-4 font-size-14 mb-4">Small switch</h5>
<div>
<switches v-model="small"></switches>
<switches v-model="small1" color="warning" class="ms-1"></switches>
<switches v-model="small2" color="danger" class="ms-1"></switches>
<switches v-model="small3" color="success" class="ms-1"></switches>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Date Picker</h4>
<p class="card-title-desc">Examples of bootstrap datepicker.</p>
<div>
<div class="mb-3">
<label>Default Date Picker</label>
<br />
<datepicker v-model="picked" :first-day-of-week="1" lang="en" confirm class="form-control"></datepicker>
</div>
<div class="mb-3">
<label>Auto close</label>
<br />
<datepicker v-model="autoClose" :first-day-of-week="1" lang="en" class="form-control"></datepicker>
</div>
<div class="mb-3">
<label>Date Range</label>
<br />
<datepicker class="form-control" v-model="daterange" range append-to-body lang="en" confirm></datepicker>
</div>
<div class="mb-3">
<label>Month View</label>
<br />
<datepicker
class="form-control"
v-model="demoMonth"
:startingView="'month'"
lang="en"
confirm
placeholder="Select Month"
></datepicker>
</div>
<div class="mb-3">
<label>Year View</label>
<br />
<datepicker
class="form-control"
v-model="demoYear"
:startingView="'year'"
lang="en"
confirm
placeholder="Select Year"
></datepicker>
</div>
<div class="mb-3">
<label>Time View</label>
<br />
<datepicker
class="form-control"
v-model="time"
:minimumView="'time'"
placeholder="hh:mm:ss a"
></datepicker>
</div>
</div>
</div>
</div>
</div>
<!-- End datepicker -->
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Bootstrap MaxLength</h4>
<p class="card-title-desc">Uses the HTML5 attribute "maxlength" to work.</p>
<label class="mb-1 fw-medium">Default usage</label>
<p
class="text-muted font-13"
>The badge will show up by default when the remaining chars are 10 or less:</p>
<input v-model="maxlen" type="text" class="form-control" :maxlength="10" />
<div v-if="maxlen" class="text-center">
<p
class="badge position-absolute"
:class="{ 'bg-success': maxlen.length !== 10,
'bg-danger': maxlen.length === 10 }"
>{{ maxlen.length }} / 10</p>
</div>
<div>
<label class="mb-1 mt-3 fw-medium">Threshold value</label>
<p class="text-muted font-13">
Do you want the badge to show up when there are 20 chars or less? Use the
<code>threshold</code>
option:
</p>
<input v-model="data" type="text" :maxlength="25" class="form-control" />
<div class="text-center">
<p
v-if="data"
class="badge position-absolute"
:class="{ 'bg-success': data.length !== 25,
'bg-danger': data.length === 25 }"
>{{ data.length }} / 25</p>
</div>
</div>
<div>
<label class="mb-1 mt-3 fw-medium">All the options</label>
<p class="text-muted font-13">
Please note: if the
<code>alwaysShow</code> option is enabled, the
<code>threshold</code> option
is
ignored.
</p>
<input v-model="option" type="text" class="form-control" :maxlength="25" />
<div class="text-center">
<p
v-if="option"
class="badge position-absolute"
:class="{ 'bg-success': option.length !== 25,
'bg-danger': option.length === 25 }"
>
You typed
{{ option.length }} out of 25 chars available.
</p>
</div>
</div>
<div>
<label class="mb-1 mt-3 fw-medium">Textarea</label>
<p
class="text-muted font-13"
>Bootstrap maxlength supports textarea as well as inputs. Even on old IE.</p>
<textarea
v-model="textarea"
class="form-control"
:maxlength="225"
rows="3"
placeholder="This textarea has a limit of 225 chars."
></textarea>
<div class="text-center">
<p
v-if="textarea"
class="badge position-absolute"
:class="{ 'bg-success': textarea.length !== 225,
'bg-danger': textarea.length === 225 }"
>
{{ textarea.length }} /
225
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,77 +0,0 @@
<script>
import CKEditor from "@ckeditor/ckeditor5-vue";
import ClassicEditor from "@ckeditor/ckeditor5-build-classic";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Editors component
*/
export default {
page: {
title: "Form Editors",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader, ckeditor: CKEditor.component },
data() {
return {
title: "Form Editors",
items: [
{
text: "Forms",
href: "/",
},
{
text: "Form Editors",
active: true,
},
],
editor: ClassicEditor,
editorData:
"<h3>Hello World!</h3><h5><b>This is an simple editable area.</b></h5>",
content: "<h1>Some initial content</h1>",
plugins: [
"advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker",
"searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking",
"save table contextmenu directionality emoticons template paste textcolor",
],
toolbar:
"insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | l ink image | print preview media fullpage | forecolor backcolor emoticons",
options: {
height: 300,
style_formats: [
{ title: "Bold text", inline: "b" },
{ title: "Red text", inline: "span", styles: { color: "#ff0000" } },
{ title: "Red header", block: "h1", styles: { color: "#ff0000" } },
{ title: "Example 1", inline: "span", classes: "example1" },
{ title: "Example 2", inline: "span", classes: "example2" },
{ title: "Table styles" },
{ title: "Table row 1", selector: "tr", classes: "tablerow1" },
],
},
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">CK Editor</h4>
<p class="card-title-desc">Super simple wysiwyg editor on Bootstrap</p>
<!-- Editor -->
<ckeditor v-model="editorData" :editor="editor"></ckeditor>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,916 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Form-element component
*/
export default {
page: {
title: "Form Elements",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Form Elements",
items: [
{
text: "Forms",
href: "/",
},
{
text: "Form Elements",
active: true,
},
],
selectedprimary: "primary",
selectedinfo: "info",
selecteddanger: "danger",
selectedwarning: "warning",
selectedsuccess: "success",
selectedToogle: "A",
selectedRadioDefault: "a",
selectedRadioDefault1: "a",
selectedRadioDefault2: "a",
selectedRadioDefault3: "a",
selectedRadioDefault4: "a",
selectedRadioDefault5: "a",
selectedRadioDefault6: "a",
selectedRadioDefault7: "a",
selectedRadioDefault8: "a",
selectedRadioDefault9: "a",
selectedRadioDefault10: "a",
selectedRadioDefault11: "a",
selectedRadioDefault12: "a",
selectedRadioDefault13: "a",
selectedRadioDefault14: "a",
status: "accepted",
rightcheck: "accepted",
primarycheck: "accepted",
successcheck: "accepted",
infocheck: "accepted",
warningcheck: "accepted",
dangercheck: "accepted",
primaryoutlinecheck: "accepted",
infooutlinecheck: "accepted",
warningoutlinecheck: "accepted",
dangeroutlinecheck: "accepted",
checked: true,
checkedf: false,
smchecked: true,
lgchecked: true,
selectedSwitch: [], // Must be an array reference!
optionsSwtich: [
{ text: 'Red', value: 'red' },
{ text: 'Green', value: 'green' },
{ text: 'Yellow (disabled)', value: 'yellow', disabled: true },
{ text: 'Blue', value: 'blue' }
]
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Textual inputs</h4>
<p class="card-title-desc">
Here are examples of
<code>.form-control</code> applied to each textual HTML5
<code>&lt;input&gt;</code>
<code>type</code>.
</p>
<div class="row">
<div class="col-12">
<form class="form-horizontal" role="form">
<b-form-group
class="mb-3"
id="example text"
label-cols-lg="2"
label="Text"
label-for="text"
>
<b-form-input
for="text"
value="Artisanal kale"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-search"
label-cols-sm="2"
label-cols-lg="2"
label="Search"
label-for="search"
>
<b-form-input
id="search"
value="How do I shoot web"
type="search"
name="search"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-email"
label-cols-sm="2"
label-cols-lg="2"
label="Email"
label-for="email"
>
<b-form-input
id="email"
value="bootstrap@example.com"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-url"
label-cols-sm="2"
label-cols-lg="2"
label="URL"
label-for="url"
>
<b-form-input
id="url"
value="https://getbootstrap.com"
type="url"
name="url"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-tel"
label-cols-sm="2"
label-cols-lg="2"
label="Telephone"
label-for="tele"
>
<b-form-input
id="tele"
value="1-(555)-555-5555"
type="tel"
name="tel"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-password"
label-cols-sm="2"
label-cols-lg="2"
label="Password"
label-for="pwd"
>
<b-form-input
id="pwd"
type="password"
value="password"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-number"
label-cols-sm="2"
label-cols-lg="2"
label="Number"
label-for="number"
>
<b-form-input
id="number"
value="42"
type="number"
name="number"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-date-time"
label-cols-sm="2"
label-cols-lg="2"
label="Date and time"
label-for="date-time"
>
<b-form-input
id="date-time"
value="2019-08-19T13:45:00"
type="datetime-local"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-date"
label-cols-sm="2"
label-cols-lg="2"
label="Date"
label-for="date"
>
<b-form-input
id="date"
value="2019-08-19"
type="date"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-month"
label-cols-sm="2"
label-cols-lg="2"
label="Month"
label-for="month"
>
<b-form-input
id="month"
value="2019-08"
type="month"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-week"
label-cols-sm="2"
label-cols-lg="2"
label="Week"
label-for="week"
>
<b-form-input
id="week"
value="2019-W33"
type="week"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-time"
label-cols-sm="2"
label-cols-lg="2"
label="Time"
label-for="time"
>
<b-form-input
id="time"
value="13:45:00"
type="time"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-3"
id="example-color"
label-cols-sm="2"
label-cols-lg="2"
label="Color"
label-for="color"
>
<b-form-input
class="form-control-color mw-100"
id="color"
type="color"
name="color"
value="#556ee6"
></b-form-input>
</b-form-group>
<div class="mb-3 row">
<label class="col-md-2 col-form-label">Select</label>
<div class="col-md-10">
<select class="form-control">
<option>Select</option>
<option>Large select</option>
<option>Small select</option>
</select>
</div>
</div>
<div class="row">
<label for="exampleDataList" class="col-md-2 col-form-label"
>Datalists</label
>
<div class="col-md-10">
<input
class="form-control"
list="datalistOptions"
id="exampleDataList"
placeholder="Type to search..."
/>
<datalist id="datalistOptions">
<option value="San Francisco"></option>
<option value="New York"></option>
<option value="Seattle"></option>
<option value="Los Angeles"></option>
<option value="Chicago"></option>
</datalist>
</div>
</div>
</form>
</div>
</div>
<!-- end row -->
</div>
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Sizing</h4>
<p class="card-title-desc">
Set heights using size like
<code>lg</code> and <code>sm</code>.
</p>
<div>
<div class="mb-4">
<b-form-input
id="input-md"
placeholder="Default input"
></b-form-input>
</div>
<div class="mb-4">
<b-form-input
id="input-small"
size="sm"
placeholder=".form-control-sm"
></b-form-input>
</div>
<div class="mb-4">
<b-form-input
id="input-lg"
size="lg"
placeholder=".form-control-lg"
></b-form-input>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Range Inputs</h4>
<p class="card-title-desc">
Set horizontally scrollable range inputs using
<code>.form-control-range</code>.
</p>
<div>
<h5 class="font-size-14">Example</h5>
<input
id="formControlRange"
type="range"
class="form-control-range form-range"
/>
</div>
<div class="mt-4">
<h5 class="font-size-14">Custom Range</h5>
<b-form-input
id="custom-range"
type="range"
class="form-range"
></b-form-input>
<b-form-input
id="customRange2"
class="mt-4 form-range"
type="range"
min="0"
max="5"
></b-form-input>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Checkboxes</h4>
<div class="row">
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14 mb-4">
<i class="mdi mdi-arrow-right text-primary me-1"></i>
Default Checkboxes
</h5>
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="not_accepted"
unchecked-value="not_accepted"
>
Default checkbox
</b-form-checkbox>
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Default checkbox Right
</b-form-checkbox>
</div>
</div>
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14 mb-4">
<i class="mdi mdi-arrow-right text-primary me-1"></i> Form
Checkboxes Right
</h5>
<div class="form-check-right">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="not_accepted"
unchecked-value="not_accepted"
>
Default checkbox
</b-form-checkbox>
</div>
<br/>
<div class="form-check-right">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Default checkbox Right
</b-form-checkbox>
</div>
</div>
</div>
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14">
<i class="mdi mdi-arrow-right text-primary me-1"></i> Custom
Checkboxes colors
</h5>
<p class="sub-header mb-4">
Add class
<code>.form-check-*</code> for a color Checkboxes
</p>
<div>
<div class="form-check-primary mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Primary
</b-form-checkbox>
</div>
<div class="form-check-success mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Success
</b-form-checkbox>
</div>
<div class="form-check-info mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Info
</b-form-checkbox>
</div>
<div class="form-check-warning mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Warning
</b-form-checkbox>
</div>
<div class="form-check-danger mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Danger
</b-form-checkbox>
</div>
</div>
</div>
</div>
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14">
<i class="mdi mdi-arrow-right text-primary me-1"></i> Custom
Checkboxes Outline
</h5>
<p class="sub-header mb-4">
Add class
<code>.form-checkbox-outline</code> &amp;
<code>.form-check-*</code> for a color Checkboxes
</p>
<div>
<div class="form-checkbox-outline form-check-primary mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Outline Primary
</b-form-checkbox>
</div>
<div class="form-checkbox-outline form-check-success mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Outline Success
</b-form-checkbox>
</div>
<div class="form-checkbox-outline form-check-info mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Outline Info
</b-form-checkbox>
</div>
<div class="form-checkbox-outline form-check-warning mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Outline Warning
</b-form-checkbox>
</div>
<div class="form-checkbox-outline form-check-danger mb-3">
<b-form-checkbox
id="checkbox-1"
v-model="status"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Checkbox Outline Danger
</b-form-checkbox>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Radios</h4>
<div class="row">
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14 mb-4">Default Radios</h5>
<b-form-group v-slot="{ ariaDescribedby1 }">
<b-form-radio v-model="selectedRadioDefault" :aria-describedby="ariaDescribedby1" name="some-radios1" value="b">Default Radio</b-form-radio>
<b-form-radio v-model="selectedRadioDefault" :aria-describedby="ariaDescribedby1" name="some-radios1" value="a">Default Radio Right</b-form-radio>
</b-form-group>
</div>
</div>
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14 mb-4">Form Radios Right</h5>
<div>
<b-form-group class="form-check-right" v-slot="{ ariaDescribedby }">
<b-form-radio v-model="selectedRadioDefault1" :aria-describedby="ariaDescribedby" name="some-radios2" value="b">Default Radio</b-form-radio>
<b-form-radio v-model="selectedRadioDefault1" :aria-describedby="ariaDescribedby" name="some-radios2" value="a">Default Radio Right</b-form-radio>
</b-form-group>
</div>
</div>
</div>
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14">
<i class="mdi mdi-arrow-right text-primary me-1"></i> Form
Radio colors
</h5>
<p class="sub-header mb-4">
Add class <code>.form-radio-* </code> for a color Radios
</p>
<div>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-primary">
<b-form-radio v-model="selectedRadioDefault2" :aria-describedby="ariaDescribedby" name="some-radios3" value="a">Radio Primary</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-success">
<b-form-radio v-model="selectedRadioDefault3" :aria-describedby="ariaDescribedby" name="some-radios4" value="a">Radio Success</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-info">
<b-form-radio v-model="selectedRadioDefault4" :aria-describedby="ariaDescribedby" name="some-radios5" value="a">Radio Info</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-warning">
<b-form-radio v-model="selectedRadioDefault5" :aria-describedby="ariaDescribedby" name="some-radios6" value="a">Radio Warning</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-danger">
<b-form-radio v-model="selectedRadioDefault6" :aria-describedby="ariaDescribedby" name="some-radios7" value="a">Radio Danger</b-form-radio>
</b-form-group>
</div>
</div>
</div>
<div class="col-xl-3 col-sm-6">
<div class="mt-4">
<h5 class="font-size-14">
<i class="mdi mdi-arrow-right text-primary me-1"></i> Form
Radio Outline
</h5>
<p class="sub-header mb-4">
Add class <code>form-radio-outline</code> &amp;
<code>.form-radio-* </code> for a color Checkboxes
</p>
<div>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-outline form-radio-primary">
<b-form-radio v-model="selectedRadioDefault7" :aria-describedby="ariaDescribedby" name="some-radios8" value="a">Radio Outline Primary</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-outline form-radio-success">
<b-form-radio v-model="selectedRadioDefault8" :aria-describedby="ariaDescribedby" name="some-radios9" value="a">Radio Outline Success</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-outline form-radio-info">
<b-form-radio v-model="selectedRadioDefault9" :aria-describedby="ariaDescribedby" name="some-radios10" value="a">Radio Outline Info</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-outline form-radio-warning">
<b-form-radio v-model="selectedRadioDefault10" :aria-describedby="ariaDescribedby" name="some-radios11" value="a">Radio Outline Warning</b-form-radio>
</b-form-group>
<b-form-group v-slot="{ ariaDescribedby }" class="form-radio-outline form-radio-danger">
<b-form-radio v-model="selectedRadioDefault11" :aria-describedby="ariaDescribedby" name="some-radios12" value="a">Radio Outline Danger</b-form-radio>
</b-form-group>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Switches</h4>
<p class="card-title-desc">
A switch has the markup of a custom checkbox but uses the
<code>.custom-switch</code> class to render a toggle switch.
Switches also support the <code>disabled</code> attribute.
</p>
<div class="row">
<div class="col-sm-6">
<div>
<h5 class="font-size-14 mb-3">Switch examples</h5>
<div class="mb-3">
<b-form-checkbox v-model="checkedf" name="check-button" switch>
Default switch checkbox input <b>(Checked: {{ checkedf }})</b>
</b-form-checkbox>
</div>
<div class="mb-3">
<b-form-checkbox v-model="checked" name="check-button" switch>
Checked switch checkbox input <b>(Checked: {{ checked }})</b>
</b-form-checkbox>
</div>
<b-form-group
label="Inline switch style checkboxes"
v-slot="{ ariaDescribedby }"
>
<b-form-checkbox-group
v-model="selectedSwitch"
:options="optionsSwtich"
:aria-describedby="ariaDescribedby"
switches
></b-form-checkbox-group>
</b-form-group>
</div>
</div>
<div class="col-sm-6">
<div class="mt-4 mt-sm-0">
<h5 class="font-size-14 mb-3">Switch sizes</h5>
<b-form-checkbox switch size="sm">Small</b-form-checkbox>
<b-form-checkbox switch>Default</b-form-checkbox>
<b-form-checkbox switch size="lg">Large</b-form-checkbox>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">File browser</h4>
<div>
<h5 class="font-size-14">
<i class="mdi mdi-arrow-right text-primary"></i> Default file
input
</h5>
<div class="row">
<div class="col-sm-6">
<div class="mt-3">
<label for="formFile" class="form-label"
>Default file input example</label
>
<input class="form-control" type="file" id="formFile" />
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-sm-6">
<div class="mt-4">
<div>
<label for="formFileSm" class="form-label"
>Small file input example</label
>
<input
class="form-control form-control-sm"
id="formFileSm"
type="file"
/>
</div>
</div>
</div>
<!-- end col -->
<div class="col-sm-6">
<div class="mt-4">
<div>
<label for="formFileLg" class="form-label"
>Large file input example</label
>
<input
class="form-control form-control-lg"
id="formFileLg"
type="file"
/>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<div class="mt-4 pt-2">
<h5 class="font-size-14 mb-0">
<i class="mdi mdi-arrow-right text-primary"></i> Custom file
input
</h5>
</div>
<div class="row">
<div class="col-sm-6">
<div class="mt-4">
<div>
<label class="form-label">With Label</label>
<div class="input-group mb-3">
<label class="input-group-text" for="inputGroupFile01"
>Upload</label
>
<input
type="file"
class="form-control"
id="inputGroupFile01"
/>
</div>
<div class="input-group">
<input
type="file"
class="form-control"
id="inputGroupFile02"
/>
<label class="input-group-text" for="inputGroupFile02"
>Upload</label
>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="mt-4">
<div>
<label class="form-label">With Button</label>
<div class="input-group mb-3">
<button
class="btn btn-primary"
type="button"
id="inputGroupFileAddon03"
>
Button
</button>
<input
type="file"
class="form-control"
id="inputGroupFile03"
aria-describedby="inputGroupFileAddon03"
aria-label="Upload"
/>
</div>
<div class="input-group">
<input
type="file"
class="form-control"
id="inputGroupFile04"
aria-describedby="inputGroupFileAddon04"
aria-label="Upload"
/>
<button
class="btn btn-primary"
type="button"
id="inputGroupFileAddon04"
>
Button
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,279 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Form Layouts component
*/
export default {
page: {
title: "Form Layouts",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Form Layouts",
items: [
{
text: "Forms",
href: "/",
},
{
text: "Form Layouts",
active: true,
},
],
selected: null
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Form grid layout</h4>
<b-form>
<b-form-group
class="mb-3"
label="First name"
label-for="formrow-firstname-input"
>
<b-form-input
id="formrow-firstname-input"
type="text"
></b-form-input>
</b-form-group>
<div class="row">
<div class="col-md-6">
<b-form-group
class="mb-3"
label="Email"
label-for="formrow-email-input"
>
<b-form-input
id="formrow-email-input"
type="email"
></b-form-input>
</b-form-group>
</div>
<div class="col-md-6">
<div class="form-group">
<b-form-group
class="mb-3"
label="Password"
label-for="formrow-password-input"
>
<b-form-input
id="formrow-password-input"
type="password"
></b-form-input>
</b-form-group>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4">
<b-form-group
class="mb-3"
label="City"
label-for="formrow-inputCity"
>
<b-form-input
id="formrow-inputCity"
type="text"
></b-form-input>
</b-form-group>
</div>
<div class="col-lg-4">
<b-form-group
class="mb-3 form-label"
id="input-group-1"
label="State"
label-for="formrow-inputState"
>
<b-form-select
class="form-select"
id="formrow-inputState"
:options="['Choose...', '...']"
type="text"
></b-form-select>
</b-form-group>
</div>
<div class="col-lg-4">
<b-form-group
class="mb-3"
label="Zip"
label-for="formrow-inputZip"
>
<b-form-input
id="formrow-inputZip"
type="text"
></b-form-input>
</b-form-group>
</div>
</div>
<div class="mb-3">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="gridCheck"
/>
<label class="form-check-label" for="gridCheck">
Check me out
</label>
</div>
</div>
<div>
<b-button variant="primary">Submit</b-button>
</div>
</b-form>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Horizontal form layout</h4>
<b-form>
<b-form-group
class="mb-3"
label="First name"
label-for="horizontal-firstname-input"
label-cols-sm="3"
>
<b-form-input
id="horizontal-firstname-input"
type="text"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-4"
label="Email"
label-for="horizontal-email-input"
label-cols-sm="3"
>
<b-form-input
id="horizontal-email-input"
type="email"
></b-form-input>
</b-form-group>
<b-form-group
class="mb-4"
label="Password"
label-for="horizontal-password-input"
label-cols-sm="3"
>
<b-form-input
id="horizontal-password-input"
type="password"
></b-form-input>
</b-form-group>
<div class="row justify-content-end">
<div class="col-sm-9">
<div class="form-check mb-4">
<input
class="form-check-input"
type="checkbox"
id="horizontalLayout-Check"
/>
<label
class="form-check-label"
for="horizontalLayout-Check"
>
Remember me
</label>
</div>
<div>
<b-button variant="primary">Submit</b-button>
</div>
</div>
</div>
</b-form>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h5 class="card-title mb-4">Inline forms layout</h5>
<b-form inline class="row gy-2 gx-3 align-items-center">
<div class="col-sm-auto">
<label class="visually-hidden" for="inlineFormInputName2"
>Name</label
>
<b-input
id="inlineFormInputName2"
class="mb-3"
placeholder="Jane Doe"
></b-input>
</div>
<div class="col-sm-auto">
<label class="sr-only" for="inlineFormemail2">Email</label>
<b-input-group prepend="@" class="mb-3">
<b-input
type="email"
id="inlineFormemail2"
placeholder="Enter Email"
></b-input>
</b-input-group>
</div>
<div class="col-sm-auto pt-1">
<label class="visually-hidden" for="autoSizingSelect"
>Preference</label
>
<b-form-select class="form-select mb-3" v-model="selected">
<b-form-select-option :value="null"
>Choose...</b-form-select-option
>
<b-form-select-option value="a">One</b-form-select-option>
<b-form-select-option value="b">Two</b-form-select-option>
<b-form-select-option value="b">Thress</b-form-select-option>
</b-form-select>
</div>
<div class="col-sm-auto">
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="autoSizingCheck"
/>
<label class="form-check-label" for="autoSizingCheck">
Remember me
</label>
</div>
</div>
<div class="col-sm-auto">
<b-button variant="primary" class="w-md">Submit</b-button>
</div>
</b-form>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,111 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Form-mask component
*/
export default {
page: {
title: "Form Mask",
meta: [{ name: "description", content: appConfig.description }]
},
components: {
Layout,
PageHeader
},
data() {
return {
title: "Form Mask",
items: [
{
text: "Forms",
href: "/"
},
{
text: "Form Mask",
active: true
}
],
digit: "",
zipcode: "",
crazyzip: "",
money: "",
date: "",
hour: "",
datetime: "",
ipaddress: "",
cnpj: "",
cpf: "",
celphone: "",
ustelephone: "",
areacode: "",
telephone: ""
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Example</h4>
<form>
<div class="row">
<div class="col-lg-6">
<div>
<div>
<label for="regexp-mask" class="form-label">Dynamic mask</label>
<input type="text" v-maska="['# cm', '#.# cm', '#.## cm']" class="form-control" id="regexp-mask">
<div class="text-muted">["# cm", "#.# cm", "#.## cm"]</div>
</div>
<div class="mt-4">
<label for="phone-mask" class="form-label">Phone with code</label>
<input type="text" v-maska="['+1 (###) ##-##-##', '+1 (###) ###-##-##']" class="form-control" id="phone-mask">
<div class="text-muted">+1 (###) ###-####</div>
</div>
<div class="mt-4">
<label for="number-mask" class="form-label">Credit card</label>
<input type="text" v-maska="'#### #### #### ####'" class="form-control" id="number-mask">
<div class="text-muted">#### #### #### ####</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-6">
<div class="mt-4 mt-lg-0">
<div>
<label for="date-mask" class="form-label">Date</label>
<input type="text" v-maska="'##/##/####'" class="form-control" id="date-mask">
<div class="text-muted">##/##/####</div>
</div>
<div class="mt-4">
<label class="form-label">Hex color</label>
<input type="text" v-maska="{ mask: ['!#HHHHHH', '!#HHHHHH-HH'], tokens: { 'H': { pattern: /[0-9a-fA-F]/, uppercase: true }}}" class="form-control" id="dynamic-mask">
<div class="text-muted">!#HHHHHH</div>
</div>
<div class="mt-4">
<label class="form-label">CPF/CNPJ</label>
<input type="text" v-maska="['###.###.###-##', '##.###.###/####-##']" class="form-control" id="currency-mask">
<div class="text-muted">["###.###.###-##", "##.###.###/####-##"]</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</form>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,265 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Form-repeater Component
*/
export default {
page: {
title: "Form Repeater",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Form Repeater",
items: [
{
text: "Forms",
href: "/",
},
{
text: "Form Repeater",
active: true,
},
],
fields: [{ id: 1 }],
phoneData: [{ id: 1 }],
};
},
methods: {
/**
* Push the row in form
*/
AddformData() {
this.fields.push({ name: "", email: "", subject: "", message: "" });
},
/**
* Delete the row
*/
deleteRow(index) {
if (confirm("Are you sure you want to delete this element?"))
this.fields.splice(index, 1);
},
/**
* Add the phone number in form
*/
AddPhoneNo() {
this.phoneData.push({ phone: "" });
},
/**
* Delete the row from form
*/
deletePhone(index) {
this.phoneData.splice(index, 1);
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Example</h4>
<form class="repeater" enctype="multipart/form-data">
<div>
<div
v-for="(field, index) in fields"
:key="field.id"
class="row"
>
<div class="mb-3 col-lg-2">
<label for="name">Name</label>
<input
id="name"
v-model="field.name"
type="text"
name="untyped-input"
class="form-control"
/>
</div>
<div class="mb-3 col-lg-2">
<label for="email">Email</label>
<input
id="email"
v-model="field.email"
type="email"
class="form-control"
/>
</div>
<div class="mb-3 col-lg-2">
<label for="subject">Subject</label>
<input
id="subject"
v-model="field.subject"
type="text"
class="form-control"
/>
</div>
<div class="mb-3 col-lg-2">
<label for="resume">Resume</label>
<input id="resume" type="file" class="form-control-file" />
</div>
<div class="mb-3 col-lg-2">
<label for="message">Message</label>
<textarea
id="message"
v-model="field.message"
class="form-control"
></textarea>
</div>
<div class="col-lg-2 align-self-center">
<div class="d-grid">
<input
type="button"
class="btn btn-primary btn-block"
value="Delete"
@click="deleteRow(index)"
/>
</div>
</div>
</div>
</div>
<input
type="button"
class="btn btn-success mt-3 mt-lg-0"
value="Add"
@click="AddformData"
/>
</form>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Nested</h4>
<form class="outer-repeater">
<div class="outer">
<div class="outer">
<div class="mb-3">
<label for="formname">Name :</label>
<input
id="formname"
type="text"
class="form-control"
placeholder="Enter your Name..."
/>
</div>
<div class="mb-3">
<label for="formemail">Email :</label>
<input
id="formemail"
type="email"
class="form-control"
placeholder="Enter your Email..."
/>
</div>
<div class="inner-repeater mb-4">
<div class="inner mb-3">
<label>Phone no :</label>
<div
v-for="(data, index) in phoneData"
:key="data.id"
class="inner mb-3 row"
>
<div class="col-md-10 col-8">
<input
v-model="data.phone"
type="text"
class="inner form-control"
placeholder="Enter your phone no..."
/>
</div>
<div class="col-md-2 col-4">
<div class="d-grid">
<input
type="button"
class="btn btn-primary btn-block inner"
value="Delete"
@click="deletePhone(index)"
/>
</div>
</div>
</div>
</div>
<input
type="button"
class="btn btn-success inner"
value="Add Number"
@click="AddPhoneNo"
/>
</div>
<div class="mb-3">
<label class="d-block mb-3">Gender :</label>
<div class="form-check form-check-inline">
<input
class="form-check-input"
type="radio"
name="gender"
id="inlineRadio1"
value="option1"
/>
<label class="form-check-label" for="inlineRadio1"
>Male</label
>
</div>
<div class="form-check form-check-inline">
<input
class="form-check-input"
type="radio"
name="gender"
id="inlineRadio2"
value="option2"
/>
<label class="form-check-label" for="inlineRadio2"
>Female</label
>
</div>
</div>
<div class="mb-3">
<label for="formmessage">Message :</label>
<textarea
id="formmessage"
class="form-control"
rows="3"
></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,72 +0,0 @@
<script>
import DropZone from "@/components/widgets/dropZone";
import { ref } from "vue";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* File Uploads component
*/
export default {
page: {
title: "Form File Upload",
meta: [{ name: "description", content: appConfig.description }]
},
components: { DropZone, Layout, PageHeader },
setup() {
let dropzoneFile = ref("");
const drop = (e) => {
dropzoneFile.value = e.dataTransfer.files[0];
};
const selectedFile = () => {
dropzoneFile.value = document.querySelector(".dropzoneFile").files[0];
};
return { dropzoneFile, drop, selectedFile };
},
data() {
return {
title: "Form File Upload",
items: [
{
text: "Forms",
href: "/"
},
{
text: "Form File Upload",
active: true
}
],
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Dropzone</h4>
<p
class="card-title-desc"
>DropzoneJS is an open source library that provides dragndrop file uploads with image previews.</p>
<!-- file upload -->
<DropZone @drop.prevent="drop" @change="selectedFile" />
<span class="file-info">File: {{ dropzoneFile.name }}</span>
<div class="text-center mt-4">
<button type="button" class="btn btn-primary">Send Files</button>
</div>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,906 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import useVuelidate from "@vuelidate/core";
import {
required,
helpers,
email,
minLength,
sameAs,
maxLength,
minValue,
maxValue,
numeric,
url,
alphaNum,
} from "@vuelidate/validators";
/**
* Form validation component
*/
export default {
page: {
title: "Form Validation",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Form Validation",
items: [
{
text: "Forms",
href: "/",
},
{
text: "Form Validation",
active: true,
},
],
form: {
fname: "",
lname: "",
city: "",
state: "",
zipcode: "",
},
tooltipform: {
fname: "",
lname: "",
username: "",
city: "",
state: "",
},
range: {
minlen: "",
maxlength: "",
between: "",
minval: "",
maxval: "",
rangeval: "",
expr: "",
},
typeform: {
name: "",
password: "",
confirmPassword: "",
email: "",
url: "",
digit: "",
number: "",
alphanum: "",
textarea: "",
},
submitted: false,
submitform: false,
submit: false,
typesubmit: false,
};
},
setup() {
return { v$: useVuelidate() };
},
validations: {
form: {
fname: {
required: helpers.withMessage("First Name is required", required),
},
lname: {
required: helpers.withMessage("Last Name is required", required),
},
city: { required: helpers.withMessage("City is required", required) },
state: { required: helpers.withMessage("State is required", required) },
zipcode: {
required: helpers.withMessage("Zipcode is required", required),
},
},
tooltipform: {
fname: { required: helpers.withMessage("Fname is required", required) },
lname: { required: helpers.withMessage("Lname is required", required) },
username: {
required: helpers.withMessage("Username is required", required),
},
city: { required: helpers.withMessage("City is required", required) },
state: { required: helpers.withMessage("State is required", required) },
},
range: {
minlen: {
required: helpers.withMessage("Minlen is required", required),
minLength: minLength(6),
},
maxlength: {
required: helpers.withMessage("Maxlength is required", required),
maxLength: maxLength(6),
},
between: {
required: helpers.withMessage("Between is required", required),
minLength: minLength(5),
maxLength: maxLength(10),
},
minval: {
required: helpers.withMessage("Minval is required", required),
minValue: minValue(6),
},
maxval: {
required: helpers.withMessage("Maxval is required", required),
maxValue: maxValue(6),
},
rangeval: {
required: helpers.withMessage("Rangeval is required", required),
minValue: minValue(6),
maxValue: maxValue(100),
},
expr: { required: helpers.withMessage("Expr is required", required) },
},
typeform: {
name: { required: helpers.withMessage("Name is required", required) },
password: {
required: helpers.withMessage("Password is required", required),
minLength: minLength(6),
},
confirmPassword: {
required: helpers.withMessage("ConfirmPassword is required", required),
sameAsPassword: sameAs("password"),
},
email: {
required: helpers.withMessage("Email is required", required),
email,
},
url: { required: helpers.withMessage("Url is required", required), url },
digit: {
required: helpers.withMessage("Digit is required", required),
numeric,
},
number: {
required: helpers.withMessage("Number is required", required),
numeric,
},
alphanum: {
required: helpers.withMessage("Alphanum is required", required),
alphaNum,
},
textarea: {
required: helpers.withMessage("Textarea is required", required),
},
},
},
methods: {
// eslint-disable-next-line no-unused-vars
formSubmit(e) {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
},
tooltipForm() {
this.submitform = true;
this.v$.$touch();
},
/**
* Range validation form submit
*/
// eslint-disable-next-line no-unused-vars
rangeform(e) {
this.submit = true;
// stop here if form is invalid
this.v$.$touch();
},
/**
* Validation type submit
*/
// eslint-disable-next-line no-unused-vars
typeForm(e) {
this.typesubmit = true;
// stop here if form is invalid
this.v$.$touch();
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Bootstrap Validation - Normal</h4>
<p class="card-title-desc">
Provide valuable, actionable feedback to your users with HTML5
form validationavailable in all our supported browsers.
</p>
<form class="needs-validation" @submit.prevent="formSubmit">
<div class="row">
<div class="col-md-6">
<div class="mb-3">
<label for="validationCustom01">First name</label>
<input
id="validationCustom01"
v-model="form.fname"
type="text"
class="form-control"
placeholder="First name"
:class="{
'is-invalid': submitted && v$.form.fname.$error,
}"
/>
<div
v-if="submitted && v$.form.fname.$error"
class="invalid-feedback"
>
<span v-if="v$.form.fname.required.$message">{{
v$.form.fname.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-md-6">
<div class="mb-3">
<label for="validationCustom02">Last name</label>
<input
id="validationCustom02"
v-model="form.lname"
type="text"
class="form-control"
placeholder="Last name"
:class="{
'is-invalid': submitted && v$.form.lname.$error,
}"
/>
<div
v-if="submitted && v$.form.lname.$error"
class="invalid-feedback"
>
<span v-if="v$.form.lname.required.$message">{{
v$.form.lname.required.$message
}}</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="mb-3">
<label for="validationCustom03">City</label>
<input
id="validationCustom03"
v-model="form.city"
type="text"
class="form-control"
placeholder="City"
:class="{
'is-invalid': submitted && v$.form.city.$error,
}"
/>
<div
v-if="submitted && v$.form.city.$error"
class="invalid-feedback"
>
<span v-if="v$.form.city.required.$message">{{
v$.form.city.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="mb-3">
<label for="validationCustom04">State</label>
<input
id="validationCustom04"
v-model="form.state"
type="text"
class="form-control"
placeholder="State"
:class="{
'is-invalid': submitted && v$.form.state.$error,
}"
/>
<div
v-if="submitted && v$.form.state.$error"
class="invalid-feedback"
>
<span v-if="v$.form.state.required.$message">{{
v$.form.state.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="mb-3">
<label for="validationCustom05">Zip</label>
<input
id="validationCustom05"
v-model="form.zipcode"
type="text"
class="form-control"
placeholder="Zip"
:class="{
'is-invalid': submitted && v$.form.zipcode.$error,
}"
/>
<div
v-if="submitted && v$.form.zipcode.$error"
class="invalid-feedback"
>
<span v-if="v$.form.zipcode.required.$message">{{
v$.form.zipcode.required.$message
}}</span>
</div>
</div>
</div>
</div>
<div class="form-check mb-3">
<input
class="form-check-input"
type="checkbox"
id="invalidCheck"
required=""
/>
<label class="form-check-label" for="invalidCheck">
Agree to terms and conditions
</label>
<div class="invalid-feedback">
You must agree before submitting.
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
</div>
</div>
<!-- end card -->
</div>
<!-- end col -->
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Bootstrap Validation (Tooltips)</h4>
<p class="card-title-desc">
If your form layout allows it, you can swap the
<code>.{valid|invalid}-feedback</code> classes for
<code>.{valid|invalid}-tooltip</code> classes to display
validation feedback in a styled tooltip.
</p>
<form class="needs-validation" @submit.prevent="tooltipForm">
<div class="row">
<div class="col-md-4">
<div class="mb-3 position-relative">
<label for="validationTooltip01">First name</label>
<input
id="validationTooltip01"
v-model="tooltipform.fname"
type="text"
class="form-control"
placeholder="First name"
:class="{
'is-invalid': submitform && v$.tooltipform.fname.$error,
}"
/>
<div
v-if="submitted && v$.tooltipform.fname.$error"
class="invalid-feedback"
>
<span v-if="v$.tooltipform.fname.required.$message">{{
v$.tooltipform.fname.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="mb-3 position-relative">
<label for="validationTooltip02">Last name</label>
<input
id="validationTooltip02"
v-model="tooltipform.lname"
type="text"
class="form-control"
placeholder="Last name"
:class="{
'is-invalid': submitform && v$.tooltipform.lname.$error,
}"
/>
<div
v-if="submitted && v$.tooltipform.lname.$error"
class="invalid-feedback"
>
<span v-if="v$.tooltipform.lname.required.$message">{{
v$.tooltipform.lname.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="mb-3 position-relative">
<label for="validationTooltipUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span
id="validationTooltipUsernamePrepend"
class="input-group-text"
>@</span
>
</div>
<input
id="validationTooltipUsername"
v-model="tooltipform.username"
type="text"
class="form-control"
placeholder="Username"
aria-describedby="validationTooltipUsernamePrepend"
:class="{
'is-invalid':
submitform && v$.tooltipform.username.$error,
}"
/>
<div
v-if="submitted && v$.tooltipform.username.$error"
class="invalid-feedback"
>
<span
v-if="v$.tooltipform.username.required.$message"
>{{ v$.tooltipform.username.required.$message }}</span
>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="mb-3 position-relative">
<label for="validationTooltip03">City</label>
<input
id="validationTooltip03"
v-model="tooltipform.city"
type="text"
class="form-control"
placeholder="City"
:class="{
'is-invalid': submitform && v$.tooltipform.city.$error,
}"
/>
<div
v-if="submitted && v$.tooltipform.city.$error"
class="invalid-feedback"
>
<span v-if="v$.tooltipform.city.required.$message">{{
v$.tooltipform.city.required.$message
}}</span>
</div>
</div>
</div>
<div class="col-md-6">
<div class="mb-3 position-relative">
<label for="validationTooltip04">State</label>
<input
id="validationTooltip04"
v-model="tooltipform.state"
type="text"
class="form-control"
placeholder="State"
:class="{
'is-invalid': submitform && v$.tooltipform.state.$error,
}"
/>
<div
v-if="submitted && v$.tooltipform.state.$error"
class="invalid-feedback"
>
<span v-if="v$.tooltipform.state.required.$message">{{
v$.tooltipform.state.required.$message
}}</span>
</div>
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
</div>
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Validation type</h4>
<p class="card-title-desc">
Parsley is a javascript form validation library. It helps you
provide your users with feedback on their form submission before
sending it to your server.
</p>
<form action="#" @submit.prevent="typeForm">
<div class="mb-3">
<label>Required</label>
<input
v-model="typeform.name"
type="text"
class="form-control"
placeholder="Type something"
name="name"
:class="{
'is-invalid': typesubmit && v$.typeform.name.$error,
}"
/>
<div
v-if="submitted && v$.typeform.name.$error"
class="invalid-feedback"
>
<span v-if="v$.typeform.name.required.$message">{{
v$.typeform.name.required.$message
}}</span>
</div>
</div>
<div class="mb-3">
<label>Equal To</label>
<div>
<input
v-model="typeform.password"
type="password"
name="password"
class="form-control"
:class="{
'is-invalid': typesubmit && v$.typeform.password.$error,
}"
placeholder="Password"
/>
<div
v-for="(item, index) in v$.typeform.password.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
<div class="mt-2">
<input
v-model="typeform.confirmPassword"
type="password"
name="confirmPassword"
class="form-control"
:class="{
'is-invalid':
typesubmit && v$.typeform.confirmPassword.$error,
}"
placeholder="Re-Type Password"
/>
<div
v-for="(item, index) in v$.typeform.confirmPassword.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>E-Mail</label>
<div>
<input
v-model="typeform.email"
type="email"
name="email"
class="form-control"
:class="{
'is-invalid': typesubmit && v$.typeform.email.$error,
}"
placeholder="Enter a valid e-mail"
/>
<div
v-for="(item, index) in v$.typeform.email.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>URL</label>
<div>
<input
v-model="typeform.url"
type="url"
name="url"
class="form-control"
placeholder="URL"
:class="{
'is-invalid': typesubmit && v$.typeform.url.$error,
}"
/>
<div
v-for="(item, index) in v$.typeform.url.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Digits</label>
<div>
<input
v-model="typeform.digit"
type="text"
name="digit"
class="form-control"
:class="{
'is-invalid': typesubmit && v$.typeform.digit.$error,
}"
placeholder="Enter only digits"
/>
<div
v-for="(item, index) in v$.typeform.digit.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Number</label>
<div>
<input
v-model="typeform.number"
type="text"
name="number"
class="form-control"
:class="{
'is-invalid': typesubmit && v$.typeform.number.$error,
}"
placeholder="Enter only numbers"
/>
<div
v-for="(item, index) in v$.typeform.number.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Alphanumeric</label>
<div>
<input
v-model="typeform.alphanum"
type="text"
name="alphanum"
class="form-control"
:class="{
'is-invalid': typesubmit && v$.typeform.alphanum.$error,
}"
placeholder="Enter alphanumeric value"
/>
<div
v-for="(item, index) in v$.typeform.alphanum.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Textarea</label>
<div>
<textarea
v-model="typeform.textarea"
class="form-control"
name="textarea"
:class="{
'is-invalid': typesubmit && v$.typeform.textarea.$error,
}"
rows="5"
></textarea>
<div
v-if="typesubmit && v$.typeform.textarea.$error"
class="invalid-feedback"
>
<span v-if="!v$.typeform.textarea.required"
>This value is required.</span
>
</div>
</div>
</div>
<div class="mb-3 mb-0">
<div>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-secondary ms-1">
Cancel
</button>
</div>
</div>
</form>
</div>
</div>
<!-- end card -->
</div>
<!-- end col-->
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Range validation</h4>
<p class="card-title-desc">
Parsley is a javascript form validation library. It helps you
provide your users with feedback on their form submission before
sending it to your server.
</p>
<form action="#" @submit.prevent="rangeform">
<div class="mb-3">
<label>Min Length</label>
<div>
<input
v-model="range.minlen"
type="text"
name="minlen"
class="form-control"
:class="{ 'is-invalid': submit && v$.range.minlen.$error }"
placeholder="Min 6 chars."
/>
<div
v-for="(item, index) in v$.range.minlen.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Max Length</label>
<div>
<input
v-model="range.maxlength"
type="text"
class="form-control"
name="maxlength"
:class="{
'is-invalid': submit && v$.range.maxlength.$error,
}"
placeholder="Max 6 chars."
/>
<div
v-for="(item, index) in v$.range.maxlength.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Range Length</label>
<div>
<input
v-model="range.between"
type="text"
class="form-control"
name="between"
:class="{ 'is-invalid': submit && v$.range.between.$error }"
placeholder="Text between 5 - 10 chars length"
/>
<div
v-for="(item, index) in v$.range.between.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Min Value</label>
<div>
<input
v-model="range.minval"
type="text"
name="minval"
class="form-control"
:class="{ 'is-invalid': submit && v$.range.minval.$error }"
placeholder="Min value is 6"
/>
<div
v-for="(item, index) in v$.range.minval.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Max Value</label>
<div>
<input
v-model="range.maxval"
type="text"
class="form-control"
name="maxval"
:class="{ 'is-invalid': submit && v$.range.maxval.$error }"
placeholder="Max value is 6"
/>
<div
v-for="(item, index) in v$.range.maxval.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Range Value</label>
<div>
<input
v-model="range.rangeval"
type="text"
class="form-control"
name="rangeval"
:class="{
'is-invalid': submit && v$.range.rangeval.$error,
}"
placeholder="Number between 6 - 100"
/>
<div
v-for="(item, index) in v$.range.rangeval.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3">
<label>Regular Exp</label>
<div>
<input
v-model="range.expr"
type="text"
class="form-control"
name="expr"
:class="{ 'is-invalid': submit && v$.range.expr.$error }"
placeholder="Hex. Color"
/>
<div
v-for="(item, index) in v$.range.expr.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
</div>
<div class="mb-3 mb-0">
<div>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-secondary ms-1">
Cancel
</button>
</div>
</div>
</form>
</div>
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,329 +0,0 @@
<script>
import { FormWizard, TabContent } from "@anivive/vue3-form-wizard";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Form wizard component
*/
export default {
page: {
title: "Form Wizard",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader, FormWizard, TabContent },
data() {
return {
title: "Form Wizard",
items: [
{
text: "Forms",
href: "/",
},
{
text: "Form Wizard",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Basic Wizard</h4>
<form-wizard color="#556ee6">
<tab-content icon="mdi mdi-account-circle">
<div class="row">
<div class="col-12">
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="userName"
>User name</label
>
<div class="col-md-9">
<input
id="userName"
type="text"
class="form-control"
name="userName"
value="Themesbrand"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="password"
>Password</label
>
<div class="col-md-9">
<input
id="password"
type="password"
name="password"
class="form-control"
value="123456789"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="confirmpass"
>Re Password</label
>
<div class="col-md-9">
<input
id="confirmpass"
type="password"
name="confirmpass"
class="form-control"
value="123456789"
/>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</tab-content>
<tab-content icon="mdi mdi-face-profile">
<div class="row">
<div class="col-12">
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="name"
>First name</label
>
<div class="col-md-9">
<input
type="text"
name="name"
class="form-control"
value="Francis"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="surname"
>Last name</label
>
<div class="col-md-9">
<input
type="text"
name="surname"
class="form-control"
value="Brinkman"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="email"
>Email</label
>
<div class="col-md-9">
<input
type="email"
name="email"
class="form-control"
value="cory1979@hotmail.com"
/>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</tab-content>
<tab-content icon="mdi mdi-checkbox-marked-circle-outline">
<div class="row">
<div class="col-12">
<div class="text-center">
<h2 class="mt-0">
<i class="mdi mdi-check-all"></i>
</h2>
<h3 class="mt-0">Thank you !</h3>
<p class="w-75 mb-2 mx-auto">
Quisque nec turpis at urna dictum luctus. Suspendisse
convallis dignissim eros at volutpat. In egestas mattis
dui. Aliquam mattis dictum aliquet.
</p>
<div class="mb-3">
<b-form-checkbox
class="form-check"
id="customControlInline"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Remember me
</b-form-checkbox>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</tab-content>
</form-wizard>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Tab Wizard</h4>
<form-wizard shape="tab" color="#556ee6">
<tab-content icon="mdi mdi-account-circle">
<div class="row">
<div class="col-12">
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="name"
>User name</label
>
<div class="col-md-9">
<input
id="name"
type="text"
class="form-control"
value="Themesbrand"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="pwd"
>Password</label
>
<div class="col-md-9">
<input
id="pwd"
type="password"
name="pwd"
class="form-control"
value="123456789"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="confirmpwd"
>Re Password</label
>
<div class="col-md-9">
<input
id="confirmpwd"
type="password"
class="form-control"
value="123456789"
/>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</tab-content>
<tab-content icon="mdi mdi-face-profile">
<div class="row">
<div class="col-12">
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="name"
>First name</label
>
<div class="col-md-9">
<input
type="text"
name="name"
class="form-control"
value="Francis"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="surname"
>Last name</label
>
<div class="col-md-9">
<input
type="text"
name="surname"
class="form-control"
value="Brinkman"
/>
</div>
</div>
<div class="form-group row mb-3">
<label class="col-md-3 col-form-label" for="email"
>Email</label
>
<div class="col-md-9">
<input
type="email"
name="email"
class="form-control"
value="cory1979@hotmail.com"
/>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</tab-content>
<tab-content icon="mdi mdi-checkbox-marked-circle-outline">
<div class="row">
<div class="col-12">
<div class="text-center">
<h2 class="mt-0">
<i class="mdi mdi-check-all"></i>
</h2>
<h3 class="mt-0">Thank you !</h3>
<p class="w-75 mb-2 mx-auto">
Quisque nec turpis at urna dictum luctus. Suspendisse
convallis dignissim eros at volutpat. In egestas mattis
dui. Aliquam mattis dictum aliquet.
</p>
<div class="mb-3">
<b-form-checkbox
class="form-check"
id="customCheck1"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
I agree with the Terms and Conditions
</b-form-checkbox>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</tab-content>
</form-wizard>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
</div>
<!-- end col -->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,18 +1,32 @@
<script>
import Layout from "../../layouts/main";
// import PageHeader from "@/components/page-header";
import PageHeader from "@/components/page-header";
import Stat from "@/components/widgets/stat";
import Stat1 from "@/components/widgets/stat1";
import Profile from "@/components/widgets/profile";
import appConfig from "@/app.config";
export default {
page: {
title: "Home",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout },
components: { Layout,PageHeader,Profile, Stat, Stat1 },
data() {
return {
list:[],
currentPage: 1,
pageSize:10,
title: "Home",
items: [
{
text: "Home",
href: "/",
},
{
text: "Index",
active: true,
},
],
// list:[],
// currentPage: 1,
// pageSize:10,
searchForm:{
search:'',
checkStartDate:'',
@ -23,23 +37,61 @@ export default {
"Last 7 Days' Complete Cases",
"Last 30 Days' Complete Cases",
"Last 90 Days' Complete Cases",
]
],
statData: [
{
icon: "bx bx-time-five",
title: "Pending",
value: "",
},
{
icon: "bx bx-check-circle",
title: "Clear",
value: "",
},
{
icon: "bx bx-no-entry",
title: "Reject",
value: "",
},
],
lastMonth:{},
statList:[],
};
},
watch:{
currentPage: {
immediate: true,
handler(newVal, oldVal) {
console.log(newVal, oldVal)
this.currentPage = newVal;
this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
}
}
// currentPage: {
// immediate: true,
// handler(newVal, oldVal) {
// console.log(newVal, oldVal)
// this.currentPage = newVal;
// this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
// }
// }
},
mounted(){
this.getList();
this.getLastMonth();
},
methods:{
goAdd(){
this.$router.push('/visa/add')
},
getLastMonth(){
const date = new Date().DateFormat('yyyy-MM');
this.$axios
.get("/api/visa_report/QueryMonthlyReportData?monthKey="+date)
.then((res) => {
this.lastMonth = res.summaryItem
console.log(res);
this.statData[0].value = this.lastMonth.pendingCaseCount
this.statData[1].value = this.lastMonth.clearCaseCount
this.statData[2].value = this.lastMonth.rejectCaseCount
this.statList = [{name:"Total",value:this.lastMonth.totalCaseCount},{name:'Ave. Waiting Days for Complete Cases',value:this.lastMonth.aveWaitingDaysForCompleteCases}]
}).catch(e=>{
console.log(e);
})
},
doClick(item){
console.log('查看详情',JSON.stringify(item))
this.$router.push({name:'homelist',query:{month:item.month}})
@ -58,8 +110,8 @@ export default {
this.$axios
.get("/api/visa_report/QueryAllReportData")
.then((res) => {
this.list = res.items;
this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
this.mylist = res.items;
// this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
console.log(res);
}).catch(e=>{
console.log(e);
@ -71,73 +123,24 @@ export default {
<template>
<Layout>
<!-- <PageHeader :title="title" :items="items" /> -->
<!-- <div class="row">
<div class="col-12">
<form class="form-horizontal" role="form" @submit.prevent="formSubmit">
<div class="row">
<div class="col-md-2">
<b-form-group
class="mb-3"
label-cols-lg="3"
label="Email"
label-for="Search"
>
<b-form-input
for="Search"
v-model="searchForm.search"
></b-form-input>
</b-form-group>
</div>
<div class="col-md-3">
<div class="mb-3 row">
<label class="col-md-4 col-form-label">Complete Case:</label>
<div class="col-md-8">
<select class="form-control" v-model="searchForm.code">
<option :value="7">Last 7 Days' Complete Cases</option>
<option :value="30">Last 30 Days' Complete Cases</option>
<option :value="90">Last 90 Days' Complete Cases</option>
</select>
</div>
</div>
</div>
<div class="col-md-2">
<b-form-group
class="mb-3"
label-cols-sm="4"
label-cols-lg="4"
label="StartDate"
label-for="checkStartDate"
>
<b-form-input
id="checkStartDate"
v-model="searchForm.checkStartDate"
type="date"
pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}"
></b-form-input>
</b-form-group>
</div>
<div class="col-md-2">
<b-form-group
class="mb-3"
label-cols-sm="4"
label-cols-lg="4"
label="EndDate"
label-for="checkEndDate"
>
<b-form-input
id="checkEndDate"
v-model="searchForm.checkEndDate"
type="date"
pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}"
></b-form-input>
</b-form-group>
</div>
<div class="col-md-2"><button class="btn btn-primary" type="submit">Search</button></div>
</div>
</form>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-4">
<Profile :updating="fetchingStats" />
<!-- <Earning :updating="earningStatus" /> -->
</div>
<!-- end col -->
<div class="col-xl-8">
<div class="row">
<Stat1 :list="statList" :title="lastMonth.month" />
</div>
</div> -->
<div class="row">
<div v-for="stat of statData" :key="stat.icon" class="col-md-4">
<Stat :icon="stat.icon" :title="stat.title" :value="stat.value" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xl-24">
@ -157,7 +160,7 @@ export default {
</thead>
<tbody>
<tr v-for="(item,index) in mylist" :key="index">
<td scope="row">{{(currentPage-1)*pageSize+index+1}}</td>
<td scope="row">{{index+1}}</td>
<td>{{item.month}}</td>
<td>{{item.pendingCaseCount}}</td>
<td>{{item.clearCaseCount}}</td>
@ -179,8 +182,8 @@ export default {
</div>
</div>
</div>
<hr class="my-4" />
<div class="row">
<!-- <hr class="my-4" /> -->
<!-- <div class="row">
<div class="col">
<b-pagination
v-model="currentPage"
@ -190,6 +193,6 @@ export default {
aria-controls="my-table"
></b-pagination>
</div>
</div>
</div> -->
</Layout>
</template>

View File

@ -1,7 +1,10 @@
<script>
import Layout from "../../layouts/main";
// import PageHeader from "@/components/page-header";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import Stat from "@/components/widgets/stat";
import Stat1 from "@/components/widgets/stat1";
import Profile from "@/components/widgets/profile";
// import Multiselect from "@vueform/multiselect";
/**
@ -12,7 +15,7 @@ export default {
title: "Home",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout,},
components: { Layout,PageHeader,Profile, Stat, Stat1 },
data() {
return {
list:[],
@ -29,18 +32,44 @@ export default {
"Last 30 Days' Complete Cases",
"Last 90 Days' Complete Cases",
],
currentUser:{}
statData: [
{
icon: "bx bx-time-five",
title: "Pending",
value: "",
},
{
icon: "bx bx-check-circle",
title: "Clear",
value: "",
},
{
icon: "bx bx-no-entry",
title: "Reject",
value: "",
},
],
currentUser:{},
lastMonth:{},
statList:[],
};
},
watch:{
currentPage: {
'$route.query.month':{
immediate: true,
handler(newVal, oldVal) {
console.log(newVal, oldVal)
this.currentPage = newVal;
this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
console.log(newVal, oldVal)
this.getList();
}
}
// currentPage: {
// immediate: true,
// handler(newVal, oldVal) {
// console.log(newVal, oldVal)
// this.currentPage = newVal;
// this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
// }
// }
},
mounted(){
this.currentUser = this.$store.getters['auth/getCurrentUser'];
@ -69,8 +98,14 @@ export default {
this.$axios
.get("/api/visa_report/QueryMonthlyReportData?monthKey="+this.$route.query.month)
.then((res) => {
this.list = res.visaCaseList;
this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
this.mylist = res.visaCaseList;
this.lastMonth = res.summaryItem
this.statData[0].value = this.lastMonth.pendingCaseCount
this.statData[1].value = this.lastMonth.clearCaseCount
this.statData[2].value = this.lastMonth.rejectCaseCount
this.statList = [{name:"Total",value:this.lastMonth.totalCaseCount},{name:'Ave. Waiting Days for Complete Cases',value:this.lastMonth.aveWaitingDaysForCompleteCases}]
// this.mylist = this.list.slice((this.currentPage-1)*this.pageSize,this.currentPage*this.pageSize)
console.log(res);
}).catch(e=>{
console.log(e);
@ -82,7 +117,24 @@ export default {
<template>
<Layout>
<!-- <PageHeader :title="title" :items="items" /> -->
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-4">
<Profile :updating="fetchingStats" />
<!-- <Earning :updating="earningStatus" /> -->
</div>
<!-- end col -->
<div class="col-xl-8">
<div class="row">
<Stat1 :list="statList" :title="lastMonth.month" />
</div>
<div class="row">
<div v-for="stat of statData" :key="stat.icon" class="col-md-4">
<Stat :icon="stat.icon" :title="stat.title" :value="stat.value" />
</div>
</div>
</div>
</div>
<!-- <div class="row">
<div class="col-12">
<form class="form-horizontal" role="form" @submit.prevent="formSubmit">
@ -171,7 +223,7 @@ export default {
</thead>
<tbody>
<tr v-for="(item,index) in mylist" :key="index">
<td scope="row">{{(currentPage-1)*pageSize+index+1}}</td>
<td scope="row">{{index+1}}</td>
<td>{{item.userName}}</td>
<td>{{item.visaCategory}}</td>
<td>{{item.visaEntry}}</td>
@ -204,7 +256,7 @@ export default {
</div>
</div>
</div>
<hr class="my-4" />
<!-- <hr class="my-4" />
<div class="row">
<div class="col">
<b-pagination
@ -215,6 +267,6 @@ export default {
aria-controls="my-table"
></b-pagination>
</div>
</div>
</div> -->
</Layout>
</template>

View File

@ -1,154 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Invoice-detail component
*/
export default {
page: {
title: "Invoice Detail",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Invoice Detail",
items: [
{
text: "Invoices",
href: "/",
},
{
text: "Detail",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<div class="invoice-title">
<h4 class="float-end font-size-16">Order # 12345</h4>
<div class="mb-4">
<img
src="@/assets/images/logo-dark.png"
alt="logo"
height="20"
/>
</div>
</div>
<hr />
<div class="row">
<div class="col-6">
<address>
<strong>Billed To:</strong>
<br />John Smith <br />1234 Main <br />Apt. 4B
<br />Springfield, ST 54321
</address>
</div>
<div class="col-6 text-sm-end">
<address>
<strong>Shipped To:</strong>
<br />Kenny Rigdon <br />1234 Main <br />Apt. 4B
<br />Springfield, ST 54321
</address>
</div>
</div>
<div class="row">
<div class="col-6 mt-3">
<address>
<strong>Payment Method:</strong>
<br />Visa ending **** 4242 <br />jsmith@email.com
</address>
</div>
<div class="col-6 mt-3 text-sm-end">
<address>
<strong>Order Date:</strong>
<br />October 16, 2019
<br />
<br />
</address>
</div>
</div>
<div class="p-2 mt-3">
<h3 class="font-size-16">Order summary</h3>
</div>
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th style="width: 70px">No.</th>
<th>Item</th>
<th class="text-sm-end">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>01</td>
<td>Skote - Bootstrap 5 Admin Dashboard</td>
<td class="text-sm-end">$499.00</td>
</tr>
<tr>
<td>02</td>
<td>Skote - Bootstrap 4 Landing Template</td>
<td class="text-sm-end">$399.00</td>
</tr>
<tr>
<td>03</td>
<td>Veltrix - Bootstrap 4 Admin Template</td>
<td class="text-sm-end">$499.00</td>
</tr>
<tr>
<td colspan="2" class="text-sm-end">Sub Total</td>
<td class="text-sm-end">$1397.00</td>
</tr>
<tr>
<td colspan="2" class="border-0 text-sm-end">
<strong>Shipping</strong>
</td>
<td class="border-0 text-sm-end">$13.00</td>
</tr>
<tr>
<td colspan="2" class="border-0 text-sm-end">
<strong>Total</strong>
</td>
<td class="border-0 text-sm-end">
<h4 class="m-0">$1410.00</h4>
</td>
</tr>
</tbody>
</table>
</div>
<div class="d-print-none">
<div class="float-end">
<a
href="javascript:window.print()"
class="btn btn-success waves-effect waves-light me-1"
><i class="fa fa-print"></i
></a>
<a
href="#"
class="btn btn-primary w-md waves-effect waves-light"
>Send</a
>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,554 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Invoice-list component
*/
export default {
page: {
title: "Invoice List",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Invoice List",
items: [
{
text: "Invoices",
href: "/",
},
{
text: "Invoice List",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<div
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none"
>
<span
class="avatar-title rounded-circle bg-primary bg-soft text-primary font-size-16"
>
M
</span>
</div>
<h5 class="mb-1 font-size-15 text-truncate">Marion Burton</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14251</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">Skote Dashboard UI</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $1455
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 10 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<img
src="@/assets/images/users/avatar-2.jpg"
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none rounded-circle"
alt="img"
/>
<h5 class="mb-1 font-size-15 text-truncate">Francis Witte</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14252</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">Brand logo design</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1024
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 11 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<img
src="@/assets/images/users/avatar-7.jpg"
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none rounded-circle"
alt="img"
/>
<h5 class="mb-1 font-size-15 text-truncate">Joseph Flint</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14253</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">
Landing page Design
</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1189
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 12 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<img
src="@/assets/images/users/avatar-8.jpg"
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none rounded-circle"
alt="img"
/>
<h5 class="mb-1 font-size-15 text-truncate">Larry Nielsen</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14254</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">
Redesign - Landing page
</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1245
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 12 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<img
src="@/assets/images/users/avatar-5.jpg"
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none rounded-circle"
alt="img"
/>
<h5 class="mb-1 font-size-15 text-truncate">Mark Evans</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14255</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">
Blog Template Design
</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1024
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 11 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<div
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none"
>
<span
class="avatar-title rounded-circle bg-info bg-soft text-primary font-size-16"
>
T
</span>
</div>
<h5 class="mb-1 font-size-15 text-truncate">Timothy Lee</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14256</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">
Landing page Design
</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1189
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 13 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<img
src="@/assets/images/users/avatar-1.jpg"
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none rounded-circle"
alt="img"
/>
<h5 class="mb-1 font-size-15 text-truncate">Stanley Bland</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14257</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">Landing page UI</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1148
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 14 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<div
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none"
>
<span
class="avatar-title rounded-circle bg-success bg-soft text-success font-size-16"
>
T
</span>
</div>
<h5 class="mb-1 font-size-15 text-truncate">Tommy Wilson</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14258</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">
Redesign - Dashboard
</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1259
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 15 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-lg-4">
<div class="text-lg-center">
<img
src="@/assets/images/users/avatar-4.jpg"
class="avatar-sm me-3 mx-lg-auto mb-3 mt-1 float-start float-lg-none rounded-circle"
alt="img"
/>
<h5 class="mb-1 font-size-15 text-truncate">Louis Brandon</h5>
<a href="#" class="text-muted">@Skote</a>
</div>
</div>
<div class="col-lg-8">
<div>
<router-link
to="/invoices/detail"
class="d-block text-primary text-decoration-underline mb-2"
>Invoice #14259</router-link
>
<h5 class="text-truncate mb-4 mb-lg-5">Email Template UI</h5>
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Amount"
>
<i class="bx bx-money me-1 text-muted"></i> $ 1355
</h5>
</li>
<li class="list-inline-item">
<h5
class="font-size-14"
data-toggle="tooltip"
data-placement="top"
title="Due Date"
>
<i class="bx bx-calendar me-1 text-muted"></i> 15 Oct,
19
</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-12">
<div class="text-center my-3">
<a href="javascript:void(0);" class="text-success"
><i class="bx bx-loader bx-spin font-size-18 align-middle me-2"></i>
Load more
</a>
</div>
</div>
<!-- end col-->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,392 +0,0 @@
<script>
import { GoogleMap, Marker, Polygon } from "vue3-google-map";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Google-map component
*/
export default {
page: {
title: "Google Map",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader, GoogleMap, Marker, Polygon },
data() {
return {
title: "Google Maps",
items: [
{
text: "Maps",
href: "/",
},
{
text: "Google Maps",
active: true,
},
],
markers: [
{
position: { lat: 10.0, lng: 10.0 },
},
{
position: { lat: 15.0, lng: 13.0 },
},
],
pov: null,
pano: null,
edited: null,
paths: [
[
{ lat: 1.38, lng: 103.8 },
{ lat: 1.38, lng: 103.81 },
{ lat: 1.39, lng: 103.81 },
{ lat: 1.39, lng: 103.8 },
],
[
{ lat: 1.382, lng: 103.802 },
{ lat: 1.382, lng: 103.808 },
{ lat: 1.388, lng: 103.808 },
{ lat: 1.388, lng: 103.802 },
],
],
scope: "usa",
geographyConfig: {
highlightBorderColor: "#bada55",
highlightBorderWidth: 3,
},
fills: {
Republican: "#CC4731",
Democrat: "#306596",
"Heavy Democrat": "#667FAF",
"Light Democrat": "#A9C0DE",
"Heavy Republican": "#CA5E5B",
"Light Republican": "#EAA9A8",
defaultFill: "#EDDC4E",
},
data: {
AZ: {
fillKey: "Republican",
electoralVotes: 5,
},
CO: {
fillKey: "Light Democrat",
electoralVotes: 5,
},
DE: {
fillKey: "Democrat",
electoralVotes: 32,
},
FL: {
fillKey: "UNDECIDED",
electoralVotes: 29,
},
GA: {
fillKey: "Republican",
electoralVotes: 32,
},
HI: {
fillKey: "Democrat",
electoralVotes: 32,
},
ID: {
fillKey: "Republican",
electoralVotes: 32,
},
IL: {
fillKey: "Democrat",
electoralVotes: 32,
},
IN: {
fillKey: "Republican",
electoralVotes: 11,
},
IA: {
fillKey: "Light Democrat",
electoralVotes: 11,
},
KS: {
fillKey: "Republican",
electoralVotes: 32,
},
KY: {
fillKey: "Republican",
electoralVotes: 32,
},
LA: {
fillKey: "Republican",
electoralVotes: 32,
},
MD: {
fillKey: "Democrat",
electoralVotes: 32,
},
ME: {
fillKey: "Democrat",
electoralVotes: 32,
},
MA: {
fillKey: "Democrat",
electoralVotes: 32,
},
MN: {
fillKey: "Democrat",
electoralVotes: 32,
},
MI: {
fillKey: "Democrat",
electoralVotes: 32,
},
MS: {
fillKey: "Republican",
electoralVotes: 32,
},
MO: {
fillKey: "Republican",
electoralVotes: 13,
},
MT: {
fillKey: "Republican",
electoralVotes: 32,
},
NC: {
fillKey: "Light Republican",
electoralVotes: 32,
},
NE: {
fillKey: "Republican",
electoralVotes: 32,
},
NV: {
fillKey: "Heavy Democrat",
electoralVotes: 32,
},
NH: {
fillKey: "Light Democrat",
electoralVotes: 32,
},
NJ: {
fillKey: "Democrat",
electoralVotes: 32,
},
NY: {
fillKey: "Democrat",
electoralVotes: 32,
},
ND: {
fillKey: "Republican",
electoralVotes: 32,
},
NM: {
fillKey: "Democrat",
electoralVotes: 32,
},
OH: {
fillKey: "UNDECIDED",
electoralVotes: 32,
},
OK: {
fillKey: "Republican",
electoralVotes: 32,
},
OR: {
fillKey: "Democrat",
electoralVotes: 32,
},
PA: {
fillKey: "Democrat",
electoralVotes: 32,
},
RI: {
fillKey: "Democrat",
electoralVotes: 32,
},
SC: {
fillKey: "Republican",
electoralVotes: 32,
},
SD: {
fillKey: "Republican",
electoralVotes: 32,
},
TN: {
fillKey: "Republican",
electoralVotes: 32,
},
TX: {
fillKey: "Republican",
electoralVotes: 32,
},
UT: {
fillKey: "Republican",
electoralVotes: 32,
},
WI: {
fillKey: "Democrat",
electoralVotes: 32,
},
VA: {
fillKey: "Light Democrat",
electoralVotes: 32,
},
VT: {
fillKey: "Democrat",
electoralVotes: 32,
},
WA: {
fillKey: "Democrat",
electoralVotes: 32,
},
WV: {
fillKey: "Republican",
electoralVotes: 32,
},
WY: {
fillKey: "Republican",
electoralVotes: 32,
},
CA: {
fillKey: "Democrat",
electoralVotes: 32,
},
CT: {
fillKey: "Democrat",
electoralVotes: 32,
},
AK: {
fillKey: "Republican",
electoralVotes: 32,
},
AR: {
fillKey: "Republican",
electoralVotes: 32,
},
AL: {
fillKey: "Republican",
electoralVotes: 32,
},
},
popupData: "",
};
},
methods: {
/**
* street view data update
*/
updatePov(pov) {
this.pov = pov;
},
/**
* street view data update
*/
updatePano(pano) {
this.pano = pano;
},
/**
* polygon editing
*/
updateEdited(mvcArray) {
let paths = [];
for (let i = 0; i < mvcArray.getLength(); i++) {
let path = [];
for (let j = 0; j < mvcArray.getAt(i).getLength(); j++) {
let point = mvcArray.getAt(i).getAt(j);
path.push({ lat: point.lat(), lng: point.lng() });
}
paths.push(path);
}
this.edited = paths;
},
popupTemplate({ geography, datum }) {
this.popupData = `${geography.properties.name}\nElectoral Votes: ${datum.electoralVotes}`;
},
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Basic</h4>
<p class="card-title-dsec">Example of google maps.</p>
<!-- basic map -->
<GoogleMap
api-key="AIzaSyAbvyBxmMbFhrzP9Z8moyYr6dCr-pzjhBE"
:center="{ lat: 2, lng: 2 }"
:zoom="5"
style="height: 300px"
></GoogleMap>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Markers</h4>
<p class="card-title-dsec">Example of google maps.</p>
<!-- Map with markers -->
<GoogleMap
:center="{ lat: 11, lng: 12 }"
:zoom="3"
style="height: 300px"
>
<Marker
v-for="(m, index) in markers"
:key="index"
:position="m.position"
:clickable="true"
:draggable="true"
@click="center = m.position"
></Marker>
</GoogleMap>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Polygon Editing</h4>
<p class="card-title-dsec">Example of google maps.</p>
<!-- Polygon editiong map -->
<GoogleMap
:center="{ lat: 1.38, lng: 103.8 }"
:zoom="12"
style="height: 300px"
>
<Polygon
:paths="paths"
:editable="true"
@paths_changed="updateEdited($event)"
></Polygon>
</GoogleMap>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Map type</h4>
<p class="card-title-dsec">Example of google maps.</p>
<!-- Set map type -->
<GoogleMap
:center="{ lat: 4, lng: 4 }"
:zoom="3"
style="height: 300px"
map-type-id="terrain"
></GoogleMap>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,60 +0,0 @@
<script>
import { latLng } from "leaflet";
import { LMap, LTileLayer, LMarker, LTooltip, LIcon } from "@vue-leaflet/vue-leaflet";
export default {
data() {
return {
zoom: 13,
center: latLng(47.41322, -1.219482),
url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
attribution:
'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
withTooltip: latLng(47.41422, -1.250482),
showParagraph: false,
mapOptions: {
zoomSnap: 0.5,
},
showMap: true,
};
},
components: {
LMap,
LTileLayer,
LMarker,
LIcon,
LTooltip,
},
methods: {
innerClick() {
alert("Click!");
},
},
};
</script>
<template>
<l-map
:zoom="zoom"
:center="center"
:options="mapOptions"
style="height: 400px; width: 100%"
>
<l-tile-layer :url="url" :attribution="attribution" />
<l-marker :lat-lng="withTooltip">
<l-tooltip :options="{ permanent: true, interactive: true }">
<div @click="innerClick">
I am a tooltip
<p v-show="showParagraph">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sed
pretium nisl, ut sagittis sapien. Sed vel sollicitudin nisi. Donec
finibus semper metus id malesuada.
</p>
</div>
</l-tooltip>
<l-icon>
<img src="@/assets/images/leaflet/marker-icon.png" />
</l-icon>
</l-marker>
</l-map>
</template>

View File

@ -1,45 +0,0 @@
<script>
import { latLngBounds, latLng } from "leaflet";
import { LMap, LTileLayer, LMarker } from "@vue-leaflet/vue-leaflet";
export default {
name: "SetBounds",
components: {
LMap,
LTileLayer,
LMarker
},
data() {
return {
zoom: 13,
center: [0, 0],
bounds: latLngBounds([
[40.70081290280357, -74.26963806152345],
[40.82991732677597, -74.08716201782228]
]),
maxBounds: latLngBounds([
[40.70081290280357, -74.26963806152345],
[40.82991732677597, -74.08716201782228]
]),
url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
attribution:
'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
marker: latLng(47.41322, -1.219482)
};
}
};
</script>
<template>
<div>
<l-map
:zoom="zoom"
:center="center"
:bounds="bounds"
:max-bounds="maxBounds"
style="height: 400px; width: 100%"
>
<l-tile-layer :url="url" :attribution="attribution" />
<l-marker :lat-lng="marker" />
</l-map>
</div>
</template>

View File

@ -1,87 +0,0 @@
<script>
import { latLng } from "leaflet";
import {
LMap,
LTileLayer,
LCircle,
LRectangle,
LPolygon,
LPolyline
} from "@vue-leaflet/vue-leaflet";
export default {
name: "GeometryTest",
components: {
LMap,
LTileLayer,
LCircle,
LRectangle,
LPolygon,
LPolyline
},
data() {
return {
zoom: 9,
center: [47.31322, -1.319482],
circle: {
center: latLng(47.41322, -1.0482),
radius: 4500
},
rectangle: {
bounds: [
[47.341456, -1.397133],
[47.303901, -1.243813]
]
},
polygon: {
latlngs: [
[47.2263299, -1.6222],
[47.21024000000001, -1.6270065],
[47.1969447, -1.6136169],
[47.18527929999999, -1.6143036],
[47.1794457, -1.6098404],
[47.1775788, -1.5985107],
[47.1676598, -1.5753365],
[47.1593731, -1.5521622],
[47.1593731, -1.5319061],
[47.1722111, -1.5143967],
[47.1960115, -1.4841843],
[47.2095404, -1.4848709],
[47.2291277, -1.4683914],
[47.2533687, -1.5116501],
[47.2577961, -1.5531921],
[47.26828069, -1.5621185],
[47.2657179, -1.589241],
[47.2589612, -1.6204834],
[47.237287, -1.6266632],
[47.2263299, -1.6222]
],
color: "#ff00ff"
},
polyline: {
latlngs: [
[47.334852, -1.509485],
[47.342596, -1.328731],
[47.241487, -1.190568],
[47.234787, -1.358337]
],
color: "green"
},
url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
attribution:
'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
};
}
};
</script>
<template>
<div>
<l-map :zoom="zoom" :center="center" style="height: 400px; width: 100%">
<l-tile-layer :url="url" :attribution="attribution" />
<l-circle :lat-lng="circle.center" :radius="circle.radius" />
<l-rectangle :bounds="rectangle.bounds" />
<l-polygon :lat-lngs="polygon.latlngs" :color="polygon.color" />
<l-polyline :lat-lngs="polyline.latlngs" :color="polyline.color" />
</l-map>
</div>
</template>

View File

@ -1,48 +0,0 @@
<script>
import { LMap, LTileLayer, LMarker, LIcon, LCircleMarker } from "@vue-leaflet/vue-leaflet";
import { latLng } from "leaflet";
export default {
name: "Icon",
components: {
LMap,
LTileLayer,
LMarker,
LIcon,
LCircleMarker,
},
data() {
return {
zoom: 10,
center: latLng(47.41322, -1.219482),
url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
attribution:
'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
staticAnchor: [16, 37],
circle: {
center: [47.41322, -1.0482],
radius: 6,
color: "red",
},
};
},
};
</script>
<template>
<l-map :zoom="zoom" :center="center" style="height: 400px; width: 100%">
<l-tile-layer :url="url" :attribution="attribution" />
<l-circle-marker
:lat-lng="circle.center"
:radius="circle.radius"
:color="circle.color"
/>
<l-marker :lat-lng="circle.center"></l-marker>
<l-marker :lat-lng="[47.41322, -1.189482]">
<l-icon :icon-anchor="staticAnchor">
<img src="@/assets/images/logo-dark.png" height="25" />
<img src="@/assets/images/leaflet/marker-icon.png" />
</l-icon>
</l-marker>
</l-map>
</template>

View File

@ -1,97 +0,0 @@
<script>
import Layout from "../../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import Basic from "./basic";
import Boundary from "./boundary";
import Icons from "./icons";
import Geometry from "./geometry";
import Markers from "./markers";
/**
* Leaflet-map component
*/
export default {
page: {
title: "Leaflet map",
meta: [{ name: "description", content: appConfig.description }]
},
components: {
Layout,
PageHeader,
Boundary,
Icons,
Basic,
Geometry,
Markers
},
data() {
return {
title: "Leaflet",
items: [
{
text: "Maps",
href: "/"
},
{
text: "Leaflet",
active: true
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Example</h4>
<Basic class="leaflet-map"/>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Fixed Bounds</h4>
<Boundary class="leaflet-map"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Custom Icon Example</h4>
<Icons class="leaflet-map"/>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Geometry Example</h4>
<Geometry class="leaflet-map"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Draggable marker</h4>
<Markers class="leaflet-map"/>
</div>
</div>
</div>
</div>
</Layout>
</template>

View File

@ -1,66 +0,0 @@
<script>
import { LMap, LMarker, LTileLayer, LIcon } from "@vue-leaflet/vue-leaflet";
import { latLng } from "leaflet";
export default {
components: {
LMap,
LTileLayer,
LMarker,
LIcon
},
data() {
return {
zoom: 6,
center: latLng(51.505, -0.09),
url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
staticAnchor: [16, 37],
attribution:
'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
markers: [
{
id: "m1",
position: { lat: 51.505, lng: -0.09 },
draggable: true,
visible: true
},
{
id: "m2",
position: { lat: 51.8905, lng: -0.09 },
draggable: true,
visible: true
},
{
id: "m3",
position: { lat: 51.005, lng: -0.09 },
draggable: true,
visible: true
},
{
id: "m4",
position: { lat: 50.7605, lng: -0.09 },
draggable: true,
visible: true
}
]
};
}
};
</script>
<template>
<l-map style="height: 400px; width: 100%" :zoom="zoom" :center="center">
<l-tile-layer :url="url" :attribution="attribution" />
<l-marker
v-for="marker in markers"
:key="marker.id"
:visible="marker.visible"
:draggable="marker.draggable"
:lat-lng="marker.position"
>
<l-icon :icon-anchor="staticAnchor">
<img src="@/assets/images/leaflet/marker-icon.png" />
</l-icon>
</l-marker>
</l-map>
</template>

View File

@ -1,147 +0,0 @@
<script>
import { ref } from "vue";
import useVuelidate from "@vuelidate/core";
import DropZone from "@/components/widgets/dropZone";
import datepicker from "vue3-datepicker";
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Projects-create component
*/
export default {
page: {
title: "Create New Project",
meta: [{ name: "description", content: appConfig.description }],
},
setup() {
let dropzoneFile = ref("");
const drop = (e) => {
dropzoneFile.value = e.dataTransfer.files[0];
};
const selectedFile = () => {
dropzoneFile.value = document.querySelector(".dropzoneFile").files[0];
};
return { dropzoneFile, drop, selectedFile, v$: useVuelidate() };
},
components: {
DropZone,
datepicker,
Layout,
PageHeader,
},
data() {
return {
title: "Create New",
items: [
{
text: "Projects",
href: "/",
},
{
text: "Create New",
active: true,
},
],
dropzoneOptions: {
url: "https://httpbin.org/post",
thumbnailWidth: 150,
maxFilesize: 0.5,
headers: { "My-Awesome-Header": "header value" },
},
daterange: ref(new Date()),
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Create New Project</h4>
<form>
<div class="form-group row mb-4">
<label for="projectname" class="col-form-label col-lg-2"
>Project Name</label
>
<div class="col-lg-10">
<input
id="projectname"
name="projectname"
type="text"
class="form-control"
placeholder="Enter Project Name..."
/>
</div>
</div>
<div class="form-group row mb-4">
<label for="projectdesc" class="col-form-label col-lg-2"
>Project Description</label
>
<div class="col-lg-10">
<textarea
id="projectdesc"
class="form-control"
rows="3"
placeholder="Enter Project Description..."
></textarea>
</div>
</div>
<div class="form-group row mb-4">
<label class="col-form-label col-lg-2">Project Date</label>
<div class="col-lg-10">
<datepicker
class="form-control"
v-model="daterange"
range
append-to-body
lang="en"
confirm
></datepicker>
</div>
</div>
<div class="form-group row mb-4">
<label for="projectbudget" class="col-form-label col-lg-2"
>Budget</label
>
<div class="col-lg-10">
<input
id="projectbudget"
name="projectbudget"
type="text"
placeholder="Enter Project Budget..."
class="form-control"
/>
</div>
</div>
</form>
<div class="row mb-4">
<label class="col-form-label col-lg-2">Attached Files</label>
<div class="col-lg-10">
<DropZone @drop.prevent="drop" @change="selectedFile" />
<span class="file-info">File: {{ dropzoneFile.name }}</span>
</div>
</div>
<div class="row justify-content-end">
<div class="col-lg-10">
<button type="submit" class="btn btn-primary">
Create Project
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,46 +0,0 @@
const barChart = {
series: [{
name: 'Overview',
data: [42, 56, 40, 64, 26, 42, 56, 35, 62]
}],
chartOptions: {
chart: {
toolbar: {
show: false
},
},
plotOptions: {
bar: {
columnWidth: '14%',
endingShape: 'rounded'
}
},
dataLabels: {
enabled: false
},
grid: {
yaxis: {
lines: {
show: false,
}
}
},
yaxis: {
title: {
text: '% (Percentage)'
}
},
xaxis: {
labels: {
rotate: -90
},
categories: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
title: {
text: 'Week',
}
},
colors: ['#556ee6'],
},
};
export { barChart };

View File

@ -1,94 +0,0 @@
const projectData = [
{
id: 1,
image: require('@/assets/images/companies/img-1.png'),
text: 'New admin Design',
subtext: 'It will be as simple as Occidental',
users: [require('@/assets/images/users/avatar-2.jpg'), require('@/assets/images/users/avatar-1.jpg')],
status: 'Completed',
date: '15 Oct, 19',
comment: 214
},
{
id: 2,
image: require('@/assets/images/companies/img-2.png'),
text: 'Brand logo design',
subtext: 'To achieve it would be necessary',
users: [require('@/assets/images/users/avatar-3.jpg')],
status: 'Pending',
date: '22 Oct, 19',
comment: 183
},
{
id: 3,
image: require('@/assets/images/companies/img-3.png'),
text: 'New Landing Design',
subtext: 'For science, music, sport, etc',
users: [require('@/assets/images/users/avatar-5.jpg'), require('@/assets/images/users/avatar-4.jpg')],
status: 'Delay',
date: '13 Oct, 19',
comment: 175
},
{
id: 4,
image: require('@/assets/images/companies/img-4.png'),
text: 'Redesign - Landing page',
subtext: 'If several languages coalesce',
users: [require('@/assets/images/users/avatar-6.jpg')],
status: 'Completed',
date: '14 Oct, 19',
comment: 202
},
{
id: 5,
image: require('@/assets/images/companies/img-5.png'),
text: 'Skote Dashboard UI',
subtext: 'Separate existence is a myth',
users: [require('@/assets/images/users/avatar-7.jpg'), require('@/assets/images/users/avatar-8.jpg')],
status: 'Completed',
date: '13 Oct, 19',
comment: 194
},
{
id: 6,
image: require('@/assets/images/companies/img-6.png'),
text: 'Blog Template UI',
subtext: 'For science, music, sport, etc',
users: [require('@/assets/images/users/avatar-6.jpg')],
status: 'Pending',
date: '24 Oct, 19',
comment: 122
},
{
id: 7,
image: require('@/assets/images/companies/img-3.png'),
text: 'Multipurpose Landing',
subtext: 'It will be as simple as Occidental',
users: [require('@/assets/images/users/avatar-3.jpg')],
status: 'Delay',
date: '15 Oct, 19',
comment: 214
},
{
id: 8,
image: require('@/assets/images/companies/img-4.png'),
text: 'App Landing UI',
subtext: 'For science, music, sport, etc',
users: [require('@/assets/images/users/avatar-4.jpg')],
status: 'Completed',
date: '11 Oct, 19',
comment: 185
},
{
id: 9,
image: require('@/assets/images/companies/img-2.png'),
text: 'New admin Design',
subtext: 'Their most common words.',
users: [require('@/assets/images/users/avatar-5.jpg')],
status: 'Completed',
date: '12 Oct, 19',
comment: 106
},
];
export { projectData };

View File

@ -1,441 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { barChart } from "./data-overview";
/**
* Projects-overview component
*/
export default {
page: {
title: "Projects Overview",
meta: [{ name: "description", content: appConfig.description }]
},
components: { Layout, PageHeader },
data() {
return {
barChart: barChart,
title: "Projects Overview",
items: [
{
text: "Projects",
href: "/"
},
{
text: "Projects Overview",
active: true
}
]
};
}
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-8">
<div class="card">
<div class="card-body">
<div class="d-flex">
<img src="@/assets/images/companies/img-1.png" alt class="avatar-sm me-4" />
<div class="flex-grow-1 overflow-hidden">
<h5 class="text-truncate font-size-15">Skote Dashboard UI</h5>
<p class="text-muted">Separate existence is a myth. For science, music, sport, etc.</p>
</div>
</div>
<h5 class="font-size-15 mt-4">Project Details :</h5>
<p
class="text-muted"
>To an English person, it will seem like simplified English, as a skeptical Cambridge friend of mine told me what Occidental is. The European languages are members of the same family. Their separate existence is a myth. For science, music, sport, etc,</p>
<div class="text-muted mt-4">
<p>
<i class="mdi mdi-chevron-right text-primary me-1"></i> To achieve this, it would be necessary
</p>
<p>
<i class="mdi mdi-chevron-right text-primary me-1"></i> Separate existence is a myth.
</p>
<p>
<i class="mdi mdi-chevron-right text-primary me-1"></i> If several languages coalesce
</p>
</div>
<div class="row task-dates">
<div class="col-sm-4 col-6">
<div class="mt-4">
<h5 class="font-size-14">
<i class="bx bx-calendar me-1 text-primary"></i> Start Date
</h5>
<p class="text-muted mb-0">08 Sept, 2019</p>
</div>
</div>
<div class="col-sm-4 col-6">
<div class="mt-4">
<h5 class="font-size-14">
<i class="bx bx-calendar-check me-1 text-primary"></i> Due Date
</h5>
<p class="text-muted mb-0">12 Oct, 2019</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Team Members</h4>
<div class="table-responsive">
<table class="table table-nowrap align-middle">
<tbody>
<tr>
<td style="width: 50px;">
<img
src="@/assets/images/users/avatar-2.jpg"
class="rounded-circle avatar-xs"
alt
/>
</td>
<td>
<h5 class="font-size-14 m-0">
<a href class="text-dark">Daniel Canales</a>
</h5>
</td>
<td>
<div>
<a
href="javascript: void(0);"
class="badge bg-primary bg-soft text-primary font-size-11"
>Frontend</a>
<a
href="javascript: void(0);"
class="badge bg-soft bg-primary text-primary font-size-11 ms-1"
>UI</a>
</div>
</td>
</tr>
<tr>
<td>
<img
src="@/assets/images/users/avatar-1.jpg"
class="rounded-circle avatar-xs"
alt
/>
</td>
<td>
<h5 class="font-size-14 m-0">
<a href class="text-dark">Jennifer Walker</a>
</h5>
</td>
<td>
<div>
<a
href="javascript: void(0);"
class="badge bg-primary bg-soft text-primary font-size-11"
>UI / UX</a>
</div>
</td>
</tr>
<tr>
<td>
<div class="avatar-xs">
<span
class="avatar-title rounded-circle bg-soft-primary text-white font-size-16"
>C</span>
</div>
</td>
<td>
<h5 class="font-size-14 m-0">
<a href class="text-dark">Carl Mackay</a>
</h5>
</td>
<td>
<div>
<a
href="javascript: void(0);"
class="badge bg-primary bg-soft text-primary font-size-11"
>Backend</a>
</div>
</td>
</tr>
<tr>
<td>
<img
src="@/assets/images/users/avatar-4.jpg"
class="rounded-circle avatar-xs"
alt
/>
</td>
<td>
<h5 class="font-size-14 m-0">
<a href class="text-dark">Janice Cole</a>
</h5>
</td>
<td>
<div>
<a
href="javascript: void(0);"
class="badge bg-primary bg-soft text-primary font-size-11"
>Frontend</a>
<a
href="javascript: void(0);"
class="badge bg-primary bg-soft text-primary font-size-11 ms-1"
>UI</a>
</div>
</td>
</tr>
<tr>
<td>
<div class="avatar-xs">
<span
class="avatar-title rounded-circle bg-soft-primary text-white font-size-16"
>T</span>
</div>
</td>
<td>
<h5 class="font-size-14 m-0">
<a href class="text-dark">Tony Brafford</a>
</h5>
</td>
<td>
<div>
<a
href="javascript: void(0);"
class="badge bg-primary bg-soft text-primary font-size-11"
>Backend</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Overview</h4>
<div id="overview-chart" class="apex-charts" dir="ltr"></div>
<apexchart
class="apex-charts"
type="bar"
height="280"
:series="barChart.series"
:options="barChart.chartOptions"
></apexchart>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Attached Files</h4>
<div class="table-responsive">
<table class="table table-nowrap table-centered table-hover mb-0 align-middle">
<tbody>
<tr>
<td style="width: 45px;">
<div class="avatar-sm">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-24"
>
<i class="bx bxs-file-doc"></i>
</span>
</div>
</td>
<td>
<h5 class="font-size-14 mb-1">
<a href="javascript: void(0);" class="text-dark">Skote Landing.Zip</a>
</h5>
<small>Size : 3.25 MB</small>
</td>
<td>
<div class="text-center">
<a href="javascript: void(0);" class="text-dark">
<i class="bx bx-download h3 m-0"></i>
</a>
</div>
</td>
</tr>
<tr>
<td>
<div class="avatar-sm">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-24"
>
<i class="bx bxs-file-doc"></i>
</span>
</div>
</td>
<td>
<h5 class="font-size-14 mb-1">
<a href="javascript: void(0);" class="text-dark">Skote Admin.Zip</a>
</h5>
<small>Size : 3.15 MB</small>
</td>
<td>
<div class="text-center">
<a href="javascript: void(0);" class="text-dark">
<i class="bx bx-download h3 m-0"></i>
</a>
</div>
</td>
</tr>
<tr>
<td>
<div class="avatar-sm">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-24"
>
<i class="bx bxs-file-doc"></i>
</span>
</div>
</td>
<td>
<h5 class="font-size-14 mb-1">
<a href="javascript: void(0);" class="text-dark">Skote Logo.Zip</a>
</h5>
<small>Size : 2.02 MB</small>
</td>
<td>
<div class="text-center">
<a href="javascript: void(0);" class="text-dark">
<i class="bx bx-download h3 m-0"></i>
</a>
</div>
</td>
</tr>
<tr>
<td>
<div class="avatar-sm">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-24"
>
<i class="bx bxs-file-doc"></i>
</span>
</div>
</td>
<td>
<h5 class="font-size-14">
<a href="javascript: void(0);" class="text-dark">Veltrix admin.Zip</a>
</h5>
<small>Size : 2.25 MB</small>
</td>
<td>
<div class="text-center">
<a href="javascript: void(0);" class="text-dark">
<i class="bx bx-download h3 m-0"></i>
</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<h4 class="card-title mb-4">Comments</h4>
<div class="d-flex mb-4">
<div class="me-3">
<img
class="media-object rounded-circle avatar-xs"
alt
src="@/assets/images/users/avatar-2.jpg"
/>
</div>
<div class="flex-grow-1">
<h5 class="font-size-13 mb-1">David Lambert</h5>
<p class="text-muted mb-1">Separate existence is a myth.</p>
</div>
<div class="ms-3">
<a href class="text-primary">Reply</a>
</div>
</div>
<div class="d-flex mb-4">
<div class="me-3">
<img
class="media-object rounded-circle avatar-xs"
alt
src="@/assets/images/users/avatar-3.jpg"
/>
</div>
<div class="flex-grow-1">
<h5 class="font-size-13 mb-1">Steve Foster</h5>
<p class="text-muted mb-1">
<a href class="text-success">@Henry</a>
To an English person it will like simplified
</p>
<div class="d-flex mt-3">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-16"
>J</span>
</div>
<div class="flex-grow-1">
<h5 class="font-size-13 mb-1">Jeffrey Walker</h5>
<p class="text-muted mb-1">as a skeptical Cambridge friend</p>
</div>
<div class="ms-3">
<a href class="text-primary">Reply</a>
</div>
</div>
</div>
<div class="ms-3">
<a href class="text-primary">Reply</a>
</div>
</div>
<div class="d-flex mb-4">
<div class="avatar-xs me-3">
<span
class="avatar-title rounded-circle bg-soft bg-primary text-primary font-size-16"
>S</span>
</div>
<div class="flex-grow-1">
<h5 class="font-size-13 mb-1">Steven Carlson</h5>
<p class="text-muted mb-1">Separate existence is a myth.</p>
</div>
<div class="ms-3">
<a href class="text-primary">Reply</a>
</div>
</div>
<div class="text-center mt-4 pt-2">
<a href="javascript: void(0);" class="btn btn-primary btn-sm">View more</a>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,177 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { projectData } from "./data-projects";
/**
* Projects-grid component
*/
export default {
page: {
title: "Projects Grid",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
components: {
Layout,
PageHeader,
},
data() {
return {
projectData: projectData,
title: "Projects Grid",
items: [
{
text: "Projects",
href: "/",
},
{
text: "Projects Grid",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div v-for="grid in projectData" :key="grid.id" class="col-xl-4 col-sm-6">
<div class="card">
<div class="card-body">
<div class="d-flex">
<div class="avatar-md me-4">
<span
class="avatar-title rounded-circle bg-light text-danger font-size-16"
>
<img :src="`${grid.image}`" alt height="30" />
</span>
</div>
<div class="flex-grow-1 overflow-hidden">
<h5 class="text-truncate font-size-15">
<a href="javascript: void(0);" class="text-dark">{{
grid.text
}}</a>
</h5>
<p class="text-muted mb-4">{{ grid.subtext }}</p>
<div class="avatar-group">
<div class="avatar-group-item">
<a
href="javascript: void(0);"
class="d-inline-block"
>
<img
:src="`${grid.users[0]}`"
class="rounded-circle avatar-xs"
alt
/>
</a>
</div>
<div class="avatar-group-item" v-if="grid.users[1]">
<a
href="javascript: void(0);"
class="d-inline-block"
>
<img
:src="`${grid.users[1]}`"
class="rounded-circle avatar-xs"
alt
/>
</a>
</div>
<div class="avatar-group-item" v-if="grid.users[2]">
<a
href="javascript: void(0);"
class="d-inline-block"
>
<img
:src="`${grid.users[2]}`"
class="rounded-circle avatar-xs"
alt
/>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="px-4 py-3 border-top">
<ul class="list-inline mb-0">
<li class="list-inline-item me-3">
<span
class="badge"
:class="{
'bg-success': `${grid.status}` === 'Completed',
'bg-warning': `${grid.status}` === 'Pending',
'bg-danger': `${grid.status}` === 'Delay',
}"
>{{ grid.status }}</span
>
</li>
<li
v-b-tooltip.hover.top
class="list-inline-item me-3"
title="Due Date"
>
<i class="bx bx-calendar me-1"></i>
{{ grid.date }}
</li>
<li
v-b-tooltip.hover.top
class="list-inline-item me-3"
title="Comments"
>
<i class="bx bx-comment-dots me-1"></i>
{{ grid.comment }}
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<ul
class="pagination pagination-rounded justify-content-center mt-2 mb-5"
>
<li class="page-item disabled">
<a href="#" class="page-link">
<i class="mdi mdi-chevron-left"></i>
</a>
</li>
<li class="page-item">
<a href="#" class="page-link">1</a>
</li>
<li class="page-item active">
<a href="#" class="page-link">2</a>
</li>
<li class="page-item">
<a href="#" class="page-link">3</a>
</li>
<li class="page-item">
<a href="#" class="page-link">4</a>
</li>
<li class="page-item">
<a href="#" class="page-link">5</a>
</li>
<li class="page-item">
<a href="#" class="page-link">
<i class="mdi mdi-chevron-right"></i>
</a>
</li>
</ul>
</div>
</div>
<!-- end ro w -->
</Layout>
</template>

View File

@ -1,155 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
import { projectData } from "./data-projects";
/**
* Projects-list component
*/
export default {
page: {
title: "Projects List",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
components: {
Layout,
PageHeader,
},
data() {
return {
projectData: projectData,
title: "Projects List",
items: [
{
text: "Projects",
href: "/",
},
{
text: "Projects List",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-lg-12">
<div>
<div class="table-responsive">
<table
class="table project-list-table table-nowrap table-centered table-borderless align-middle"
>
<thead>
<tr>
<th scope="col" style="width: 100px">#</th>
<th scope="col">Projects</th>
<th scope="col">Due Date</th>
<th scope="col">Status</th>
<th scope="col">Team</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<tr v-for="project in projectData" :key="project.id">
<td>
<img :src="`${project.image}`" alt class="avatar-sm" />
</td>
<td>
<h5 class="text-truncate font-size-14">
<a href="javascript: void(0);" class="text-dark">{{
project.text
}}</a>
</h5>
<p class="text-muted mb-0">{{ project.subtext }}</p>
</td>
<td>{{ project.date }}</td>
<td>
<span
class="badge"
:class="{
'bg-success': `${project.status}` === 'Completed',
'bg-warning': `${project.status}` === 'Pending',
'bg-danger': `${project.status}` === 'Delay',
}"
>{{ project.status }}</span
>
</td>
<td>
<div class="avatar-group">
<div class="avatar-group-item">
<a href="javascript: void(0);" class="d-inline-block">
<img
:src="`${project.users[0]}`"
class="rounded-circle avatar-xs"
alt
/>
</a>
</div>
<div class="avatar-group-item" v-if="project.users[1]">
<a href="javascript: void(0);" class="d-inline-block">
<img
:src="`${project.users[1]}`"
class="rounded-circle avatar-xs"
alt
/>
</a>
</div>
</div>
</td>
<td>
<b-dropdown
class="card-drop"
variant="white"
menu-class="dropdown-menu-end"
right
toggle-class="p-0"
>
<template v-slot:button-content>
<i class="mdi mdi-dots-horizontal font-size-18"></i>
</template>
<b-dropdown-item href="javascript: void(0);"
>Action</b-dropdown-item
>
<b-dropdown-item href="javascript: void(0);"
>Another action</b-dropdown-item
>
<b-dropdown-item href="javascript: void(0);"
>Something else here</b-dropdown-item
>
</b-dropdown>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-12">
<div class="text-center my-3">
<a href="javascript:void(0);" class="text-success">
<i class="bx bx-loader bx-spin font-size-18 align-middle me-2"></i>
Load more
</a>
</div>
</div>
<!-- end col-->
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,166 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Confirm-mail-2 component
*/
export default {
page: {
title: "Confirm Mail 2",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {};
},
methods: {},
mounted() {
document.body.classList.add("auth-body-bg");
},
};
</script>
<template>
<div>
<div class="container-fluid p-0">
<div class="row g-0">
<div class="col-xl-9">
<div class="auth-full-bg pt-lg-5 p-4">
<div class="w-100">
<div class="bg-overlay"></div>
<div class="d-flex h-100 flex-column">
<div class="p-4 mt-auto">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="text-center">
<h4 class="mb-3">
<i
class="bx bxs-quote-alt-left text-primary h1 align-middle me-3"
></i
><span class="text-primary">5k</span>+ Satisfied
clients
</h4>
<div dir="ltr" class="owl-theme">
<b-carousel
id="carousel-1"
:interval="4000"
indicators
>
<!-- Text slides with image -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" Fantastic theme with a ton of options. If you
just want the HTML to integrate with your
project, then this is the package. You can find
the files in the 'dist' folder...no need to
install git and all the other stuff the
documentation talks about. "
</p>
<div>
<h4 class="font-size-16 text-primary">
Abs1981
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
<!-- Slides with custom text -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" If Every Vendor on Envato are as supportive as
Themesbrand, Development with be a nice
experience. You guys are Wonderful. Keep us the
good work. "
</p>
<div>
<h4 class="font-size-16 text-primary">
nezerious
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
</b-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-xl-3">
<div class="auth-full-page-content p-md-5 p-4">
<div class="w-100">
<div class="d-flex flex-column h-100">
<div class="mb-4 mb-md-5">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="18"
class="auth-logo-dark"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="18"
class="auth-logo-light"
/>
</router-link>
</div>
<div class="my-auto">
<div class="text-center">
<div class="avatar-md mx-auto">
<div class="avatar-title rounded-circle bg-light">
<i class="bx bx-mail-send h1 mb-0 text-primary"></i>
</div>
</div>
<div class="p-2 mt-4">
<h4>Success !</h4>
<p class="text-muted">
At vero eos et accusamus et iusto odio dignissimos
ducimus qui blanditiis praesentium voluptatum deleniti
atque corrupti quos dolores et
</p>
<div class="mt-4">
<router-link to="/" class="btn btn-success"
>Back to Home</router-link
>
</div>
</div>
</div>
</div>
<div class="mt-4 mt-md-5 text-center">
<p class="mb-0">
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container-fluid -->
</div>
</template>
<style lang="scss" scoped>
.carousel-caption {
position: relative !important;
right: 0;
left: 0;
padding-top: 1.25rem;
padding-bottom: 1.25rem;
color: #495057;
}
.carousel-indicators li {
background-color: rgba(85, 110, 230, 0.25);
}
</style>

View File

@ -1,82 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Confirm-mail component
*/
export default {
page: {
title: "Confirm Mail",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {};
},
components: {},
methods: {},
};
</script>
<template>
<div class="account-pages my-5 pt-sm-5">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="text-center mb-5 text-muted">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="20"
class="auth-logo-dark mx-auto"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="20"
class="auth-logo-light mx-auto"
/>
</router-link>
<p class="mt-3">Responsive Bootstrap 5 Admin Dashboard</p>
</div>
</div>
</div>
<!-- end row -->
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card">
<div class="card-body">
<div class="p-2">
<div class="text-center">
<div class="avatar-md mx-auto">
<div class="avatar-title rounded-circle bg-light">
<i class="bx bx-mail-send h1 mb-0 text-primary"></i>
</div>
</div>
<div class="p-2 mt-4">
<h4>Success !</h4>
<p class="text-muted">
At vero eos et accusamus et iusto odio dignissimos ducimus
qui blanditiis praesentium voluptatum deleniti atque
corrupti quos dolores et
</p>
<div class="mt-4">
<router-link to="/" class="btn btn-success"
>Back to Home</router-link>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mt-5 text-center">
<p>
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -1,168 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Email-verification-2 component
*/
export default {
page: {
title: "Email verification 2",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {};
},
methods: {},
mounted() {
document.body.classList.add("auth-body-bg");
},
};
</script>
<template>
<div>
<div class="container-fluid p-0">
<div class="row g-0">
<div class="col-xl-9">
<div class="auth-full-bg pt-lg-5 p-4">
<div class="w-100">
<div class="bg-overlay"></div>
<div class="d-flex h-100 flex-column">
<div class="p-4 mt-auto">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="text-center">
<h4 class="mb-3">
<i
class="bx bxs-quote-alt-left text-primary h1 align-middle me-3"
></i
><span class="text-primary">5k</span>+ Satisfied
clients
</h4>
<div dir="ltr" class="owl-theme">
<b-carousel
id="carousel-1"
:interval="4000"
indicators
>
<!-- Text slides with image -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" Fantastic theme with a ton of options. If you
just want the HTML to integrate with your
project, then this is the package. You can find
the files in the 'dist' folder...no need to
install git and all the other stuff the
documentation talks about. "
</p>
<div>
<h4 class="font-size-16 text-primary">
Abs1981
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
<!-- Slides with custom text -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" If Every Vendor on Envato are as supportive as
Themesbrand, Development with be a nice
experience. You guys are Wonderful. Keep us the
good work. "
</p>
<div>
<h4 class="font-size-16 text-primary">
nezerious
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
</b-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-xl-3">
<div class="auth-full-page-content p-md-5 p-4">
<div class="w-100">
<div class="d-flex flex-column h-100">
<div class="mb-4 mb-md-5">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="18"
class="auth-logo-dark"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="18"
class="auth-logo-light"
/>
</router-link>
</div>
<div class="my-auto">
<div class="text-center">
<div class="avatar-md mx-auto">
<div class="avatar-title rounded-circle bg-light">
<i class="bx bxs-envelope h1 mb-0 text-primary"></i>
</div>
</div>
<div class="p-2 mt-4">
<h4>Verify your email</h4>
<p>
We have sent you verification email
<span class="fw-semibold">example@abc.com</span>, Please
check it
</p>
<div class="mt-4">
<router-link to="/" class="btn btn-success w-md"
>Verify email</router-link
>
</div>
</div>
</div>
</div>
<div class="mt-4 mt-md-5 text-center">
<p class="mb-0">
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container-fluid -->
</div>
</template>
<style lang="scss" scoped>
.carousel-caption {
position: relative !important;
right: 0;
left: 0;
padding-top: 1.25rem;
padding-bottom: 1.25rem;
color: #495057;
}
.carousel-indicators li {
background-color: rgba(85, 110, 230, 0.25);
}
</style>

View File

@ -1,87 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Email verification component
*/
export default {
page: {
title: "Email verification",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {};
},
components: {},
methods: {},
};
</script>
<template>
<div class="account-pages my-5 pt-sm-5">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="text-center mb-5 text-muted">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="20"
class="auth-logo-dark mx-auto"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="20"
class="auth-logo-light mx-auto"
/>
</router-link>
<p class="mt-3">Responsive Bootstrap 5 Admin Dashboard</p>
</div>
</div>
</div>
<!-- end row -->
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card">
<div class="card-body">
<div class="p-2">
<div class="text-center">
<div class="avatar-md mx-auto">
<div class="avatar-title rounded-circle bg-light">
<i class="bx bxs-envelope h1 mb-0 text-primary"></i>
</div>
</div>
<div class="p-2 mt-4">
<h4>Verify your email</h4>
<p>
We have sent you verification email
<span class="fw-semibold">example@abc.com</span>,
Please check it
</p>
<div class="mt-4">
<router-link to="/" class="btn btn-success w-md"
>Verify email</router-link>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mt-5 text-center">
<p>
Did't receive an email ?
<a href="#" class="fw-medium text-primary"> Resend </a>
</p>
<p>
©
{{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -1,199 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Lockscreen-2 component
*/
export default {
page: {
title: "Lockscreen 2",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {};
},
methods: {},
mounted() {
document.body.classList.add("auth-body-bg");
},
};
</script>
<template>
<div>
<div class="container-fluid p-0">
<div class="row g-0">
<div class="col-xl-9">
<div class="auth-full-bg pt-lg-5 p-4">
<div class="w-100">
<div class="bg-overlay"></div>
<div class="d-flex h-100 flex-column">
<div class="p-4 mt-auto">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="text-center">
<h4 class="mb-3">
<i
class="bx bxs-quote-alt-left text-primary h1 align-middle me-3"
></i
><span class="text-primary">5k</span>+ Satisfied
clients
</h4>
<div dir="ltr" class="owl-theme">
<b-carousel
id="carousel-1"
:interval="4000"
indicators
>
<!-- Text slides with image -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" Fantastic theme with a ton of options. If you
just want the HTML to integrate with your
project, then this is the package. You can find
the files in the 'dist' folder...no need to
install git and all the other stuff the
documentation talks about. "
</p>
<div>
<h4 class="font-size-16 text-primary">
Abs1981
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
<!-- Slides with custom text -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" If Every Vendor on Envato are as supportive as
Themesbrand, Development with be a nice
experience. You guys are Wonderful. Keep us the
good work. "
</p>
<div>
<h4 class="font-size-16 text-primary">
nezerious
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
</b-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-xl-3">
<div class="auth-full-page-content p-md-5 p-4">
<div class="w-100">
<div class="d-flex flex-column h-100">
<div class="mb-4 mb-md-5">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="18"
class="auth-logo-dark"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="18"
class="auth-logo-light"
/>
</router-link>
</div>
<div class="my-auto">
<div>
<h5 class="text-primary">Lock screen</h5>
<p class="text-muted">
Enter your password to unlock the screen!
</p>
</div>
<div class="mt-4">
<form class="form-horizontal">
<div class="user-thumb text-center mb-4">
<img
src="@/assets/images/users/avatar-1.jpg"
class="rounded-circle img-thumbnail avatar-md"
alt="thumbnail"
/>
<h5 class="font-size-15 mt-3">Maria Laird</h5>
</div>
<div class="mb-3">
<label for="userpassword">Password</label>
<input
type="password"
class="form-control"
id="userpassword"
placeholder="Enter password"
/>
</div>
<div class="row mb-0">
<div class="col-12 text-end">
<button
class="btn btn-primary w-md waves-effect waves-light"
type="submit"
>
Unlock
</button>
</div>
</div>
</form>
<div class="mt-5 text-center">
<p>
Not you ? return
<router-link
to="/auth/login-2"
class="fw-medium text-primary"
>
Sign In
</router-link>
</p>
</div>
</div>
</div>
<div class="mt-4 mt-md-5 text-center">
<p class="mb-0">
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container-fluid -->
</div>
</template>
<style lang="scss" scoped>
.carousel-caption {
position: relative !important;
right: 0;
left: 0;
padding-top: 1.25rem;
padding-bottom: 1.25rem;
color: #495057;
}
.carousel-indicators li {
background-color: rgba(85, 110, 230, 0.25);
}
</style>

View File

@ -1,115 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Lock screen page -component
*/
export default {
page: {
title: "Lockscreen",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
};
</script>
<template>
<div>
<div class="home-btn d-none d-sm-block">
<router-link to="/" class="text-dark">
<i class="mdi mdi-home-variant h2"></i>
</router-link>
</div>
<div class="account-pages my-5 pt-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card overflow-hidden">
<div class="bg-soft bg-primary">
<div class="row">
<div class="col-7">
<div class="text-primary p-4">
<h5 class="text-primary">Lock screen</h5>
<p>Enter your password to unlock the screen!</p>
</div>
</div>
<div class="col-5 align-self-end">
<img
src="@/assets/images/profile-img.png"
alt
class="img-fluid"
/>
</div>
</div>
</div>
<div class="card-body pt-0">
<div>
<a href="/">
<div class="avatar-md profile-user-wid mb-4">
<span class="avatar-title rounded-circle bg-light">
<img
src="@/assets/images/logo.svg"
alt
class="rounded-circle"
height="34"
/>
</span>
</div>
</a>
</div>
<div class="p-2">
<form class="form-horizontal">
<div class="user-thumb text-center mb-4">
<img
src="@/assets/images/users/avatar-1.jpg"
class="rounded-circle img-thumbnail avatar-md"
alt="thumbnail"
/>
<h5 class="font-size-15 mt-3">Maria Laird</h5>
</div>
<div class="mb-3">
<label for="userpassword">Password</label>
<input
type="password"
class="form-control"
id="userpassword"
placeholder="Enter password"
/>
</div>
<div class="row mb-0">
<div class="col-12 text-end">
<button class="btn btn-primary w-md" type="submit">
Unlock
</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="mt-5 text-center">
<p>
Not you ? return
<router-link
to="/auth/login-1"
class="fw-medium text-primary"
>Sign In</router-link
>
</p>
<p>
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -1,403 +0,0 @@
<script>
import axios from "axios";
import {
authMethods,
authFackMethods,
notificationMethods,
} from "@/state/helpers";
import { mapState } from "vuex";
import appConfig from "@/app.config";
import { required, email, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
/**
* Login-2 component
*/
export default {
setup() {
return { v$: useVuelidate() };
},
page: {
title: "Login 2",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
data() {
return {
email: "admin@themesbrand.com",
password: "123456",
submitted: false,
authError: null,
tryingToLogIn: false,
isAuthError: false,
};
},
validations: {
email: {
required: helpers.withMessage("Email is required", required),
email: helpers.withMessage("Please enter valid email", email),
},
password: {
required: helpers.withMessage("Password is required", required),
},
},
computed: {
...mapState("authfack", ["status"]),
notification() {
return this.$store ? this.$store.state.notification : null;
},
},
methods: {
...authMethods,
...authFackMethods,
...notificationMethods,
// Try to log the user in with the username
// and password they provided.
tryToLogIn() {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
if (process.env.VUE_APP_DEFAULT_AUTH === "firebase") {
this.tryingToLogIn = true;
// Reset the authError if it existed.
this.authError = null;
return (
this.logIn({
email: this.email,
password: this.password,
})
// eslint-disable-next-line no-unused-vars
.then((token) => {
this.tryingToLogIn = false;
this.isAuthError = false;
// Redirect to the originally requested page, or to the home page
this.$router.push(
this.$route.query.redirectFrom || {
name: "default",
}
);
})
.catch((error) => {
this.tryingToLogIn = false;
this.authError = error ? error : "";
this.isAuthError = true;
})
);
} else if (process.env.VUE_APP_DEFAULT_AUTH === "fakebackend") {
const { email, password } = this;
if (email && password) {
this.login({
email,
password,
});
}
} else if (process.env.VUE_APP_DEFAULT_AUTH === "authapi") {
axios
.post("http://127.0.0.1:8000/api/login", {
email: this.email,
password: this.password,
})
.then((res) => {
return res;
});
}
}
},
},
mounted() {
document.body.classList.add("auth-body-bg");
},
};
</script>
<template>
<div>
<div class="container-fluid p-0">
<div class="row g-0">
<div class="col-xl-9">
<div class="auth-full-bg pt-lg-5 p-4">
<div class="w-100">
<div class="bg-overlay"></div>
<div class="d-flex h-100 flex-column">
<div class="p-4 mt-auto">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="text-center">
<h4 class="mb-3">
<i
class="
bx
bxs-quote-alt-left
text-primary
h1
align-middle
me-3
"
></i
><span class="text-primary">5k</span>+ Satisfied
clients
</h4>
<div dir="ltr" class="owl-theme">
<b-carousel
id="carousel-1"
:interval="4000"
indicators
>
<b-carousel-slide>
<p class="font-size-16 mb-4">
" Fantastic theme with a ton of options. If you
just want the HTML to integrate with your
project, then this is the package. You can find
the files in the 'dist' folder...no need to
install git and all the other stuff the
documentation talks about. "
</p>
<div>
<h4 class="font-size-16 text-primary">
Abs1981
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
<b-carousel-slide>
<p class="font-size-16 mb-4">
" If Every Vendor on Envato are as supportive as
Themesbrand, Development with be a nice
experience. You guys are Wonderful. Keep us the
good work. "
</p>
<div>
<h4 class="font-size-16 text-primary">
nezerious
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
</b-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-xl-3">
<div class="auth-full-page-content p-md-5 p-4">
<div class="w-100">
<div class="d-flex flex-column h-100">
<div class="mb-4 mb-md-5">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="18"
class="auth-logo-dark"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="18"
class="auth-logo-light"
/>
</router-link>
</div>
<div class="my-auto">
<div>
<h5 class="text-primary">Welcome Back !</h5>
<p class="text-muted">Sign in to continue to Skote.</p>
</div>
<b-alert
v-model="isAuthError"
variant="danger"
class="mt-3"
dismissible
>{{ authError }}</b-alert
>
<div
v-if="notification.message"
:class="'alert ' + notification.type"
>
{{ notification.message }}
</div>
<div class="mt-4">
<form>
<b-form-group
class="mb-3"
id="input-group-1"
label="Email"
label-for="input-1"
>
<b-form-input
id="input-1"
v-model="email"
type="text"
placeholder="Enter email"
:class="{
'is-invalid': submitted && $v.email.$error,
}"
></b-form-input>
<div
v-if="submitted && $v.email.$error"
class="invalid-feedback"
>
<span v-if="!$v.email.required"
>Email is required.</span
>
<span v-if="!$v.email.email"
>Please enter valid email.</span
>
</div>
</b-form-group>
<b-form-group
class="mb-3"
id="input-group-2"
label="Password"
label-for="input-2"
>
<b-form-input
id="input-2"
v-model="password"
type="password"
placeholder="Enter password"
:class="{
'is-invalid': submitted && $v.password.$error,
}"
></b-form-input>
<div
v-if="submitted && v$.password.$error"
class="invalid-feedback"
>
<span v-if="v$.password.required.$message">{{
v$.password.required.$message
}}</span>
</div>
</b-form-group>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
id="remember-check"
/>
<label class="form-check-label" for="remember-check">
Remember me
</label>
</div>
<div class="mt-3 d-grid">
<b-button type="submit" variant="primary"
>Log In</b-button
>
</div>
<div class="mt-4 text-center">
<h5 class="font-size-14 mb-3">Sign in with</h5>
<ul class="list-inline">
<li class="list-inline-item">
<a
href="javascript::void()"
class="
social-list-item
bg-primary
text-white
border-primary
"
>
<i class="mdi mdi-facebook"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript::void()"
class="
social-list-item
bg-info
text-white
border-info
"
>
<i class="mdi mdi-twitter"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript::void()"
class="
social-list-item
bg-danger
text-white
border-danger
"
>
<i class="mdi mdi-google"></i>
</a>
</li>
</ul>
</div>
</form>
<div class="mt-5 text-center">
<p>
Don't have an account ?
<router-link
to="/auth/register-2"
class="fw-medium text-primary"
>
Signup now
</router-link>
</p>
</div>
</div>
</div>
<div class="mt-4 mt-md-5 text-center">
<p class="mb-0">
©
{{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container-fluid -->
</div>
</template>
<style lang="scss" scoped>
.carousel-caption {
position: relative !important;
right: 0;
bottom: 1.25rem;
left: 0;
padding-top: 1.25rem;
padding-bottom: 1.25rem;
color: #495057;
text-align: center;
}
.carousel-indicators li {
background-color: rgba(85, 110, 230, 0.25);
}
</style>

View File

@ -1,292 +0,0 @@
<script>
import axios from "axios";
import {
authMethods,
authFackMethods,
notificationMethods,
} from "@/state/helpers";
import { mapState } from "vuex";
import appConfig from "@/app.config";
import { required, email, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
/**
* Login sample page
*/
export default {
setup() {
return { v$: useVuelidate() };
},
page: {
title: "Login",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
data() {
return {
email: "admin@themesbrand.com",
password: "123456",
submitted: false,
authError: null,
tryingToLogIn: false,
isAuthError: false,
};
},
validations: {
email: {
required: helpers.withMessage("Email is required", required),
email: helpers.withMessage("Please enter valid email", email),
},
password: {
required: helpers.withMessage("Password is required", required),
},
},
computed: {
...mapState("authfack", ["status"]),
notification() {
return this.$store ? this.$store.state.notification : null;
},
},
methods: {
...authMethods,
...authFackMethods,
...notificationMethods,
// Try to log the user in with the username
// and password they provided.
tryToLogIn() {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
if (process.env.VUE_APP_DEFAULT_AUTH === "firebase") {
this.tryingToLogIn = true;
// Reset the authError if it existed.
this.authError = null;
return (
this.logIn({
email: this.email,
password: this.password,
})
// eslint-disable-next-line no-unused-vars
.then((token) => {
this.tryingToLogIn = false;
this.isAuthError = false;
// Redirect to the originally requested page, or to the home page
this.$router.push(
this.$route.query.redirectFrom || {
name: "default",
}
);
})
.catch((error) => {
this.tryingToLogIn = false;
this.authError = error ? error : "";
this.isAuthError = true;
})
);
} else if (process.env.VUE_APP_DEFAULT_AUTH === "fakebackend") {
const { email, password } = this;
if (email && password) {
this.login({
email,
password,
});
}
} else if (process.env.VUE_APP_DEFAULT_AUTH === "authapi") {
axios
.post("http://127.0.0.1:8000/api/login", {
email: this.email,
password: this.password,
})
.then((res) => {
return res;
});
}
}
},
},
};
</script>
<template>
<div class="account-pages my-5 pt-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card overflow-hidden">
<div class="bg-soft bg-primary">
<div class="row">
<div class="col-7">
<div class="text-primary p-4">
<h5 class="text-primary">Welcome Back !</h5>
<p>Sign in to continue to Skote.</p>
</div>
</div>
<div class="col-5 align-self-end">
<img
src="@/assets/images/profile-img.png"
alt
class="img-fluid"
/>
</div>
</div>
</div>
<div class="card-body pt-0">
<div>
<router-link to="/">
<div class="avatar-md profile-user-wid mb-4">
<span class="avatar-title rounded-circle bg-light">
<img src="@/assets/images/logo.svg" alt height="34" />
</span>
</div>
</router-link>
</div>
<b-alert
v-model="isAuthError"
variant="danger"
class="mt-3"
dismissible
>{{ authError }}</b-alert
>
<div
v-if="notification.message"
:class="'alert ' + notification.type"
>
{{ notification.message }}
</div>
<b-form class="p-2" @submit.prevent="tryToLogIn">
<b-form-group
class="mb-3"
id="input-group-1"
label="Email"
label-for="input-1"
>
<b-form-input
id="input-1"
v-model="email"
type="text"
placeholder="Enter email"
:class="{ 'is-invalid': submitted && v$.email.$error }"
></b-form-input>
<div
v-for="(item, index) in v$.email.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</b-form-group>
<b-form-group
class="mb-3"
id="input-group-2"
label="Password"
label-for="input-2"
>
<b-form-input
id="input-2"
v-model="password"
type="password"
placeholder="Enter password"
:class="{ 'is-invalid': submitted && v$.password.$error }"
></b-form-input>
<div
v-if="submitted && v$.password.$error"
class="invalid-feedback"
>
<span v-if="v$.password.required.$message">{{
v$.password.required.$message
}}</span>
</div>
</b-form-group>
<b-form-checkbox
class="form-check"
id="customControlInline"
name="checkbox-1"
value="accepted"
unchecked-value="not_accepted"
>
Remember me
</b-form-checkbox>
<div class="mt-3 d-grid">
<b-button type="submit" variant="primary" class="btn-block"
>Log In</b-button
>
</div>
<div class="mt-4 text-center">
<h5 class="font-size-14 mb-3">Sign in with</h5>
<ul class="list-inline">
<li class="list-inline-item">
<a
href="javascript: void(0);"
class="
social-list-item
bg-primary
text-white
border-primary
"
>
<i class="mdi mdi-facebook"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript: void(0);"
class="social-list-item bg-info text-white border-info"
>
<i class="mdi mdi-twitter"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript: void(0);"
class="
social-list-item
bg-danger
text-white
border-danger
"
>
<i class="mdi mdi-google"></i>
</a>
</li>
</ul>
</div>
<div class="mt-4 text-center">
<router-link to="/forgot-password" class="text-muted">
<i class="mdi mdi-lock me-1"></i> Forgot your password?
</router-link>
</div>
</b-form>
</div>
<!-- end card-body -->
</div>
<div class="mt-5 text-center">
<p>
Don't have an account ?
<router-link to="/auth/register-1" class="fw-medium text-primary"
>Signup now</router-link
>
</p>
<p>
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -1,202 +0,0 @@
<script>
// import axios from "axios";
import { required, email, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
import appConfig from "@/app.config";
/**
* Recover password Sample page
*/
export default {
setup() {
return { v$: useVuelidate() };
},
validations: {
email: {
required: helpers.withMessage("Email is required", required),
email: helpers.withMessage("Please enter valid email", email),
},
password: {
required: helpers.withMessage("Password is required", required),
},
password_confirmation: {
required: helpers.withMessage("Confirm password is required", required),
},
},
data() {
return {
submitted: false,
email: "",
password: "",
password_confirmation: "",
};
},
methods: {
tryToResetpwd() {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
// axios
// .post("http://127.0.0.1:8000/api/password/reset", {
// token: this.$route.query.token,
// email: this.email,
// password: this.password,
// password_confirmation: this.password_confirmation,
// })
// .then((result) => {
// return result;
// });
}
},
},
page: {
title: "Recover password",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
};
</script>
<template>
<div class="account-pages my-5 pt-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card overflow-hidden">
<div class="bg-soft-primary">
<div class="row">
<div class="col-7">
<div class="text-primary p-4">
<h5 class="text-primary">Reset Password</h5>
<p>Re-Password with Skote.</p>
</div>
</div>
<div class="col-5 align-self-end">
<img
src="@/assets/images/profile-img.png"
alt
class="img-fluid"
/>
</div>
</div>
</div>
<div class="card-body pt-0">
<div>
<a href="/">
<div class="avatar-md profile-user-wid mb-4">
<span class="avatar-title rounded-circle bg-light">
<img
src="@/assets/images/logo.svg"
alt
class="rounded-circle"
height="34"
/>
</span>
</div>
</a>
</div>
<div class="p-2">
<div class="alert alert-success text-center mb-4" role="alert">
Enter your Email and instructions will be sent to you!
</div>
<form class="form-horizontal" @submit.prevent="tryToResetpwd">
<div class="form-group">
<label for="useremail">Email</label>
<input
type="email"
v-model="email"
class="form-control"
id="useremail"
placeholder="Enter email"
:class="{ 'is-invalid': submitted && $v.email.$error }"
/>
<div
v-for="(item, index) in v$.email.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
<div class="form-group">
<label for="pwd">Password</label>
<input
type="password"
v-model="password"
class="form-control"
id="pwd"
placeholder="Enter password"
:class="{
'is-invalid': submitted && $v.password.$error,
}"
/>
<div
v-if="submitted && v$.user.password.$error"
class="invalid-feedback"
>
<span v-if="v$.user.password.required.$message">{{
v$.user.password.required.$message
}}</span>
</div>
</div>
<div class="form-group">
<label for="confirm_pwd">Confirm Password</label>
<input
v-model="password_confirmation"
type="password"
class="form-control"
id="confirm_pwd"
placeholder="Enter confirm password"
:class="{
'is-invalid':
submitted && $v.password_confirmation.$error,
}"
/>
<div
v-if="submitted && v$.password_confirmation.$error"
class="invalid-feedback"
>
<span v-if="v$.password_confirmation.required.$message">{{
v$.password_confirmation.required.$message
}}</span>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-12 text-end">
<button class="btn btn-primary w-md" type="submit">
Reset
</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="mt-5 text-center">
<p>
Remember It ?
<router-link to="/auth/login-1" class="fw-medium text-primary"
>Sign In here</router-link
>
</p>
<p>
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -1,287 +0,0 @@
<script>
import axios from "axios";
import { required, email, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
import appConfig from "@/app.config";
import { authMethods } from "@/state/helpers";
/**
* Recoverpwd-2 component
*/
export default {
setup() {
return { v$: useVuelidate() };
},
page: {
title: "Recoverpwd-2",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {
email: "",
submitted: false,
error: null,
tryingToReset: false,
isResetError: false,
};
},
methods: {
...authMethods,
// Try to register the user in with the email, fullname
// and password they provided.
tryToReset() {
this.submitted = true;
// stop here if form is invalid
this.v$.$touch();
if (this.v$.$invalid) {
return;
} else {
if (process.env.VUE_APP_DEFAULT_AUTH === "firebase") {
this.tryingToReset = true;
// Reset the authError if it existed.
this.error = null;
return (
this.resetPassword({
email: this.email,
})
// eslint-disable-next-line no-unused-vars
.then((token) => {
this.tryingToReset = false;
this.isResetError = false;
})
.catch((error) => {
this.tryingToReset = false;
this.error = error ? error : "";
this.isResetError = true;
})
);
} else if (process.env.VUE_APP_DEFAULT_AUTH === "authapi") {
axios
.post("http://127.0.0.1:8000/api/password/create", {
email: this.email,
})
.then((res) => {
this.isResetError = true;
this.error = res.data;
return res;
});
}
}
},
},
validations: {
email: {
required: helpers.withMessage("Email is required", required),
email: helpers.withMessage("Please enter valid email", email),
},
},
mounted() {
document.body.classList.add("auth-body-bg");
},
};
</script>
<template>
<div>
<div class="container-fluid p-0">
<div class="row g-0">
<div class="col-xl-9">
<div class="auth-full-bg pt-lg-5 p-4">
<div class="w-100">
<div class="bg-overlay"></div>
<div class="d-flex h-100 flex-column">
<div class="p-4 mt-auto">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="text-center">
<h4 class="mb-3">
<i
class="
bx
bxs-quote-alt-left
text-primary
h1
align-middle
me-3
"
></i
><span class="text-primary">5k</span>+ Satisfied
clients
</h4>
<div dir="ltr" class="owl-theme">
<b-carousel
id="carousel-1"
:interval="4000"
indicators
>
<!-- Text slides with image -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" Fantastic theme with a ton of options. If you
just want the HTML to integrate with your
project, then this is the package. You can find
the files in the 'dist' folder...no need to
install git and all the other stuff the
documentation talks about. "
</p>
<div>
<h4 class="font-size-16 text-primary">
Abs1981
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
<!-- Slides with custom text -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" If Every Vendor on Envato are as supportive as
Themesbrand, Development with be a nice
experience. You guys are Wonderful. Keep us the
good work. "
</p>
<div>
<h4 class="font-size-16 text-primary">
nezerious
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
</b-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-xl-3">
<div class="auth-full-page-content p-md-5 p-4">
<div class="w-100">
<div class="d-flex flex-column h-100">
<div class="mb-4 mb-md-5">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="18"
class="auth-logo-dark"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="18"
class="auth-logo-light"
/>
</router-link>
</div>
<div class="my-auto">
<div>
<h5 class="text-primary">Reset Password</h5>
<p class="text-muted">Re-Password with Skote.</p>
</div>
<div class="mt-4">
<div
class="alert alert-success text-center mb-4"
role="alert"
>
Enter your Email and instructions will be sent to you!
</div>
<form @submit.prevent="tryToReset">
<b-alert
v-model="isResetError"
class="mb-4"
variant="danger"
dismissible
>{{ error }}</b-alert
>
<div class="mb-3">
<label for="useremail">Email</label>
<input
type="email"
v-model="email"
class="form-control"
id="useremail"
placeholder="Enter email"
:class="{
'is-invalid': submitted && v$.email.$error,
}"
/>
<div
v-for="(item, index) in v$.email.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</div>
<div class="row mb-0">
<div class="col-12 text-end">
<button
class="
btn btn-primary
w-md
waves-effect waves-light
"
type="submit"
>
Reset
</button>
</div>
</div>
</form>
<div class="mt-5 text-center">
<p>
Remember It ?
<router-link
to="/auth/login-2"
class="fw-medium text-primary"
>
Sign In here</router-link
>
</p>
</div>
</div>
</div>
<div class="mt-4 mt-md-5 text-center">
<p class="mb-0">
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container-fluid -->
</div>
</template>
<style lang="scss" scoped>
.carousel-caption {
position: relative !important;
right: 0;
left: 0;
padding-top: 1.25rem;
padding-bottom: 1.25rem;
color: #495057;
}
.carousel-indicators li {
background-color: rgba(85, 110, 230, 0.25);
}
</style>

View File

@ -1,433 +0,0 @@
<script>
import axios from "axios";
import { required, email, helpers } from "@vuelidate/validators";
import useVuelidate from "@vuelidate/core";
import {
authMethods,
authFackMethods,
notificationMethods,
} from "@/state/helpers";
import { mapState } from "vuex";
import appConfig from "@/app.config";
/**
* Register-2 component
*/
export default {
setup() {
return { v$: useVuelidate() };
},
page: {
title: "Register 2",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {
user: {
username: "",
email: "",
password: "",
},
submitted: false,
regError: null,
tryingToRegister: false,
isRegisterError: false,
registerSuccess: false,
};
},
validations: {
user: {
username: {
required: helpers.withMessage("Username is required", required),
},
email: {
required: helpers.withMessage("Email is required", required),
email: helpers.withMessage("Please enter valid email", email),
},
password: {
required: helpers.withMessage("Password is required", required),
},
},
},
computed: {
...mapState("authfack", ["status"]),
notification() {
return this.$store ? this.$store.state.notification : null;
},
},
mounted() {
document.body.classList.add("auth-body-bg");
},
methods: {
...authMethods,
...authFackMethods,
...notificationMethods,
// Try to register the user in with the email, username
// and password they provided.
tryToRegisterIn() {
this.submitted = true;
// stop here if form is invalid
this.$v.$touch();
if (this.$v.$invalid) {
return;
} else {
if (process.env.VUE_APP_DEFAULT_AUTH === "firebase") {
this.tryingToRegister = true;
// Reset the regError if it existed.
this.regError = null;
return (
this.register({
email: this.user.email,
password: this.user.password,
})
// eslint-disable-next-line no-unused-vars
.then((token) => {
this.tryingToRegister = false;
this.isRegisterError = false;
this.registerSuccess = true;
if (this.registerSuccess) {
this.$router.push(
this.$route.query.redirectFrom || {
name: "default",
}
);
}
})
.catch((error) => {
this.tryingToRegister = false;
this.regError = error ? error : "";
this.isRegisterError = true;
})
);
} else if (process.env.VUE_APP_DEFAULT_AUTH === "fakebackend") {
const { email, username, password } = this.user;
if (email && username && password) {
this.registeruser(this.user);
}
} else if (process.env.VUE_APP_DEFAULT_AUTH === "authapi") {
axios
.post("http://127.0.0.1:8000/api/register", {
username: this.user.username,
email: this.user.email,
password: this.user.password,
})
.then((res) => {
return res;
});
}
}
},
},
};
</script>
<template>
<div>
<div class="container-fluid p-0">
<div class="row g-0">
<div class="col-xl-9">
<div class="auth-full-bg pt-lg-5 p-4">
<div class="w-100">
<div class="bg-overlay"></div>
<div class="d-flex h-100 flex-column">
<div class="p-4 mt-auto">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="text-center">
<h4 class="mb-3">
<i
class="
bx
bxs-quote-alt-left
text-primary
h1
align-middle
me-3
"
></i
><span class="text-primary">5k</span>+ Satisfied
clients
</h4>
<div dir="ltr" class="owl-theme">
<b-carousel
id="carousel-1"
:interval="4000"
indicators
>
<!-- Text slides with image -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" Fantastic theme with a ton of options. If you
just want the HTML to integrate with your
project, then this is the package. You can find
the files in the 'dist' folder...no need to
install git and all the other stuff the
documentation talks about. "
</p>
<div>
<h4 class="font-size-16 text-primary">
Abs1981
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
<!-- Slides with custom text -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" If Every Vendor on Envato are as supportive as
Themesbrand, Development with be a nice
experience. You guys are Wonderful. Keep us the
good work. "
</p>
<div>
<h4 class="font-size-16 text-primary">
nezerious
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
</b-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-xl-3">
<div class="auth-full-page-content p-md-5 p-4">
<div class="w-100">
<div class="d-flex flex-column h-100">
<div class="mb-4 mb-md-5">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="18"
class="auth-logo-dark"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="18"
class="auth-logo-light"
/>
</router-link>
</div>
<div class="my-auto">
<div>
<h5 class="text-primary">Register account</h5>
<p class="text-muted">Get your free Skote account now.</p>
</div>
<div class="mt-4">
<b-alert
v-model="registerSuccess"
class="mt-3"
variant="success"
dismissible
>Registration successfull.</b-alert
>
<b-alert
v-model="isRegisterError"
class="mt-3"
variant="danger"
dismissible
>{{ regError }}</b-alert
>
<div
v-if="notification.message"
:class="'alert ' + notification.type"
>
{{ notification.message }}
</div>
<b-form @submit.prevent="tryToRegisterIn">
<b-form-group
class="mb-3"
id="email-group"
label="Username"
label-for="username"
>
<b-form-input
id="username"
v-model="user.username"
type="text"
placeholder="Enter username"
:class="{
'is-invalid': submitted && v$.user.username.$error,
}"
></b-form-input>
<div
v-if="submitted && v$.user.username.$error"
class="invalid-feedback"
>
<span v-if="v$.user.username.required.$message">{{
v$.user.username.required.$message
}}</span>
</div>
</b-form-group>
<b-form-group
class="mb-3"
id="fullname-group"
label="Email"
label-for="email"
>
<b-form-input
id="email"
v-model="user.email"
type="email"
placeholder="Enter email"
:class="{
'is-invalid': submitted && v$.user.email.$error,
}"
></b-form-input>
<div
v-for="(item, index) in v$.user.email.$errors"
:key="index"
class="invalid-feedback"
>
<span v-if="item.$message">{{ item.$message }}</span>
</div>
</b-form-group>
<b-form-group
class="mb-3"
id="password-group"
label="Password"
label-for="password"
>
<b-form-input
id="password"
v-model="user.password"
type="password"
placeholder="Enter password"
:class="{
'is-invalid': submitted && v$.user.password.$error,
}"
></b-form-input>
<div
v-if="submitted && v$.user.password.$error"
class="invalid-feedback"
>
<span v-if="v$.user.password.required.$message">{{
v$.user.password.required.$message
}}</span>
</div>
</b-form-group>
<div class="mt-4 d-grid">
<b-button
type="submit"
variant="primary"
class="btn-block"
>Register</b-button
>
</div>
<div class="mt-4 text-center">
<h5 class="font-size-14 mb-3">Sign up using</h5>
<ul class="list-inline">
<li class="list-inline-item">
<a
href="javascript::void()"
class="
social-list-item
bg-primary
text-white
border-primary
"
>
<i class="mdi mdi-facebook"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript::void()"
class="
social-list-item
bg-info
text-white
border-info
"
>
<i class="mdi mdi-twitter"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript::void()"
class="
social-list-item
bg-danger
text-white
border-danger
"
>
<i class="mdi mdi-google"></i>
</a>
</li>
</ul>
</div>
</b-form>
<div class="mt-5 text-center">
<p>
Already have an account ?
<router-link
to="/auth/login-2"
class="fw-medium text-primary"
>
Login</router-link
>
</p>
</div>
</div>
</div>
<div class="mt-4 mt-md-5 text-center">
<p class="mb-0">
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container-fluid -->
</div>
</template>
<style lang="scss" scoped>
.carousel-caption {
position: relative !important;
right: 0;
left: 0;
padding-top: 1.25rem;
padding-bottom: 1.25rem;
color: #495057;
}
.carousel-indicators li {
background-color: rgba(85, 110, 230, 0.25);
}
</style>

View File

@ -1,155 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Register sample page
*/
export default {
page: {
title: "Register",
meta: [
{
name: "description",
content: appConfig.description,
},
],
},
};
</script>
<template>
<div class="account-pages my-5 pt-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card overflow-hidden">
<div class="bg-soft bg-primary">
<div class="row">
<div class="col-7">
<div class="text-primary p-4">
<h5 class="text-primary">Free Register</h5>
<p>Get your free Skote account now.</p>
</div>
</div>
<div class="col-5 align-self-end">
<img
src="@/assets/images/profile-img.png"
alt
class="img-fluid"
/>
</div>
</div>
</div>
<div class="card-body pt-0">
<div>
<a href="/">
<div class="avatar-md profile-user-wid mb-4">
<span class="avatar-title rounded-circle bg-light">
<img
src="@/assets/images/logo.svg"
alt
class="rounded-circle"
height="34"
/>
</span>
</div>
</a>
</div>
<div class="p-2">
<form class="form-horizontal">
<div class="mb-3">
<label for="useremail">Email</label>
<input
type="email"
class="form-control"
id="useremail"
placeholder="Enter email"
/>
</div>
<div class="mb-3">
<label for="username">Username</label>
<input
type="text"
class="form-control"
id="username"
placeholder="Enter username"
/>
</div>
<div class="mb-3">
<label for="userpassword">Password</label>
<input
type="password"
class="form-control"
id="userpassword"
placeholder="Enter password"
/>
</div>
<div class="mt-4 d-grid">
<button class="btn btn-primary" type="submit">
Register
</button>
</div>
<div class="mt-4 text-center">
<h5 class="font-size-14 mb-3">Sign up using</h5>
<ul class="list-inline">
<li class="list-inline-item">
<a
href="javascript: void(0);"
class="social-list-item bg-primary text-white border-primary"
>
<i class="mdi mdi-facebook"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript: void(0);"
class="social-list-item bg-info text-white border-info"
>
<i class="mdi mdi-twitter"></i>
</a>
</li>
<li class="list-inline-item">
<a
href="javascript: void(0);"
class="social-list-item bg-danger text-white border-danger"
>
<i class="mdi mdi-google"></i>
</a>
</li>
</ul>
</div>
<div class="mt-4 text-center">
<p class="mb-0">
By registering you agree to the Skote
<a href="javascript: void(0);" class="text-primary"
>Terms of Use</a
>
</p>
</div>
</form>
</div>
</div>
</div>
<div class="mt-5 text-center">
<p>
Already have an account ?
<router-link
to="/auth/login-1"
class="fw-medium text-primary"
>Login</router-link
>
</p>
<p>
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -1,168 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Two-step-verification-2 component
*/
export default {
page: {
title: "Two step verification 2",
meta: [{ name: "description", content: appConfig.description }],
},
data() {
return {};
},
methods: {},
mounted() {
document.body.classList.add("auth-body-bg");
},
};
</script>
<template>
<div>
<div class="container-fluid p-0">
<div class="row g-0">
<div class="col-xl-9">
<div class="auth-full-bg pt-lg-5 p-4">
<div class="w-100">
<div class="bg-overlay"></div>
<div class="d-flex h-100 flex-column">
<div class="p-4 mt-auto">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="text-center">
<h4 class="mb-3">
<i
class="bx bxs-quote-alt-left text-primary h1 align-middle me-3"
></i
><span class="text-primary">5k</span>+ Satisfied
clients
</h4>
<div dir="ltr" class="owl-theme">
<b-carousel
id="carousel-1"
:interval="4000"
indicators
>
<!-- Text slides with image -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" Fantastic theme with a ton of options. If you
just want the HTML to integrate with your
project, then this is the package. You can find
the files in the 'dist' folder...no need to
install git and all the other stuff the
documentation talks about. "
</p>
<div>
<h4 class="font-size-16 text-primary">
Abs1981
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
<!-- Slides with custom text -->
<b-carousel-slide>
<p class="font-size-16 mb-4">
" If Every Vendor on Envato are as supportive as
Themesbrand, Development with be a nice
experience. You guys are Wonderful. Keep us the
good work. "
</p>
<div>
<h4 class="font-size-16 text-primary">
nezerious
</h4>
<p class="font-size-14 mb-0">- Skote User</p>
</div>
</b-carousel-slide>
</b-carousel>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
<div class="col-xl-3">
<div class="auth-full-page-content p-md-5 p-4">
<div class="w-100">
<div class="d-flex flex-column h-100">
<div class="mb-4 mb-md-5">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="18"
class="auth-logo-dark"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="18"
class="auth-logo-light"
/>
</router-link>
</div>
<div class="my-auto">
<div class="text-center">
<div class="avatar-md mx-auto">
<div class="avatar-title rounded-circle bg-light">
<i class="bx bxs-envelope h1 mb-0 text-primary"></i>
</div>
</div>
<div class="p-2 mt-4">
<h4>Verify your email</h4>
<p class="mb-5">
Please enter the 6 digit code sent to
<span class="fw-semibold">example@abc.com</span>
</p>
<div class="mt-4">
<router-link to="/" class="btn btn-success w-md"
>Confirm</router-link
>
</div>
</div>
</div>
</div>
<div class="mt-4 mt-md-5 text-center">
<p class="mb-0">
© {{ new Date().getFullYear() }} Skote. Crafted with
<i class="mdi mdi-heart text-danger"></i> by Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
<!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container-fluid -->
</div>
</template>
<style lang="scss" scoped>
.carousel-caption {
position: relative !important;
right: 0;
left: 0;
padding-top: 1.25rem;
padding-bottom: 1.25rem;
color: #495057;
}
.carousel-indicators li {
background-color: rgba(85, 110, 230, 0.25);
}
</style>

View File

@ -1,86 +0,0 @@
<script>
import appConfig from "@/app.config";
/**
* Two-step-verification component
*/
export default {
page: {
title: "Two step verification",
meta: [{ name: "description", content: appConfig.description }],
},
components: { },
};
</script>
<template>
<div class="account-pages my-5 pt-sm-5">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="text-center mb-5 text-muted">
<router-link to="/" class="d-block auth-logo">
<img
src="@/assets/images/logo-dark.png"
alt=""
height="20"
class="auth-logo-dark mx-auto"
/>
<img
src="@/assets/images/logo-light.png"
alt=""
height="20"
class="auth-logo-light mx-auto"
/>
</router-link>
<p class="mt-3">Responsive Bootstrap 5 Admin Dashboard</p>
</div>
</div>
</div>
<!-- end row -->
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5">
<div class="card">
<div class="card-body">
<div class="p-2">
<div class="text-center">
<div class="avatar-md mx-auto">
<div class="avatar-title rounded-circle bg-light">
<i class="bx bxs-envelope h1 mb-0 text-primary"></i>
</div>
</div>
<div class="p-2 mt-4">
<h4>Verify your email</h4>
<p class="mb-5">
Please enter the 6 digit code sent to
<span class="fw-semibold">example@abc.com</span>
</p>
<!-- <CodeInput :loading="false" class="input" /> -->
<div class="mt-4">
<router-link to="/" class="btn btn-success w-md"
>Confirm</router-link
>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mt-5 text-center">
<p>
Did't receive a code ?
<a href="#" class="fw-medium text-primary"> Resend </a>
</p>
<p>
©
{{ new Date().getFullYear() }}
Skote. Crafted with <i class="mdi mdi-heart text-danger"></i> by
Themesbrand
</p>
</div>
</div>
</div>
</div>
</div>
</template>

View File

@ -1,825 +0,0 @@
<script>
import Layout from "../../layouts/main";
import PageHeader from "@/components/page-header";
import appConfig from "@/app.config";
/**
* Basic-table component
*/
export default {
page: {
title: "Basic Tables",
meta: [{ name: "description", content: appConfig.description }],
},
components: { Layout, PageHeader },
data() {
return {
title: "Basic Tables",
items: [
{
text: "Tables",
href: "/",
},
{
text: "Basic Tables",
active: true,
},
],
};
},
};
</script>
<template>
<Layout>
<PageHeader :title="title" :items="items" />
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Basic example</h4>
<p class="card-title-desc">
For basic stylinglight padding and only horizontal dividersadd
the base class <code>.table</code> to any
<code>&lt;table&gt;</code>.
</p>
<div class="table-responsive">
<table class="table mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Dark table</h4>
<p class="card-title-desc">
You can also invert the colorswith light text on dark
backgroundswith <code>.table-dark</code>.
</p>
<div class="table-responsive">
<table class="table table-dark mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Table head</h4>
<p class="card-title-desc">
Use one of two modifier classes to make
<code>&lt;thead&gt;</code>s appear light or dark gray.
</p>
<div class="table-responsive">
<table class="table mb-0">
<thead class="table-light">
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Striped rows</h4>
<p class="card-title-desc">
Use <code>.table-striped</code> to add zebra-striping to any table
row within the <code>&lt;tbody&gt;</code>.
</p>
<div class="table-responsive">
<table class="table table-striped mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Bordered table</h4>
<p class="card-title-desc">
Add <code>.table-bordered</code> for borders on all sides of the
table and cells.
</p>
<div class="table-responsive">
<table class="table table-bordered mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Borderless table</h4>
<p class="card-title-desc">
Add <code>.table-borderless</code> for a table without borders.
</p>
<div class="table-responsive">
<table class="table table-borderless mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Table Border color</h4>
<p class="card-title-desc">
Add <code>.table-bordered</code> & <code>.border-*</code> for
colored borders on all sides of the table and cells.
</p>
<div class="table-responsive">
<table class="table table-bordered border-primary mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Table Border color</h4>
<p class="card-title-desc">
Add <code>.table-bordered</code> & <code>.border-*</code> for
colored borders on all sides of the table and cells.
</p>
<div class="table-responsive">
<table class="table table-bordered border-success mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<div class="table-responsive">
<h4 class="card-title">Vertical alignment</h4>
<p class="card-title-desc">
Table cells in <code>&lt;tbody&gt;</code> inherit their
alignment from <code>&lt;table&gt;</code> and are aligned to the
the top by default. Use the vertical align classes to re-align
where needed.
</p>
<div class="table-responsive">
<table class="table align-middle mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>
<button type="button" class="btn btn-light btn-sm">
View
</button>
</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>
<button type="button" class="btn btn-light btn-sm">
View
</button>
</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>
<button type="button" class="btn btn-light btn-sm">
View
</button>
</td>
</tr>
<tr>
<th scope="row">4</th>
<td>Jacob</td>
<td>Thornton</td>
<td>
<button type="button" class="btn btn-light btn-sm">
View
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Nesting</h4>
<p class="card-title-desc">
Border styles, active styles, and table variants are not inherited
by nested tables.
</p>
<div class="table-responsive">
<table class="table table-striped table-bordered mb-0">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First</th>
<th scope="col">Last</th>
<th scope="col">Handle</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<td colspan="4">
<table class="table mb-0">
<thead>
<tr>
<th scope="col">Header</th>
<th scope="col">Header</th>
<th scope="col">Header</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">A</th>
<td>First</td>
<td>Last</td>
</tr>
<tr>
<th scope="row">B</th>
<td>First</td>
<td>Last</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Hoverable rows</h4>
<p class="card-title-desc">
Add <code>.table-hover</code> to enable a hover state on table
rows within a <code>&lt;tbody&gt;</code>.
</p>
<div class="table-responsive">
<table class="table table-hover mb-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Small table</h4>
<p class="card-title-desc">
Add <code>.table-sm</code> to make tables more compact by cutting
cell padding in half.
</p>
<div class="table-responsive">
<table class="table table-sm m-0">
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
<tr>
<th scope="row">4</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">5</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Contextual classes</h4>
<p class="card-title-desc">
Use contextual classes to color table rows or individual cells.
</p>
<div class="table-responsive">
<table class="table mb-0">
<thead>
<tr>
<th>#</th>
<th>Column heading</th>
<th>Column heading</th>
<th>Column heading</th>
</tr>
</thead>
<tbody>
<tr class="table-light">
<th scope="row">1</th>
<td>Column content</td>
<td>Column content</td>
<td>Column content</td>
</tr>
<tr class="table-success">
<th scope="row">2</th>
<td>Column content</td>
<td>Column content</td>
<td>Column content</td>
</tr>
<tr class="table-info">
<th scope="row">3</th>
<td>Column content</td>
<td>Column content</td>
<td>Column content</td>
</tr>
<tr class="table-warning">
<th scope="row">4</th>
<td>Column content</td>
<td>Column content</td>
<td>Column content</td>
</tr>
<tr class="table-danger">
<th scope="row">5</th>
<td>Column content</td>
<td>Column content</td>
<td>Column content</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<h4 class="card-title">Captions</h4>
<p class="card-title-desc">
A <code>&lt;caption&gt;</code> functions like a heading for a
table. It helps users with screen readers to find a table and
understand what its about and decide if they want to read it.
</p>
<div class="table-responsive">
<table class="table mb-0">
<caption>
List of users
</caption>
<thead>
<tr>
<th>#</th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="card-title">Responsive tables</h4>
<p class="card-title-desc">
Create responsive tables by wrapping any <code>.table</code> in
<code>.table-responsive</code>
to make them scroll horizontally on small devices (under 768px).
</p>
<div class="table-responsive">
<table class="table mb-0">
<thead>
<tr>
<th>#</th>
<th>Table heading</th>
<th>Table heading</th>
<th>Table heading</th>
<th>Table heading</th>
<th>Table heading</th>
<th>Table heading</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
</Layout>
</template>

View File

@ -1,92 +0,0 @@
const upcomingTasks = [
{
id: 1,
title: 'Topnav layout design',
date: '14 Oct, 2019',
task: 'Waiting',
user: [require('@/assets/images/users/avatar-4.jpg'), require('@/assets/images/users/avatar-5.jpg')],
budget: 145,
groupId: 1
},
{
id: 2,
title: 'Create a New Landing UI',
date: '15 Oct, 2019',
task: 'Approved',
user: [require('@/assets/images/users/avatar-6.jpg'), require('@/assets/images/users/avatar-7.jpg')],
budget: 112,
groupId: 1
},
{
id: 3,
title: 'Create a Skote Logo',
date: '15 Oct, 2019',
task: 'Waiting',
user: [require('@/assets/images/users/avatar-5.jpg')],
budget: 86,
groupId: 1
},
];
const progressTasks = [
{
id: 4,
title: 'Brand logo design',
date: '12 Oct, 2019',
task: 'Complete',
user: [require('@/assets/images/users/avatar-6.jpg')],
budget: 132,
groupId: 2
},
{
id: 5,
title: 'Create a Blog Template UI',
date: '13 Oct, 2019',
task: 'Pending',
user: [require('@/assets/images/users/avatar-8.jpg'), require('@/assets/images/users/avatar-1.jpg')],
budget: 103,
groupId: 2
},
{
id: 6,
title: 'Skote Dashboard UI',
date: '13 Oct, 2019',
task: 'Complete',
user: [require('@/assets/images/users/avatar-2.jpg')],
budget: 94,
groupId: 2
},
];
const completedTasks = [
{
id: 7,
title: 'Redesign - Landing page',
date: '10 Oct, 2019',
task: 'Complete',
user: [require('@/assets/images/users/avatar-4.jpg')],
budget: 145,
groupId: 3
},
{
id: 8,
title: 'Multipurpose Landing',
date: '09 Oct, 2019',
task: 'Complete',
user: [require('@/assets/images/users/avatar-6.jpg'), require('@/assets/images/users/avatar-7.jpg')],
budget: 92,
groupId: 3
},
{
id: 9,
title: 'Skote landing Psd',
date: '15 Oct, 2019',
task: 'Waiting',
user: [require('@/assets/images/users/avatar-5.jpg')],
budget: 86,
groupId: 3
},
];
export { upcomingTasks, progressTasks, completedTasks };

View File

@ -1,122 +0,0 @@
const tasksChart = {
series: [{
name: 'Complete Tasks',
type: 'column',
data: [23, 11, 22, 27, 13, 22, 52, 21, 44, 22, 30]
},
{
name: 'All Tasks',
type: 'line',
data: [23, 11, 34, 27, 17, 22, 62, 32, 44, 22, 39]
}],
chartOptions: {
chart: {
stacked: false,
toolbar: {
show: false,
}
},
dataLabels: {
enabled: false
},
stroke: {
width: 2,
curve: 'smooth'
},
plotOptions: {
bar: {
columnWidth: '20%',
endingShape: 'rounded'
}
},
colors: ['#556ee6', '#34c38f'],
fill: {
gradient: {
inverseColors: false,
shade: 'light',
type: "vertical",
opacityFrom: 0.85,
opacityTo: 0.55,
stops: [0, 100, 100, 100]
}
},
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov'],
markers: {
size: 0
},
yaxis: {
min: 0
},
}
};
const tasks = [
{
index: 1,
taskType: 'upcoming',
name: 'Create a Skote Dashboard UI',
images: [require('@/assets/images/users/avatar-2.jpg'), require('@/assets/images/users/avatar-1.jpg')],
status: 'Waiting',
checked: false
},
{
index: 2,
taskType: 'upcoming',
name: 'Create a New Landing UI',
images: [require('@/assets/images/users/avatar-4.jpg'), require('@/assets/images/users/avatar-5.jpg')],
status: 'Approved',
checked: true
},
{
index: 3,
taskType: 'upcoming',
name: 'Create a Skote Logo',
images: [require('@/assets/images/users/avatar-1.jpg')],
status: 'Waiting',
checked: false
},
{
index: 4,
taskType: 'inprogress',
name: 'Brand logo design',
images: [require('@/assets/images/users/avatar-7.jpg')],
status: 'Complete',
checked: true
},
{
index: 5,
taskType: 'inprogress',
name: 'Create a Blog Template UI',
images: [require('@/assets/images/users/avatar-8.jpg'), require('@/assets/images/users/avatar-1.jpg')],
status: 'Pending',
checked: false
},
{
index: 6,
taskType: 'completed',
name: 'Redesign - Landing page',
images: [require('@/assets/images/users/avatar-6.jpg')],
status: 'Complete',
checked: false
},
{
index: 7,
taskType: 'completed',
name: 'Multipurpose Landing',
images: [require('@/assets/images/users/avatar-7.jpg')],
status: 'Complete',
checked: true
},
{
index: 8,
taskType: 'completed',
name: 'Create a Blog Template UI',
images: [require('@/assets/images/users/avatar-4.jpg'), require('@/assets/images/users/avatar-2.jpg')],
status: 'Complete',
checked: false
}
];
export { tasksChart, tasks };

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