Top

Advance UI Elements



Inside Your template tags add


<div class="vertical-scroll scroll-demo custom-scrollbar">
  <h5 class="pb-2">Custom Scrollbar </h5>
  <p>I'm quite interested in learning more about <em class="txt-danger">custom scrollbars</em> because
      they are becoming more and more common.</p>
  <div class="scrollbar-images"><img class="img-fluid" src="/images/banner/1.jpg" alt="banner">
  </div>
  <p v-for="(item, index) in custom" :key="index" v-html="item.desc">
  </p>
</div>

Inside Your script tags add

import { custom } from "~/core/data/scrollable"

Inside ts add

interface customs {
     desc: string
 }
export const custom: customs[] = [
{
    desc: " There are various justifications for customizing a scrollbar. For instance, the default scrollbar can cause an app's user interface to look inconsistent across various operating systems. In this case, having a single style is helpful."
},
{
    desc: "I never had the opportunity to learn about CSS scrollbar customization, but I have always been interested in doing so. I'll take the chance to learn more about them and share my trip in this essay."
},
{
    desc: "One crucial point to remember is that, depending on the design, a scrollbar may operate either horizontally or vertically . Additionally, it might alter when you work on a website that is global and operates in both left-to-right and right-to-left orientations. "
}
]

npm i vue3-treeview

Inside Your template tags add

<treeview :nodes="nodes" :config="config"/>

Inside Your script tags add

import treeview from "vue3-treeview";
                  import "vue3-treeview/dist/style.css";
                  import { nodes, config } from "~/composables/common/treeView"

Inside ts add

interface Node {
      text: string;
      children?: string[];
  }
  
  interface Nodes {
      [key: string]: Node;
  }
  export let nodes = ref({
      id1: {
          text: "Admin",
          children: ["id11", "id12"],
      },
      id11: {
          text: "Assets",
          children: ["id113", "id118"],
      },
      id12: {
          text: "Default",
          children: ["id131", "id122"],
      },
      id111: {
          text: "CSS",
          children: ["id114", "id115"],
      },
      id114: {
          text: "Css One",
      },
      id115: {
          text: "Css Two",
      },
      id113: {
          text: "Js",
          children: ["id116", "id117"],
      },
      id116: {
          text: "Js One"
      },
      id117: {
          text: "Js Two"
      },
      id118: {
          text: "Scss",
          children: ["id119"]
      },
      id119: {
          text: "Sub Child",
          children: ["id120", "id121"]
      },
      id120: {
          text: "Sub File"
      },
      id121: {
          text: "Sub File"
      },
      id131: {
          text: "Dashboard"
      },
      id122: {
          text: "Typography"
      },
      id2: {
          text: "index file",
      },
  });
  
  export let config = ref({
      roots: ["id1", "id2"],
  
  });

npm i vue3-toastify

Inside Your template tags add


<class="btn btn-success " type="button" @click="success" variant="success">Success</Button>

Inside Your script tags add

let toast = inject('toast')
 function success() {
  toast.success(' New order has been placed ', {
      hideProgressBar: true, autoClose: 2000, theme: 'colored', position: 'top-right'
  });
}

Inside plugins.ts add

import { defineNuxtPlugin } from '#app'
                  import { toast } from 'vue3-toastify';
                  import 'vue3-toastify/dist/index.css';
                  export default defineNuxtPlugin(nuxtApp => {
                    if (process.client) {
                    nuxtApp.vueApp.provide("toast", toast);
                    }
                  })
                

npm i dropzone-vue

Inside Your template tags add

<DropZone
:maxFileSize="Number(60000000)"
:uploadOnDrop="true"
:dropzoneMessageClassName="customClass" :maxFiles="1">
</DropZone>

Inside Your script tags add

import DropZone from "dropzone-vue";

Inside Your style tags add

@import 'dropzone-vue/dist/dropzone-vue.common.css';

npm i v-onboarding

Inside Your template tags add

<img img class="img-fluid" alt="" src="/images/user/7.jpg" data-intro="This is Profile image">
<router-link class="icon-wrapper" id="update-profile-tour" to="/users/edit">
<i class="icofont icofont-pencil-alt-5" data-intro="Change Profile image here"  id="update-profile-tour" ></i>
</router-link>
<VOnboardingWrapper ref="wrapper" :steps="steps" class="tour-visit"/>

Inside Your script tags add

import { VOnboardingWrapper, useVOnboarding } from 'v-onboarding'
 import 'v-onboarding/dist/style.css'
 const { start, goToStep, finish } = useVOnboarding(wrapper)
 let steps = [
     {
         attachTo: { element: '#profiletour' }, content: { title: "This is Yuri profile" }
     },
     {
         attachTo: { element: '#update-profile-tour' }, content: { title: "Change Yuri profile image here" }
     }
 ]
 
 onMounted(() => {
     start()
 });

npm i sweetalert2

Inside Your template tags add

<button class="btn btn-danger sweet-5" type="button" v-on:click="basic_warning_alert" >Warning alert</button>

Inside Your script tags add

const swal = inject("$swal")
function basic_warning_alert() {
Swal.fire({
icon: 'warning',
title: "Are you sure?",
text: 'Once deleted, you will not be able to recover this imaginary file!',
showCancelButton: true,
confirmButtonText: 'Ok',
confirmButtonColor: '#3e5fce',
cancelButtonText: 'Cancel',
cancelButtonColor: '#efefef',
}).then((result) => {
if (result.value) {
Swal.fire({
icon: 'success',
text: 'Poof! Your imaginary file has been deleted!',
confirmButtonColor: '#3e5fce',
});
} else {
Swal.fire({
text: 'Your imaginary file is safe!',
confirmButtonColor: '#3e5fce',
});
}
});
}

Inside plugins.ts add

import { defineNuxtPlugin } from '#app'
                  import Swal from "sweetalert2";
                
                  export default defineNuxtPlugin(nuxtApp => {
                    if (process.client) {
                      nuxtApp.provide('Swal', Swal)
                    }
                  })
                

npm i vue-slider-component

Inside Your template tags add

<VueSlider v-model="one.value" :data="one.data" :tooltip="'always'" :tooltip-placement="'top'" ></VueSlider>

Inside Your script tags add

import VueSlider from 'vue-slider-component'
 import 'vue-slider-component/theme/antd.css'
 interface ThreeData {
  value: number;
  data: number[];
}
let one = ref({
  value: 551,
  data: [10, 551, 1000]
})

npm i vue-cropperjs

Inside Your template tags add

<vue-cropper 
vue-cropper ref="cropper"
:guides="true" 
:view-mode="viewmodeselected" 
drag-mode="crop"
:aspectRatio="aspectRatioselected" 
:auto-crop-area="0.5" 
:min-container-width="250"
:min-container-height="180" 
:background="true" 
:rotatable="true" 
:movable="true"
:src="getImgUrl(myimgSrc)" 
alt="Source Image" 
:ready="ready" 
:crop="cropImage"
img-preview=".img-preview" 
:img-style="{ width: '800px', height: '500px' }">
</vue-cropper>

Inside Your script tags add

import VueCropper from 'vue-cropperjs';
import 'cropperjs/dist/cropper.css';
import { getImages } from "~/composables/common/getImages"
let myimgSrc = ref('other-images/bg-profile.png')
let imageData = ref()
let containerData = ref('')
let putData = ref('')
let viewmodeselected = ref(0)
let cropImg = ref('')
let aspectRatioselected = ref(1.7777777777777777)
let cropper = ref()
let convertNumber = (num?: number) => num != null ? Math.round(num) : undefined
function ready() {
    containerData.value = cropper.value.getContainerData();
}
function cropImage() {
    if (cropper.value) {
        imageData.value = cropper.value.getData();
        cropImg.value = cropper.value.getCroppedCanvas().toDataURL();
    }
}

Inside Your template tags add

<div class="col-xl-6 box-col-6 notification main-timeline">
<div class="card height-equal title-line">
<div class="card-header"><h2 class="">Basic Timeline</h2><p class="f-m-light mt-1">Use the <code>.main-basic-timeline </code>class through made basic timeline.</p></div>
<div class="card-body dark-timeline">
  <ul class="timeline-lists">
    <li class="d-flex" v-for="(item, index) in basictimeline" :key="index">
        <div :class="item.dotClass"></div>
        <div class="w-100 ms-3">
            <p class="d-flex justify-content-between mb-2"><span class="date-content light-background">{{ item.date
            }}</span><span>{{ item.time }}</span></p>
            <h6>{{ item.title }}<span class="dot-notification"></span></h6>
            <p class="f-light">{{ item.desc }}</p>
        </div>
    </li>
</ul>
</div>
</div>
</div>

Inside Your script tags add

import { basictimeline } from "~/core/data/advance"

Inside ts add

interface Timeline {
 dotClass: string;
 date: string;
 time: string;
 title: string;
 desc: string;
}
  export const basictimeline: Timeline[] = [
    {
        dotClass: "timeline-dot-primary",
        date: "2 Feb 2024",
        time: "7:00 AM",
        title: "CONFERENCE WITH CLIENT",
        desc: "At noon today, there will be a meeting with a UK client."
    },
    {
        dotClass: "timeline-dot-secondary",
        date: "22 March 2024",
        time: "3:45 PM",
        title: "DISCUSSION WITH MARKETING TEAM",
        desc: "discussion with the marketing staff on the success of the most recent project"
    },
    {
        dotClass: "timeline-dot-success",
        date: "16 May 2024",
        time: "1:22 AM",
        title: "INVEST IN A NEW HOSTING PLAN",
        desc: "today at 2 pm AM, purchase a new hosting package as agreed upon with the management team."
    },
    {
        dotClass: "timeline-dot-warning",
        date: "23 Nov 2024",
        time: "6:56 AM",
        title: "DISCUSSION WITH DESIGNER TEAM",
        desc: "discussion with the designer employee on the success of the most recent project."
    },
    {
        dotClass: "timeline-dot-info",
        date: "12 Dec 2024",
        time: "12:05 AM",
        title: "DISCUSSION WITH NEW THEME LAUNCH",
        desc: "discussion with the how many themes made in our portfolio."
    },
    {
        dotClass: "timeline-dot-danger",
        date: "02 Jan 2024",
        time: "6:56 AM",
        title: "PURCHASE NEW CHAIRS FOR OFFICE ",
        desc: "online purchase new chairs for office"
    }
]