Categories
Top Vue Packages

Top Vue Packages for Adding Sliders, Highlighting Code, and More

In this article, we’ll look at the best packages for adding auto-scrolling, animating numbers, highlighting code, sliders, and displaying notifications.

vue-seamless-scroll

vue-seamless-scroll lets us add a component that automatically scrolls through its contents.

To use it, we run:

npm i vue-seamless-scroll

to install it.

Then we can write:

<template>
  <vue-seamless-scroll :data="listData" class="seamless-warp">
    <ul class="item">
      <li v-for="item in listData" :key="item">
        <span v-text="item"></span>
      </li>
    </ul>
  </vue-seamless-scroll>
</template>

<script>
import vueSeamlessScroll from "vue-seamless-scroll";

export default {
  components: {
    vueSeamlessScroll
  },
  data() {
    return {
      listData: Array(20)
        .fill()
        .map((_, i) => i)
    };
  }
};
</script>

We register the component.

And then we use the vue-seamless-scroll component.

We set the data prop to set the scroll data.

Then we loop through the entries we want to render.

Whatever is inside will be scrolled through continuously.

It’ll loop so it’ll keep scrolling from beginning to end until we navigate away from the page.

animated-number-vue

animated-number-vue lets us animate numbers in a Vue app.

To use it, we run:

npm i animated-number-vue

to install it.

Then we use it by writing:

<template>
  <animated-number :value="value" :formatValue="formatToPrice" :duration="300"/>
</template>
<script>
import AnimatedNumber from "animated-number-vue";

export default {
  components: {
    AnimatedNumber
  },
  data() {
    return {
      value: 1000
    };
  },
  methods: {
    formatToPrice(value) {
      return `$ ${value.toFixed(2)}`;
    }
  }
};
</script>

We use the animated-number component to display the animated number.

duration is the length of the animation.

value is the end number of the animation.

Vue Carousel 3d

Vue Carousel 3d is a 3D carousel for Vue apps.

To use it, we run:

npm i vue-carousel-3d

to install it.

Then we write:

main.js

import Vue from "vue";
import App from "./App.vue";
import Carousel3d from "vue-carousel-3d";

Vue.use(Carousel3d);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div>
    <carousel-3d>
      <slide :index="0">Slide 1</slide>
      <slide :index="1">Slide 2</slide>
      <slide :index="2">Slide 3</slide>
    </carousel-3d>
  </div>
</template>

<script>
export default {};

to use it.

We use the carousel-3d with at least 3 slides.

The slide components house the slides.

Then we can flip through the slides.

Vue Toast Notification

Vue Toast Notification is a Vue plugin that lets us display toast in our Vue app.

To use it, we install it by running:

npm i vue-toast-notification

Then we can use it by writing:

main.js

import Vue from "vue";
import App from "./App.vue";
import VueToast from "vue-toast-notification";
import "vue-toast-notification/dist/theme-default.css";

Vue.use(VueToast);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div id="app"></div>
</template>

<script>
export default {
  mounted() {
    this.$toast.open("hello!");
  }
};
</script>

We import the CSS and register the library.

Then we call this.$toast.open to open a basic notification.

We also display notifications for errors, warnings, and info messages.

Also, we can write:

<template>
  <div id="app"></div>
</template>

<script>
export default {
  mounted() {
    this.$toast.open({
      message: "Hello Vue",
      type: "success",
      duration: 5000,
      dismissible: true
    });
  }
};
</script>

to set our own options.

dismissible makes it dismissible.

message is the message.

type is the type of toast.

duration is the length of time to display the toast.

vue-hljs

vue-hljs lets us display code in our Vue app with syntax highlighting.

To use it, we run:

npm i vue-hljs

to install it.

Then we write:

main.js

import Vue from "vue";
import App from "./App.vue";
import vueHljs from "vue-hljs";
import "vue-hljs/dist/vue-hljs.min.css";

Vue.use(vueHljs);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div id="app">
    <div v-highlight>
      <pre>
        <code class="javascript">const foo = 'bar'</code>
      </pre>
    </div>
  </div>
</template>

<script>
export default {};
</script>

to display the code.

We just use the v-highlight directive to add the syntax highlighting.

Conclusion

vue-hljs lets us add syntax highlighting to our code display.

vue-seamless-scroll makes scrolling automatic.

Vue Toast Notification displays notifications in various formats.

Vue Carousel 3d lets us add a 3D slider.

animated-number-vue animates numbers.

Categories
Top Vue Packages

Top Vue Packages for Adding Inputs, QR Codes, and Handle Events

Vue.js is an easy to use web app framework that we can use to develop interactive front end apps. In this article, we’ll look at how the best packages for adding inputs, focusing elements, adding QR codes, and emit and listen to global events.

Vue Cleave Component

Vue Cleave Component is an input component that lets us enter things like credit card numbers.

To use it, first, we run:

npm i vue-cleave-component

to install it.

Then we can use it by writing:

<template>
  <div>
    <cleave v-model="cardNumber" :options="options" class="form-control" name="card"></cleave>
  </div>
</template>

<script>
import Cleave from "vue-cleave-component";

export default {
  data() {
    return {
      cardNumber: null,
      options: {
        creditCard: true,
        delimiter: "-"
      }
    };
  },
  components: {
    Cleave
  }
};
</script>

We bind the inputted value to cardNumber with v-model .

options is the options we can set for the input.

creditCard set to true means that we let users enter credit card numbers.

delimiter is the delimiter between each chunk.

So we’ll see the dash between each set of 4 digits.

vue-bus

vue-bus is a Vue plugin to add an app-wide event bus to our app.

To use it, we install it by running:

npm i vue-bus

Then we can use it bu writing”

<template>
  <div></div>
</template>

<script>
export default {
  created() {
    this.$bus.on("add-todo", this.addTodo);
    this.$bus.once("once", () => console.log("fire once"));
    this.$bus.emit("once");
    this.$bus.emit("add-todo");
  },
  beforeDestroy() {
    this.$bus.off("add-todo", this.addTodo);
  },
  methods: {
    addTodo() {
      console.log("add todo");
    }
  }
};
</script>

We use the this.$bus.on method to listen to events.

this.$bus.once creates an event that’s fired only once.

emit emits an event.

this.$bus.off clears event listeners.

Vue MQ (MediaQuery)

Vue MQ (MediaQuery) lets us define breakpijts and build responsive designs easily.

To use it, we run:

npm i vue-mq

to install it.

Then we use it by writing:

main.js

import Vue from "vue";
import App from "./App.vue";
import VueMq from "vue-mq";

Vue.use(VueMq, {
  breakpoints: {
    sm: 450,
    md: 1250,
    lg: Infinity
  },
  defaultBreakpoint: "sm"
});
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div>
    <p>{{displayText}}</p>
  </div>
</template>

<script>
export default {
  computed: {
    displayText() {
      return this.$mq === "sm" ? "small" : "large";
    }
  }
};
</script>

We use the this.$mq property to check the size of the screen.

Then we can display text accordingly.

vue-focus

vue-focus is a reusable directive for letting us focus or blur an element.

To use it, we install it by running:

npm i vue-focus

Then we can use it by writing:

<template>
  <div>
    <input type="text" v-focus="focused" @focus="focused = true" @blur="focused = false">
    <button @click="focused = true">focus</button>
  </div>
</template>

<script>
import { mixin as focusMixin } from "vue-focus";

export default {
  mixins: [focusMixin],
  data() {
    return {
      focused: false
    };
  }
};
</script>

We have an input element, which we control the focus of with the v-focus directive.

The directive comes from registering the mixin.

The focus event is emitted when it’s focused, which we set focused to true when it’s emitted.

v-viewer

v-viewer is an image viewer component that can be used to display an image gallery.

To use it, we run:

npm i v-viewer

to install the package.

Then we write:

main.js

import Vue from "vue";
import App from "./App.vue";
import "viewerjs/dist/viewer.css";
import Viewer from "v-viewer";
Vue.use(Viewer);

Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

We register the plugin and import the CSS.

App.vue

<template>
  <div>
    <viewer :images="images">
      <img v-for="src in images" :src="src" :key="src">
    </viewer>
  </div>
</template>

<script>
export default {
  data() {
    return {
      images: [
        "https://placekitten.com/200/200",
        "https://placekitten.com/201/201"
      ]
    };
  }
};
</script>

To add the image gallery with 2 images in it.

All we did is to use the viewer component and nest the images in it.

vue-qr

vue-qr is a plugin that lets us add a QR code to our app.

To use it, we install it by running:

npm i vue-qr

Then we can use it by writing:

<template>
  <div>
    <vue-qr text="Hello!" :callback="test" qid="test"></vue-qr>
  </div>
</template>

<script>
import VueQr from "vue-qr";

export default {
  components: { VueQr },
  methods: {
    test(dataUrl, id) {
      console.log(dataUrl, id);
    }
  }
};
</script>

We use the vue-qr component with the text we want to show when scanned into the text prop. The callback, which we pass in as the value of the callback prop is called when it’s loaded.

Conclusion

vue-qr is a QR code component. v-viewer lets us add an image viewer to our Vue app. vue-focus lets us control the focus of elements. Vue Cleave Component is an input component that lets users enter credit card numbers. vue-bus is an event bus library for Vue apps.

Categories
Top Vue Packages

Top Vue Packages for Checking Network Status, Checkboxes and Radio Buttons

Vue.js is an easy to use web app framework that we can use to develop interactive front end apps.

In this article, we’ll look at the best packages for checking network status, particle background, checkboxes and radio buttons, and infinite scrolling.

Vue Offline

Vue Offline is a good plugin for detecting whether a Vue app is online for offline.

To use it, we run:

npm i vue-offline

Then we can use it by writing:

main.js

import Vue from "vue";
import App from "./App.vue";
import VueOffline from "vue-offline";

Vue.use(VueOffline);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div>
    <p v-if="isOnline">online</p>
    <p v-if="isOffline">Toffline</p>
  </div>
</template>

<script>
export default {
  mounted() {
    this.$on("offline", () => {
      console.log('offline')
    });
  }
};
</script>

We register the plugin., Then we can use the isOnline and isOffline properties to check whether the app is online or offline.

Also, we can use the $on method to listen to network status changes.

We can also save data to local storage to make the data available offline.

To save the data, we can write:

<template>
  <div>
    <p v-if="isOnline">online</p>
    <p v-if="isOffline">Toffline</p>
  </div>
</template>

<script>
export default {
  mounted() {
    this.$offlineStorage.set("user", { foo: "bar" });
  }
};
</script>

We use the this.$offlineStorage.set method to save the data.

The first argument is the key and the 2nd is the value.

We can use this.$offlineStorage.get to get the value by the key.

vue-particles

We can use vue-particles to display a particles background in our Vue app.

To use it, we run:

npm i vue-particles

to install the package.

Then we can write:

main.js

import Vue from "vue";
import App from "./App.vue";
import VueParticles from "vue-particles";
Vue.use(VueParticles);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div>
    <vue-particles color="#dedede"></vue-particles>
  </div>
</template>

<script>
export default {};
</script>

to use it.

We have the vue-particles component to display the background.

color is the color of the particles.

There are many other things we can customize.

Line colors, width, opacity, distance, speed, opacity, all can be customized.

vue-checkbox-radio

vue-checkbox-radio lets us add radio buttons or checkboxes to our Vue app.

To use it, we run:

npm install vue-checkbox-radio --save

to install it.

Then we can write:

main.js

import Vue from "vue";
import App from "./App.vue";
import CheckboxRadio from "vue-checkbox-radio";

Vue.use(CheckboxRadio);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div>
    <checkbox name="agree" v-model="agree" value="1">
      I agree to the
      <a href="#">terms</a>
    </checkbox>
  </div>
</template>

<script>
export default {
  data() {
    return { agree: false };
  }
};
</script>

to use it.

checkbox is the component for adding the checkbox.

The content between the tags will be the content beside the checkbox.

name is the name attribute of the checkbox.

v-model binds the checked value to the agree state.

We can also add radio buttons with it.

To do that, we write:

<template>
  <div>
    <radio name="robot" value="1" v-model="isRobot">I'm a robot</radio>
    <radio name="robot" value="0" v-model="isRobot">I'm not a robot</radio>
    <p>{{isRobot}}</p>
  </div>
</template>

<script>
export default {
  data() {
    return { isRobot: false };
  }
};
</script>

We just bind v-model to the same state and it’ll be set when we check it.

The name attribute of one set of checkboxes will have the same name.

vue-mugen-scroll

vue-mugen-scroll is an infinite scrolling library for Vue apps.

To use it, we can install it by running:

npm i vue-mugen-scroll

Then we write:

<template>
  <div id="app">
    <div class="list">
      <p v-for="n in num" :key="n">{{n}}</p>
    </div>
    <mugen-scroll :handler="fetchData" :should-handle="!loading">loading...</mugen-scroll>
  </div>
</template>

<script>
import MugenScroll from "vue-mugen-scroll";
export default {
  data() {
    return { loading: false, num: 50 };
  },
  methods: {
    fetchData() {
      this.loading = true;
      this.num += 50;
      this.loading = false;
    }
  },
  components: { MugenScroll }
};
</script>

to add infinite scrolling to our component.

We put whatever needs infinite scrolling above the mugen-scroll component so that it watches the scroll position and load more data if needed.

handler is the prop for the method to fetch data.

should-handle is the state that loads the handler.

Conclusion

vue-mugen-scroll lets us add infinite scrolling.

Vue Offline lets us check network status in a Vye app.

vue-particles lets us create a particle background.

vue-checkbox-radio lets us add checkbox or radio buttons.

Categories
Top Vue Packages

Top Vue Packages for Adding a Password Strength Meter, Charts, and File Uploader

Vue.js is an easy to use web app framework that we can use to develop interactive front end apps.

In this article, we’ll look at the best packages for adding a password strength meter, charts, and file uploader.

vue-password-strength-meter

vue-password-strength-meter is an easy to add password strength meter for our Vue app.

To use it, we run:

npm i vue-password-strength-meter zxcvbn

to install it.

zxcvbn is required for measuring the password strength.

Then we can use it by writing:

<template>
  <password v-model="password"/>
</template>

<script>
import Password from "vue-password-strength-meter";
export default {
  components: { Password },
  data() {
    return {
      password: null
    };
  }
};
</script>

We use the password component to add a password input.

We bind to the password state with v-model .

It can be customized with some options.

We can listen to events emitted when the score and feedback events are emitted.

For instance, we can write:

<template>
  <password v-model="password" @score="showScore" @feedback="showFeedback"/>
</template>

<script>
import Password from "vue-password-strength-meter";
export default {
  components: { Password },
  data() {
    return {
      password: null
    };
  },
  methods: {
    showFeedback({ suggestions, warning }) {
      console.log(suggestions);
      console.log(warning);
    },
    showScore(score) {
      console.log(score);
    }
  }
};
</script>

It emits the score event with the password strength score.

The feedback event is emitted with the feedback for our password strength.

We can get these things and display them to the user if we want.

We can customize the styles for the strange meter, success and error classes, labels, and more.

vue-simple-uploader

vue-simple-uploader is a file uploader component for Vue apps.

To use it, we run:

npm i vue-simple-uploader

to install it.

Then we write:

main.js

import Vue from "vue";
import App from "./App.vue";
import uploader from "vue-simple-uploader";

Vue.use(uploader);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <uploader :options="options" class="uploader-example">
    <uploader-unsupport></uploader-unsupport>
    <uploader-drop>
      <p>Drop files here to upload or</p>
      <uploader-btn>select files</uploader-btn>
      <uploader-btn :attrs="attrs">select images</uploader-btn>
      <uploader-btn :directory="true">select folder</uploader-btn>
    </uploader-drop>
    <uploader-list></uploader-list>
  </uploader>
</template>

<script>
export default {
  data() {
    return {
      options: {
        target: "//localhost:3000/upload",
        testChunks: false
      },
      attrs: {
        accept: "image/*"
      }
    };
  }
};
</script>

to add the uploader component to our app.

uploader-unsupport is displayed when the required features are unsupported in the browser.

upload-btn is an upload button.

uploader-drop is the dropzone for the file upload.

uploader-list display the list of files uploaded.

options has the options, including the upload URL.

attres have the items we accept.

There are slots that we can populate to customize our app.

vue-highcharts

We can use the vue-highcharts package to add charts easily with our app.

One special feature is that we can add custom markers for points.

To use it, we run:

npm i vue2-highcharts highcharts

to install it with its dependencies.

Then we can use it by writing:

<template>
  <div>
    <vue-highcharts :options="options" ref="lineCharts"></vue-highcharts>
    <button @click="load">load</button>
  </div>
</template>

<script>
import VueHighcharts from "vue2-highcharts";
const data = {
  name: "New York",
  marker: {
    symbol: "square"
  },
  data: [
    7.0,
    6.9,
    {
      y: 26.5,
      marker: {
        symbol: "url(http://www.highcharts.com/demo/gfx/sun.png)"
      }
    }
  ]
};
export default {
  components: {
    VueHighcharts
  },
  data() {
    return {
      options: {
        chart: {
          type: "spline"
        },
        title: {
          text: "Monthly Average Temperature"
        },
        subtitle: {
          text: "temperature chart"
        },
        xAxis: {
          categories: ["Jan", "Feb", "Mar"]
        },
        yAxis: {
          title: {
            text: "Temperature"
          },
          labels: {
            formatter() {
              return this.value + "°";
            }
          }
        },
        tooltip: {
          crosshairs: true,
          shared: true
        },
        credits: {
          enabled: false
        },
        plotOptions: {
          spline: {
            marker: {
              radius: 4,
              lineColor: "#666666",
              lineWidth: 1
            }
          }
        },
        series: []
      }
    };
  },
  methods: {
    load() {
      const lineCharts = this.$refs.lineCharts;
      lineCharts.delegateMethod("showLoading", "Loading...");
      lineCharts.addSeries(data);
      lineCharts.hideLoading();
    }
  }
};
</script>

We add the vue-highcharts component to add the chart.

options has all the chart options.

chart has the chart type,

title has the title.

subtitle has the subtitle.

xAxis has the x-axis labels.

yAxis has the y-axis labels.

labels has the labels.

formatter has the function to format the labels.

tooltios enable the tooltips. crosshairs enables the labels on the line.

shared enables the other labels.

plotOptions has the markers.

delegateMethod lets us do various things with our chart.

In our example, we use 'showLoading' to show the loading text.

We get the ref of the chart component and then use the addSeries method to add the chart data.

hideLoading hides the loading text.

Conclusion

vue-password-strength-meter provides us with a useful password strength meter.

vue-simple-uploader provides us with a file upload component.

vue-highcharts is a chart library.

Categories
Top Vue Packages

Top Vue Packages for Adding Icons, Rich Text Editor, Image Upload, and Event Calendar

Vue.js is an easy to use web app framework that we can use to develop interactive front end apps.

In this article, we’ll look at the best packages for adding icons, rich text editor, image upload, and event calendar.

vue-fontawesome

vue-fontawesome is a set of components we can use to add Font Awesome icons into our Vue app.

To use it, we run:

npm i --save @fortawesome/fontawesome-svg-core
npm i --save @fortawesome/free-solid-svg-icons
npm i --save @fortawesome/vue-fontawesome

to install all the required packages.

Then we can use it by writing:

main.js

import Vue from "vue";
import App from "./App.vue";
import { library } from "@fortawesome/fontawesome-svg-core";
import { faUserSecret } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
library.add(faUserSecret);

Vue.component("font-awesome-icon", FontAwesomeIcon);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div id="app">
    <font-awesome-icon icon="user-secret"/>
  </div>
</template>

<script>
export default {};
</script>

We call library.add to register the icon we want to use.

We use the font-awesome-icon with the icon prop to specify the icon we want to use.

It works with both the free and pro versions of Font Awesome.

We just have to install different packages for the pro version.

vue-event-calendar

vue-event-calendar is a very simple calendar library for Vue.

To use it, we run:

npm i vue-event-calendar

to install it.

Then we can write:

main.js

import Vue from "vue";
import App from "./App.vue";
import "vue-event-calendar/dist/style.css";
import vueEventCalendar from "vue-event-calendar";
Vue.use(vueEventCalendar, { locale: "en" });
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <vue-event-calendar :events="demoEvents"></vue-event-calendar>
</template>

<script>
export default {
  data() {
    return {
      demoEvents: [
        {
          date: "2020/11/12",
          title: "eat"
        },
        {
          date: "2020/12/15",
          title: "drink",
          desc: "description",
          customClass: "disabled highlight"
        }
      ]
    };
  }
};
</script>

to use it.

We use the vue-event-calendar to add a calendar to our app.

Then we set the events prop to an array with objects that have the date and title properties to display events.

date is the date of the event. title is the title of the event.

desc is the description.

customClass are classes that we can add to let us style it with our own CSS.

It emits events when the day or month changed, so we can add listeners to listen to those.

We can change the locale with the locale option.

And we can navigate months and dates with the this.$EventCalendar object.

We can write:

this.$EventCalendar.nextMonth()

to move to the next month and:

this.$EventCalendar.preMonth()

to move to the previous month.

And we can write:

this.$EventCalendar.toDate('2020/11/12')

to move to a given date.

vue-img-inputer

vue-img-inputer is a file uploader library for Vue apps.

To use it, we run:

npm i vue-img-inputer

to install it.

Then we write:

main.js

import Vue from "vue";
import App from "./App.vue";
import ImgInputer from "vue-img-inputer";
import "vue-img-inputer/dist/index.css";

Vue.component("ImgInputer", ImgInputer);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <img-inputer v-model="file" theme="light" size="large"/>
</template>

<script>
export default {
  data(){
    return {
      file: undefined
    }
  }
};
</script>

to use it.

We register the component and add the CSS.

Then we use the img-inputer component and bind the selected file with v-model .

There are also many other options we can change, like text for errors, URL for images, icons, and more.

It also emits events for when the file changed or file size exceeded.

vue-pell-editor

vue-pell-editor is a rich text editor for Vue apps.

To use it, we install it by running:

npm i vue-pell-editor

Then we write:

main.js

import Vue from "vue";
import App from "./App.vue";
import VuePellEditor from "vue-pell-editor";

Vue.use(VuePellEditor);
Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

App.vue

<template>
  <div>
    <vue-pell-editor
      v-model="editorContent"
      :actions="editorOptions"
      :placeholder="editorPlaceholder"
      :style-with-css="false"
      default-paragraph-separator="p"
    />
    <p v-html="editorContent"></p>
  </div>
</template>

<script>
export default {
  data: () => ({
    editorContent: "",
    editorOptions: [
      "bold",
      "underline",
      {
        name: "italic",
        result: () => window.pell.exec("italic")
      },
      {
        name: "custom",
        icon: "<b><u><i>C</i></u></b>",
        title: "Custom Action",
        result: () => console.log("YOLO")
      },
      {
        name: "image",
        result: () => {
          const url = window.prompt("image URL");
          if (url) window.pell.exec("insertImage", ensureHTTP(url));
        }
      },
      {
        name: "link",
        result: () => {
          const url = window.prompt("link URL");
          if (url) window.pell.exec("createLink", ensureHTTP(url));
        }
      }
    ],
    editorPlaceholder: "Write something amazing..."
  }),
  methods: {}
};
</script>

to use it.

We add buttons individually with the editorOptions , which we set as the value of the actions prop.

placeholder has the placeholder.

v-model binds to the entered content.

style-with-css indicates whether we want to style with CSS.

Conclusion

vue-fontawesome lets us use Font Awesome icons.

vue-event-calendar displays an event calendar.

vue-img-inputer lets us add image upload capability to our app,

vue-pell-editor is a rich text editor for Vue apps.