Quasar is a popular Vue UI library for developing good looking Vue apps.
In this article, we’ll take a look at how to create Vue apps with the Quasar UI library.
Color Picker
Quasar comes with a color picker input component.
To use it, we write:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout
view="lHh Lpr lFf"
container
style="height: 100vh;"
class="shadow-2 rounded-borders"
>
<q-color v-model="hex"> </q-color>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
hex: ""
}
});
</script>
</body>
</html>
We add the q-color
component to add a color picker.
We can also use it with the q-input
component.
For instance, we can write:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout
view="lHh Lpr lFf"
container
style="height: 100vh;"
class="shadow-2 rounded-borders"
>
<q-input filled v-model="color">
<template v-slot:append>
<q-icon name="colorize" class="cursor-pointer">
<q-popup-proxy transition-show="scale" transition-hide="scale">
<q-color v-model="color" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
color: ""
}
});
</script>
</body>
</html>
to add the append
slot.
We put the color picker in the q-popup-proxy
, which is inside the q-icon
so that when we click on the icon, we can see the color picker displayed.
We use v-model
to bind both to the color
reactive property.
So when we pick a color from the color picker, we see the same value displayed in the input.
Also, we can add a validation rule to the q-input
to validate the color picker value:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout
view="lHh Lpr lFf"
container
style="height: 100vh;"
class="shadow-2 rounded-borders"
>
<q-input filled v-model="color" :rules="[required]" hint="Pick a color">
<template v-slot:append>
<q-icon name="colorize" class="cursor-pointer">
<q-popup-proxy transition-show="scale" transition-hide="scale">
<q-color v-model="color" />
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
color: ""
},
methods: {
required(val) {
return val || "Required";
}
}
});
</script>
</body>
</html>
We defined the required
method and then pass that into the rules
prop to apply the rule.
Also, we can remove the header and footer with the no-header
and no-footer
props respectively:
<!DOCTYPE html>
<html>
<head>
<link
href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.min.css"
rel="stylesheet"
type="text/css"
/>
</head>
<body class="body--dark">
<script src="https://cdn.jsdelivr.net/npm/vue@^2.0.0/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quasar@1.12.13/dist/quasar.umd.min.js"></script>
<div id="q-app">
<q-layout
view="lHh Lpr lFf"
container
style="height: 100vh;"
class="shadow-2 rounded-borders"
>
<q-color v-model="color1" no-header></q-color>
<q-color v-model="color2" no-footer></q-color>
</q-layout>
</div>
<script>
new Vue({
el: "#q-app",
data: {
color1: "",
color2: ""
}
});
</script>
</body>
</html>
Conclusion
Quasar provides a color picker component that we can add into our Vue app.