<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luke</title>
    <description>The latest articles on DEV Community by Luke (@ldiebold).</description>
    <link>https://dev.to/ldiebold</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F603779%2Fc5c9c667-fa9e-4bd2-bd19-367bb4bfcac8.jpeg</url>
      <title>DEV Community: Luke</title>
      <link>https://dev.to/ldiebold</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ldiebold"/>
    <language>en</language>
    <item>
      <title>How To Use Google Maps In A Quasar Project</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Fri, 01 Apr 2022 23:31:15 +0000</pubDate>
      <link>https://dev.to/quasar/how-to-use-google-maps-in-a-quasar-project-1c13</link>
      <guid>https://dev.to/quasar/how-to-use-google-maps-in-a-quasar-project-1c13</guid>
      <description>&lt;p&gt;I freaking LOVE the Quasar community!&lt;/p&gt;

&lt;p&gt;One of the Quasar core team members (Yusuf) got &lt;a href="https://stackblitz.com/edit/quasarframework-ghscmc?file=src%2Fpages%2FIndexPage.vue"&gt;quasar vite working with Stackblitz&lt;/a&gt;! Amazing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now you can start a Quasar project, in your browser, in seconds!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And here's Google Maps in a Quasar Project on stackblitz:&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://stackblitz.com/edit/quasarframework-5mbs1w?ctl=1&amp;amp;embed=1&amp;amp;file=src/pages/IndexPage.vue&amp;amp;hideExplorer=1" width="100%" height="500"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Anywho...&lt;/p&gt;

&lt;p&gt;A friend of mine on twitter asked how we can setup Google Maps with Quasar. So here it is!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install &lt;a href="https://vue-map.netlify.app/docs/#install"&gt;Vue 3 Google Maps&lt;/a&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-S&lt;/span&gt; @fawmi/vue-google-maps
&lt;span class="c"&gt;# or&lt;/span&gt;
yarn add @fawmi/vue-google-maps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Create a Boot File
&lt;/h2&gt;

&lt;p&gt;Vue Google Maps needs to "hook in" to Quasar. We can do this with a boot file!&lt;/p&gt;

&lt;p&gt;Diving in 🤿&lt;br&gt;
&lt;code&gt;src/boot/google-maps.js&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;boot&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;quasar/wrappers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;VueGoogleMaps&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@fawmi/vue-google-maps&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;boot&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;VueGoogleMaps&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c1"&gt;// 🤿 Vue App. Please install Vue Google Maps&lt;/span&gt;
    &lt;span class="na"&gt;load&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// 🤿 I don't have a google key, so leave it blank for now&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Currently this file is doing... nothing. We have to tell Quasar about it, so add the following to&lt;br&gt;
&lt;code&gt;quasar.config.js&lt;/code&gt; for vite, or &lt;code&gt;quasar.conf.js&lt;/code&gt; for webpack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="cm"&gt;/* ctx */&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//...&lt;/span&gt;
    &lt;span class="na"&gt;boot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;google-maps&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="c1"&gt;// 🤿 Quasar, please run this bootfile at startup!&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that it's important to be polite to Quasar when writing comments.&lt;/p&gt;

&lt;p&gt;Google Maps should now be installed!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create a map components
&lt;/h2&gt;

&lt;p&gt;Let's dive into &lt;code&gt;IndexPage.vue&lt;/code&gt; and add in our map component to check everything is working!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;q-page&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"height: calc(100vh - 50px)"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="c"&gt;&amp;lt;!-- 🤿 Vue, please render the Google Map Component here --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;GMapMap&lt;/span&gt;
        &lt;span class="na"&gt;:center=&lt;/span&gt;&lt;span class="s"&gt;"center"&lt;/span&gt;
        &lt;span class="na"&gt;:zoom=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt;
      &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/q-page&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;center&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;51.093048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;6.84212&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;done!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now let's take a squiz at a fuller example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;q-page&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"height: calc(100vh - 50px)"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;GMapMap&lt;/span&gt;
        &lt;span class="na"&gt;:center=&lt;/span&gt;&lt;span class="s"&gt;"center"&lt;/span&gt;
        &lt;span class="na"&gt;:zoom=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt;
        &lt;span class="na"&gt;map-type-id=&lt;/span&gt;&lt;span class="s"&gt;"terrain"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;GMapCluster&lt;/span&gt; &lt;span class="na"&gt;:zoomOnClick=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;GMapMarker&lt;/span&gt;
            &lt;span class="na"&gt;:key=&lt;/span&gt;&lt;span class="s"&gt;"index"&lt;/span&gt;
            &lt;span class="na"&gt;v-for=&lt;/span&gt;&lt;span class="s"&gt;"(m, index) in markers"&lt;/span&gt;
            &lt;span class="na"&gt;:position=&lt;/span&gt;&lt;span class="s"&gt;"m.position"&lt;/span&gt;
            &lt;span class="na"&gt;:clickable=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
            &lt;span class="na"&gt;:draggable=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
            &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"center = m.position"&lt;/span&gt;
          &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/GMapCluster&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/GMapMap&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/q-page&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;center&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;51.093048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;6.84212&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;markers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;51.093048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;6.84212&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;51.198429&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;6.69529&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;51.165218&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;7.067116&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;51.09256&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;6.84074&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that my fine coding friends is how you add Google Maps to a Quasar project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two things before I go!
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. QuasarCast.Com
&lt;/h3&gt;

&lt;p&gt;Want to &lt;a href="https://quasarcast.com/register"&gt;learn Quasar&lt;/a&gt; with videos, presented by someone who &lt;a href="https://quasarcast.com/register"&gt;LOVES to code&lt;/a&gt;! Someone who believes in you, and wants to see you &lt;a href="https://quasarcast.com/register"&gt;build GORGEOUS sites with Quasar&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;Wack &lt;a href="https://quasarcast.com/register"&gt;this link&lt;/a&gt; and make yourself an account at &lt;a href="https://quasarcast.com/register"&gt;QuasarCast.Com&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Always Remember
&lt;/h3&gt;

&lt;p&gt;Especially when times are tough and you feel like your code just won't work.&lt;/p&gt;

&lt;p&gt;If you keep at it,&lt;/p&gt;

&lt;p&gt;You can build anything...&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vue</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Modeling Data In Quasar Like A BOOOSS With VuexOrm</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Mon, 07 Feb 2022 22:23:07 +0000</pubDate>
      <link>https://dev.to/quasar/modeling-data-in-quasar-like-a-boooss-with-vuexorm-45mh</link>
      <guid>https://dev.to/quasar/modeling-data-in-quasar-like-a-boooss-with-vuexorm-45mh</guid>
      <description>&lt;p&gt;It's hard to express the impact &lt;a href="https://vuex-orm.org/"&gt;VuexOrm&lt;/a&gt; has had on my career as a developer.&lt;/p&gt;

&lt;p&gt;It's fundamentally changed the way I deal with data on the frontend! At Agripath (where I work), &lt;strong&gt;we almost NEVER deal with the store directly&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Most interactions with the store are done with &lt;a href="https://vuex-orm.org/"&gt;VuexOrm&lt;/a&gt;, which gives us a &lt;strong&gt;gorgeous&lt;/strong&gt; API. Stuff like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;models/User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Post&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;models/Post&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;indexPosts&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nx"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;posts&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;orderBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rating&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;with&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;comments.user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that code doesn't excite you, either read it again or check your pulse!&lt;/p&gt;

&lt;p&gt;Take a look at &lt;a href="https://www.youtube.com/watch?v=D0bOiA7uxZI&amp;amp;list=PLFZAa7EupbB5-MLdEuVP8jXW2WADpvI39&amp;amp;index=1"&gt;VuexORM video series&lt;/a&gt; to find out more, and learn VuexOrm!&lt;/p&gt;

&lt;h2&gt;
  
  
  VuexORM App Extension (AE)
&lt;/h2&gt;

&lt;p&gt;Truth be told, it doesn't take too much work to setup VuexOrm with Quasar. However, there are a few things we can do to streamline the setup. Here's some of the features:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Auto import and register models to the "VuexOrm database"!&lt;/li&gt;
&lt;li&gt;Easily create new models using Quasar's cli&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;models&lt;/code&gt; alias already registered for you&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once &lt;a href="https://github.com/ldiebold/quasar-app-extension-vuex-orm"&gt;everything is setup&lt;/a&gt;, all you have to do to add a new model is run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quasar run vuex-orm new:model Todo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you're ready to &lt;code&gt;insert&lt;/code&gt;, &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt; etc Todo's to your hearts content!&lt;/p&gt;

&lt;h2&gt;
  
  
  Give It A Try
&lt;/h2&gt;

&lt;p&gt;Ready to take VuexORM for a spin? Take a look at the &lt;a href="https://github.com/ldiebold/quasar-app-extension-vuex-orm"&gt;VuexOrm App Extension GitHub page&lt;/a&gt; and let me know how it goes!&lt;/p&gt;

&lt;p&gt;And remember,&lt;/p&gt;

&lt;p&gt;You can build anything...&lt;/p&gt;

</description>
      <category>vue</category>
      <category>quasarframework</category>
      <category>javascript</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Quasar "Nuxt-like" Routing is here!</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Mon, 07 Feb 2022 12:49:41 +0000</pubDate>
      <link>https://dev.to/quasar/quasar-nuxt-like-routing-is-here-2npn</link>
      <guid>https://dev.to/quasar/quasar-nuxt-like-routing-is-here-2npn</guid>
      <description>&lt;p&gt;Ever wanted auto-routing in Quasar? Kinda like Nuxt?&lt;br&gt;
Well now it's possible with Quasar &lt;a href="https://github.com/ldiebold/quasar-app-extension-auto-routing"&gt;auto-routing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get started:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quasar ext add auto-routing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And use the generated routes in your &lt;code&gt;routes.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;autoRouting&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./auto-routing&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="c1"&gt;// 💥&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;autoRouting&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// 💥&lt;/span&gt;

  &lt;span class="c1"&gt;// Always leave this as last one,&lt;/span&gt;
  &lt;span class="c1"&gt;// but you can also remove it&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/:catchAll(.*)*&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pages/Error404.vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://github.com/ldiebold/quasar-app-extension-auto-routing"&gt;Find out more on the github repo!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is still new, so feedback/PRs most welcome!&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You ktsn...
&lt;/h2&gt;

&lt;p&gt;And a MASSIVE thankyou to the following libraries:&lt;br&gt;
&lt;a href="https://github.com/ktsn/vue-route-generator"&gt;vue-route-generator&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/ktsn/vue-router-layout"&gt;vue-router-layout&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quasar Auto Routing is basically just "sticky tape" for these two libraries so 99% of the work is not my own!&lt;/p&gt;

&lt;p&gt;That's all for this but before I go remember,&lt;/p&gt;

&lt;p&gt;You can build anything...&lt;/p&gt;

</description>
      <category>vue</category>
      <category>javascript</category>
      <category>quasarframewor</category>
      <category>nuxt</category>
    </item>
    <item>
      <title>Quasar's QTable: The ULTIMATE Component (5/6) - Styling EVERYTHING!!!</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Fri, 20 Aug 2021 12:33:51 +0000</pubDate>
      <link>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-5-6-styling-everything-4l62</link>
      <guid>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-5-6-styling-everything-4l62</guid>
      <description>&lt;p&gt;Welcome back my fine devy friend!&lt;/p&gt;

&lt;p&gt;When I started on this post, I had &lt;strong&gt;no idea what I was in for&lt;/strong&gt;...&lt;/p&gt;

&lt;p&gt;My girlfriend is in the other room, watching a Korean drama, drinking soju (and I LOVE soju).&lt;/p&gt;

&lt;p&gt;"1 and a half hours" I told her. When will I learn! &lt;strong&gt;Quasar's &lt;code&gt;QTable&lt;/code&gt; is relentlessly useful&lt;/strong&gt;, and to show you all of it's inner powers takes time!&lt;/p&gt;

&lt;p&gt;Anywho..&lt;/p&gt;

&lt;p&gt;You'll &lt;strong&gt;love&lt;/strong&gt; this one!&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Becuase styling &lt;code&gt;q-table&lt;/code&gt; is easy! All it takes is a sprinkle of props here and there.&lt;/p&gt;

&lt;p&gt;Having said that, there are &lt;strong&gt;two ways to style &lt;code&gt;q-table&lt;/code&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;props&lt;/li&gt;
&lt;li&gt;slots&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I recommend using &lt;strong&gt;props&lt;/strong&gt; where possible (and they're what we'll cover in this post), since they're &lt;em&gt;easier to write, and eaiser to read&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Have You STILL Not Checkerty Checked Out &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com?&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;If you've come this far into the series and &lt;strong&gt;still&lt;/strong&gt; haven't been to &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt;, then &lt;strong&gt;what the HEY???&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;Head. There. Now.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have something &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;&lt;strong&gt;really cool&lt;/strong&gt;&lt;/a&gt; to show you!&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;Ok, let's get started...&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Here's &lt;a href="https://github.com/ldiebold/q-table-blog" rel="noopener noreferrer"&gt;le github repo&lt;/a&gt; ("le github repo" is French for "I don't speak French")&lt;/p&gt;

&lt;p&gt;Now &lt;strong&gt;SLAM&lt;/strong&gt; this into your editor!&lt;/p&gt;

&lt;p&gt;Let's do that thing again where I dive into the code and meet you in there 🤿&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="c1"&gt;// 🤿 Quasar has some rad color utilities!&lt;/span&gt;
&lt;span class="c1"&gt;// We'll use "getPaletteColor" in one of the examples.&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;colors&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;quasar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getPaletteColor&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;colors&lt;/span&gt;

&lt;span class="c1"&gt;// 🤿 did saying "rad" up my street cred? I hope so.&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// three guesses at what we'll use this for...&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fullscreen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Panda&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;panda@chihuahua.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lily&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lily@chihuahua.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Moe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;moe@rip.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Avo Cado&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;free@shivacadoo.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Oscar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;oscar@comehome.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;// 🤿 Oh look, a fish! 🐠&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;columnsStyled&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;fullscreen&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;emerges from code&lt;/em&gt; 🤿&lt;/p&gt;

&lt;p&gt;Did that all make sense?&lt;/p&gt;

&lt;p&gt;Sweet! Let's start making some &lt;strong&gt;sexy tables&lt;/strong&gt;...&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;color&lt;/code&gt;, &lt;code&gt;dense&lt;/code&gt;, &lt;code&gt;dark&lt;/code&gt; and &lt;code&gt;flat&lt;/code&gt;
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"green"&lt;/span&gt;
  &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
  &lt;span class="na"&gt;dense&lt;/span&gt;
  &lt;span class="na"&gt;dark&lt;/span&gt;
  &lt;span class="na"&gt;flat&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fs0g34Td.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fs0g34Td.png" alt="Quasar Vue QTable Color, Dense, Dark and Flat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You know what a lot of people don't like about material design? The shadows.&lt;/p&gt;

&lt;p&gt;Well guess what... Quasar makes it &lt;strong&gt;EASY to remove the shadow&lt;/strong&gt; from all of its components with either &lt;code&gt;flat&lt;/code&gt; or &lt;code&gt;unelevated&lt;/code&gt;. As you can see in the above example, &lt;code&gt;QTable&lt;/code&gt; ain't no exception 🙃&lt;/p&gt;

&lt;p&gt;&lt;code&gt;color&lt;/code&gt; changes the &lt;strong&gt;loading bar color&lt;/strong&gt;, and the &lt;strong&gt;selected item in pagination&lt;/strong&gt; and...&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dense&lt;/code&gt; tightens things up. Great for when you have a large amount of data to show!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;bordered&lt;/code&gt;, &lt;code&gt;flat&lt;/code&gt;, &lt;code&gt;square&lt;/code&gt; (Cleancut)
&lt;/h2&gt;

&lt;p&gt;I call this the "Cleancut" design. It makes the table look slick and professional:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;bordered&lt;/span&gt;
  &lt;span class="na"&gt;flat&lt;/span&gt;
  &lt;span class="na"&gt;square&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F0c8gg0X.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F0c8gg0X.png" alt="Quasar Vue QTable Bordered, Flat, Square (Cleancut)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See what I mean? It's like the "James Bond" of table design 😎&lt;/p&gt;

&lt;p&gt;try removing the &lt;code&gt;border&lt;/code&gt;. You'll notice that the table stands completely on its own without a border in this example!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FlMszHHN.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FlMszHHN.png" alt="Quasar Vue QTable No Border Or Shadow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Specific Classes and Styles
&lt;/h2&gt;

&lt;p&gt;These little helper props are awesome! &lt;strong&gt;Usually, they're all you'll need&lt;/strong&gt; for designing your table:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Blue Chihuahua's"&lt;/span&gt;
  &lt;span class="na"&gt;title-class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold text-blue-9"&lt;/span&gt;
  &lt;span class="na"&gt;table-class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-9 text-white"&lt;/span&gt;
  &lt;span class="na"&gt;table-style=&lt;/span&gt;&lt;span class="s"&gt;"border: 3px solid black;"&lt;/span&gt;
  &lt;span class="na"&gt;table-header-style=&lt;/span&gt;&lt;span class="s"&gt;"height: 65px;"&lt;/span&gt;
  &lt;span class="na"&gt;table-header-class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-8"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F9D0xReM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F9D0xReM.png" alt="Quasar Vue QTable Targeting Specific Classes And Styles"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice we can target the&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Header&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Body&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nice! 😊&lt;/p&gt;

&lt;h2&gt;
  
  
  Specific Column Classes and Styles
&lt;/h2&gt;

&lt;p&gt;Now THIS is something I use all the time. &lt;strong&gt;The columns object itself&lt;/strong&gt; can be tapped into so we can change the styling of &lt;strong&gt;columns&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Razvan (creator of Quasar) must have been in some sort of next level zen state when he was designing this &lt;strong&gt;work of art&lt;/strong&gt;!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
    &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
    &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columnsStyled"&lt;/span&gt;
    &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Add this in&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columnsStyled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;classes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bg-pink-1 text-bold&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1.2em&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;borderLeft&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`6px solid &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nf"&gt;getPaletteColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pink-4&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;headerClasses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bg-grey-1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;headerStyle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1.2em&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;headerClasses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bg-grey-3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;classes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bg-pink-2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;headerClasses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bg-grey-1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;classes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bg-pink-1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// And this&lt;/span&gt;
      &lt;span class="nx"&gt;columnsStyled&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fmc03KSn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fmc03KSn.png" alt="Quasar Vue QTable Targeting Specific Classes And Styles On Column Objects"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How. Cool. Is. &lt;strong&gt;THAT!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To summarise, the &lt;strong&gt;column options&lt;/strong&gt; we're using here are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;classes&lt;/li&gt;
&lt;li&gt;style&lt;/li&gt;
&lt;li&gt;headerClasses&lt;/li&gt;
&lt;li&gt;headerStyle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sure, the example looks a little messed up... But you're not here to get a degree as an artist 🎨 (nor are you likely to get one from me).&lt;/p&gt;

&lt;h2&gt;
  
  
  Pagination
&lt;/h2&gt;

&lt;p&gt;Dealing with pagination and slots can get pretty complicated... Luckily, it's likely we can solve our &lt;strong&gt;pagination styling problems&lt;/strong&gt; with these handy dandy props!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;:rows-per-page-options=&lt;/span&gt;&lt;span class="s"&gt;"[2, 0]"&lt;/span&gt;
  &lt;span class="na"&gt;rows-per-page-label=&lt;/span&gt;&lt;span class="s"&gt;"records/page"&lt;/span&gt;
  &lt;span class="na"&gt;icon-first-page=&lt;/span&gt;&lt;span class="s"&gt;"home"&lt;/span&gt;
  &lt;span class="na"&gt;icon-last-page=&lt;/span&gt;&lt;span class="s"&gt;"all_inclusive"&lt;/span&gt;
  &lt;span class="na"&gt;icon-next-page=&lt;/span&gt;&lt;span class="s"&gt;"arrow_right"&lt;/span&gt;
  &lt;span class="na"&gt;icon-prev-page=&lt;/span&gt;&lt;span class="s"&gt;"arrow_left"&lt;/span&gt;
  &lt;span class="na"&gt;:pagination-label=&lt;/span&gt;&lt;span class="s"&gt;"(firstRowIndex, endRowIndex, totalRowsNumber) =&amp;gt; {
    return `page ${endRowIndex}/${totalRowsNumber}`
  }"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F4ybkFAV.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F4ybkFAV.png" alt="Quasar Vue QTable Styling Pagination"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The cool one to note here, is &lt;code&gt;pagination-label&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;pagination-label&lt;/code&gt;, we can even change the way we display the "status" of our current pagination with a simple function!&lt;/p&gt;

&lt;h2&gt;
  
  
  Hiding Header Row and Bottom (Pure Table)
&lt;/h2&gt;

&lt;p&gt;Sometimes you just want a plain ol table. No heading, no footer, no pagination... Just a "basic as can be" table.&lt;/p&gt;

&lt;p&gt;This is how we can do it with &lt;code&gt;QTable&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;hide-header&lt;/span&gt;
  &lt;span class="na"&gt;hide-bottom&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FVgsKgI5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FVgsKgI5.png" alt="Quasar Vue QTable Hiding The Header And Bottom (Pure Table)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all I have to say on that 🤷&lt;/p&gt;

&lt;h2&gt;
  
  
  Hiding Pagination (may auto remove bottom)
&lt;/h2&gt;

&lt;p&gt;Often, we don't even need pagination. Let's just hide it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;hide-pagination&lt;/span&gt;
  &lt;span class="na"&gt;:rows-per-page-options=&lt;/span&gt;&lt;span class="s"&gt;"[0]"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FCqrYHol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FCqrYHol.png" alt="Quasar Vue QTable Hiding Pagination"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;&lt;br&gt;
hiding pagination &lt;strong&gt;does not remove pagination functionality&lt;/strong&gt;. In other words, you might only see 5/10 rows of data, and have no way of viewing the rest of it (since pagination controls are hidden)!&lt;/p&gt;

&lt;p&gt;That's why we added &lt;code&gt;:rows-per-page-options="[0]"&lt;/code&gt; in the above example.&lt;/p&gt;

&lt;p&gt;You may remember from the post on pagination, &lt;strong&gt;0&lt;/strong&gt; means &lt;strong&gt;all&lt;/strong&gt;. So essentially, that code is ensuring that we &lt;strong&gt;show ALL rows&lt;/strong&gt; since the pagination is hidden.&lt;/p&gt;

&lt;p&gt;Also, if there is &lt;strong&gt;nothing else to show in the bottom row&lt;/strong&gt;, no bottom row will show at all (like in the example)&lt;/p&gt;

&lt;h2&gt;
  
  
  Hiding &lt;code&gt;no-data&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;I can't think of a good reason to do this, but of course, Quasar makes it possible to hide the default "no data" message...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"[]"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;hide-no-data&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FoPYHIIj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FoPYHIIj.png" alt="Quasar Vue QTable Hiding No Data Message"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nothin but header now!&lt;/p&gt;

&lt;h2&gt;
  
  
  Visible Columns
&lt;/h2&gt;

&lt;p&gt;Maybe I should have put this furthur up the list since it's &lt;strong&gt;So HANDY!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can &lt;strong&gt;easily&lt;/strong&gt; hide columns with the &lt;code&gt;visible-columns&lt;/code&gt; prop:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;:visible-columns=&lt;/span&gt;&lt;span class="s"&gt;"['name', 'age']"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FX7bU4ko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FX7bU4ko.png" alt="Quasar Vue QTable Hiding And Showing Columns"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that the &lt;strong&gt;strings in the &lt;code&gt;visible-columns&lt;/code&gt; array&lt;/strong&gt;, need to be the same as the &lt;code&gt;name&lt;/code&gt; prop on the corresponding &lt;code&gt;columns&lt;/code&gt; object.&lt;/p&gt;

&lt;p&gt;Erg, that was a mouthful... Might need to read it a few times!&lt;/p&gt;

&lt;p&gt;In some of my apps, we use a &lt;code&gt;q-menu&lt;/code&gt; on the top row, and allow people to toggle columns on and off using a menu! This is easy to do with &lt;code&gt;visible-columns&lt;/code&gt;! Maybe that could be another blog post 🤔&lt;/p&gt;

&lt;h2&gt;
  
  
  Fullscreen
&lt;/h2&gt;

&lt;p&gt;"&lt;strong&gt;WHAT!!??&lt;/strong&gt; Quasar's &lt;code&gt;QTable&lt;/code&gt; supports &lt;strong&gt;FULL SCREEN!!??&lt;/strong&gt;"&lt;/p&gt;

&lt;p&gt;Yes. It does 😉&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;:fullscreen=&lt;/span&gt;&lt;span class="s"&gt;"fullscreen"&lt;/span&gt;
  &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#top-right&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-btn&lt;/span&gt;
      &lt;span class="na"&gt;dense&lt;/span&gt;
      &lt;span class="na"&gt;flat&lt;/span&gt;
      &lt;span class="na"&gt;icon=&lt;/span&gt;&lt;span class="s"&gt;"fullscreen"&lt;/span&gt;
      &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"fullscreen = !fullscreen"&lt;/span&gt;
    &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fo9s61cd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fo9s61cd.png" alt="Quasar Vue QTable Fullscreen Mode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, we added a button on the &lt;code&gt;#top-right&lt;/code&gt; that &lt;strong&gt;toggles fullscreen on and off.&lt;/strong&gt; Piece of cake 🍰&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;separator&lt;/code&gt; and &lt;code&gt;wrap-cells&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;By default, every &lt;code&gt;QTable&lt;/code&gt; row is divided with a horizontal line. Of course, we can change this to either a &lt;code&gt;vertical&lt;/code&gt; line, or a full &lt;code&gt;cell&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we're also demonstrating &lt;code&gt;wrap-cells&lt;/code&gt;. &lt;code&gt;wrap-cells&lt;/code&gt; is handy, as it ensures that long text wraps correctly in a cell! Note that it's only evident for &lt;strong&gt;"Avo Cado"&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;separator=&lt;/span&gt;&lt;span class="s"&gt;"cell"&lt;/span&gt;
  &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"width: 300px;"&lt;/span&gt;
  &lt;span class="na"&gt;wrap-cells&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FHG7rN3G.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FHG7rN3G.png" alt="Quasar Vue QTable Separators, Cell, Vertical, Horizontal and Wrapping Text In Cells"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Possible options for &lt;code&gt;separator&lt;/code&gt; are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;horizontal&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vertical&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cell&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;none&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moving on!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;no-data&lt;/code&gt; Label
&lt;/h2&gt;

&lt;p&gt;Change the default &lt;code&gt;no-data&lt;/code&gt; label:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"[]"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;no-data-label=&lt;/span&gt;&lt;span class="s"&gt;"I can't find any data 😞"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F3UvxXLz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F3UvxXLz.png" alt="Quasar Vue QTable Changing The No Data Label"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;loading-data&lt;/code&gt; Label
&lt;/h2&gt;

&lt;p&gt;And the default &lt;code&gt;loading-data&lt;/code&gt; label:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"[]"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
  &lt;span class="na"&gt;loading-label=&lt;/span&gt;&lt;span class="s"&gt;"Gimme a sec and I'll fetch ya data!"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRAS3Hqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRAS3Hqi.png" alt="Quasar Vue QTable Changing The Loading Data Label"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Grid Mode
&lt;/h2&gt;

&lt;p&gt;I'll be honest, I've never in my life used grid mode (until writing this blog post).&lt;/p&gt;

&lt;p&gt;But some people love it, so here ya go!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;grid&lt;/span&gt;
  &lt;span class="na"&gt;card-class=&lt;/span&gt;&lt;span class="s"&gt;"bg-indigo-9 text-white"&lt;/span&gt;
  &lt;span class="na"&gt;card-style=&lt;/span&gt;&lt;span class="s"&gt;"padding: 22px;"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FoHA7Xzb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FoHA7Xzb.png" alt="Quasar Vue QTable Grid Mode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, we're also tapping into the styling of the grid cards!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;no-hover&lt;/code&gt; (&lt;code&gt;q-td&lt;/code&gt; and &lt;code&gt;q-tr&lt;/code&gt;)
&lt;/h2&gt;

&lt;p&gt;Last, and maybe least, we can &lt;strong&gt;remove the default "highlight" effect&lt;/strong&gt; we get with &lt;code&gt;QTable&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;These are specific to &lt;code&gt;q-td&lt;/code&gt; and &lt;code&gt;q-tr&lt;/code&gt;, so we'll have to demonstrate this using the &lt;code&gt;#body&lt;/code&gt; template...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;q-table
  :rows="rows"
  :columns="columns"
  row-key="id"
&amp;gt;
  &amp;lt;template #body="props"&amp;gt;
    &amp;lt;q-tr
      no-hover
      :props="props"
    &amp;gt;
      &amp;lt;q-td
        key="name"
        no-hover
        :props="props"
      &amp;gt;
        {{ props.row.name }}
      &amp;lt;/q-td&amp;gt;

      &amp;lt;q-td
        key="email"
        no-hover
        :props="props"
      &amp;gt;
        {{ props.row.email }}
      &amp;lt;/q-td&amp;gt;

      &amp;lt;q-td
        key="age"
        no-hover
        :props="props"
      &amp;gt;
        {{ props.row.age }}
      &amp;lt;/q-td&amp;gt;
    &amp;lt;/q-tr&amp;gt;
  &amp;lt;/template&amp;gt;
&amp;lt;/q-table&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FB0mGSGF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FB0mGSGF.png" alt="Quasar Vue QTable Removing Hover Effect"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kinda hard to tell with a picture 😅&lt;/p&gt;

&lt;h2&gt;
  
  
  Aaand We're Done!
&lt;/h2&gt;

&lt;p&gt;So there you go! If there is anything you want to acheive with &lt;code&gt;QTable&lt;/code&gt; styling, hit me up.&lt;/p&gt;

&lt;p&gt;I feel like I've seen just about everything now, so there's a good chance I can help you out 🙂&lt;/p&gt;

&lt;p&gt;And trust me, &lt;strong&gt;you're going to want to checkout &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quasar has a &lt;strong&gt;MASSIVE&lt;/strong&gt; component library that's second to none, and I want to teach you &lt;strong&gt;&lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;All 72 Of Those Components&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading, and please dear reader. &lt;strong&gt;Please&lt;/strong&gt;...&lt;/p&gt;

&lt;p&gt;Keep this thought in your mind as you hit the pillow and drift into the night 🌙&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;nothing&lt;/strong&gt; you can't build...&lt;/p&gt;

</description>
      <category>quasar</category>
      <category>vue</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Quasar's QTable: The ULTIMATE Component (4/6) - ALL The Slots!</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Thu, 19 Aug 2021 13:19:03 +0000</pubDate>
      <link>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-4-6-all-the-slots-40g2</link>
      <guid>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-4-6-all-the-slots-40g2</guid>
      <description>&lt;p&gt;What's black, blue, and PACKED full of QTable slots?&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;The video version of this blog post!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/cxNvoSkeLcM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The ideal progression for customizing &lt;strong&gt;rows&lt;/strong&gt; with Quasar's &lt;code&gt;QTable&lt;/code&gt; is this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No slots&lt;/strong&gt;, only props&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;generic&lt;/strong&gt; "cell" slot (&lt;code&gt;#body-cell&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specific&lt;/strong&gt; "cell" slots (&lt;code&gt;#body-cell-[name]&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row&lt;/strong&gt; slots (&lt;code&gt;#body&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The further down the list, the more &lt;strong&gt;flexibility&lt;/strong&gt; and &lt;strong&gt;control&lt;/strong&gt; you wield!&lt;br&gt;
The further up the list, the more &lt;strong&gt;ease&lt;/strong&gt; and abstraction.&lt;/p&gt;

&lt;p&gt;So keep that in mind! &lt;strong&gt;If slots aren't needed, don't use them&lt;/strong&gt;. They're there to offer flexibility when the defaults and props aren't enough.&lt;/p&gt;

&lt;p&gt;Make sense?&lt;/p&gt;

&lt;p&gt;Sweet! With that in mind, we'll dive in to Quasar's slots...&lt;/p&gt;

&lt;p&gt;Oh! And if you want to &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;learn all 72 of Quasar's components&lt;/a&gt; through videos, checkout &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt; 😉&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;First, for all you &lt;strong&gt;git cloners&lt;/strong&gt; out there, Here's the &lt;a href="https://github.com/ldiebold/q-table-blog" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;We'll use a similar setup to past examples with a couple of additions:&lt;/p&gt;

&lt;p&gt;First, install &lt;code&gt;lodash-es&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

yarn add lodash-es


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Why lodash-es? Because it allows us to &lt;strong&gt;import individual functions&lt;/strong&gt; easily without bringing in the THE WHOLE OF LODASH which is a &lt;strong&gt;MASSIVE&lt;/strong&gt; dependency!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ahem&lt;/em&gt;, anywho...&lt;/p&gt;

&lt;p&gt;Here's the setup:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;copyToClipboard&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;quasar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;sumBy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;meanBy&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lodash-es&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Panda&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;panda@chihuahua.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lily&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lily@chihuahua.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;copyToClipboard&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;sumBy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;meanBy&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Quasar comes with a handy &lt;strong&gt;copy to clipboard&lt;/strong&gt; utility function that we'll use in one of the examples.&lt;/p&gt;

&lt;p&gt;We'll also use &lt;code&gt;sumBy&lt;/code&gt; and &lt;code&gt;meanBy&lt;/code&gt; to build a &lt;strong&gt;summary row&lt;/strong&gt;, and an &lt;strong&gt;average row&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I've also used &lt;code&gt;ref&lt;/code&gt; for the columns. Usually, you shouldn't do this since columns are almost never reactive! I've done it here, because in one of the examples we'll &lt;strong&gt;make columns editable&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Okay, put on your snorkel and we'll &lt;strong&gt;dive&lt;/strong&gt; in 🤿&lt;/p&gt;

&lt;h2&gt;
  
  
  Generic Cell Slots (#body-cell)
&lt;/h2&gt;

&lt;p&gt;Want to make all cells "copyable" with the press of a button?&lt;/p&gt;

&lt;p&gt;no problem! We can use the &lt;code&gt;#body-cell&lt;/code&gt; prop for that...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#body-cell=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-btn&lt;/span&gt;
        &lt;span class="na"&gt;flat&lt;/span&gt;
        &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;
        &lt;span class="na"&gt;:label=&lt;/span&gt;&lt;span class="s"&gt;"props.value"&lt;/span&gt;
        &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"copyToClipboard(props.value)"&lt;/span&gt;
      &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FWfIZFhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FWfIZFhg.png" alt="Customizing Quasar Table Cells With Slots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an easy way to &lt;strong&gt;target every cell&lt;/strong&gt;. Notice that we're passing &lt;code&gt;props&lt;/code&gt; to &lt;code&gt;q-td&lt;/code&gt;? This basically allows us to proxy "Quasar Table Cell Stuff" easily 👍&lt;/p&gt;

&lt;p&gt;Also notice we have &lt;strong&gt;access to the cells value&lt;/strong&gt; with &lt;code&gt;props.value&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;But what if we want to target &lt;strong&gt;specific&lt;/strong&gt; cells...&lt;/p&gt;

&lt;h2&gt;
  
  
  Specific Cell Slots (#body-cell-[name])
&lt;/h2&gt;

&lt;p&gt;tack on "name" and you can target any cell you like within a row.&lt;/p&gt;

&lt;p&gt;You'll likely end up using this a lot, it's very handy! It's particularly useful for a &lt;strong&gt;delete button&lt;/strong&gt; cell at the end of a row.&lt;/p&gt;

&lt;p&gt;In this example, we use it to simply alternate colors:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#body-cell-name=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-1"&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#body-cell-email=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-2"&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;
    &lt;span class="na"&gt;#body-cell-age=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-1"&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Ff3rlNKy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Ff3rlNKy.png" alt="Customizing Specific Quasar Table Cells With Slots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The API for &lt;code&gt;#body-cell-[name]&lt;/code&gt; is almost identical to &lt;code&gt;#body-cell&lt;/code&gt; (Classic Quasar! amazingly consistent API 🎉)&lt;/p&gt;

&lt;h2&gt;
  
  
  Row Slots (#body) (editable cells)
&lt;/h2&gt;

&lt;p&gt;Before looking at this example, I want you to notice two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;props&lt;/code&gt; is proxied to &lt;code&gt;q-tr&lt;/code&gt; AND &lt;code&gt;q-td&lt;/code&gt;. Once again, this is important as it allows Quasar to take control over the cell for things like "hiding columns" and setting the &lt;code&gt;row-key&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;We use &lt;code&gt;dense&lt;/code&gt; and &lt;code&gt;borderless&lt;/code&gt; on &lt;code&gt;q-input&lt;/code&gt;, otherwise it looks strange in a table cell!&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#body=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
          &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"props.row.name"&lt;/span&gt;
          &lt;span class="na"&gt;borderless&lt;/span&gt;
          &lt;span class="na"&gt;dense&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
          &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"props.row.email"&lt;/span&gt;
          &lt;span class="na"&gt;borderless&lt;/span&gt;
          &lt;span class="na"&gt;dense&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"age"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
          &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"props.row.age"&lt;/span&gt;
          &lt;span class="na"&gt;borderless&lt;/span&gt;
          &lt;span class="na"&gt;dense&lt;/span&gt;
          &lt;span class="na"&gt;input-class=&lt;/span&gt;&lt;span class="s"&gt;"text-center"&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F8cYmbJ9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F8cYmbJ9.png" alt="Quasar QTable With Editable Cells"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Doesn't look like much does it?&lt;/p&gt;

&lt;p&gt;But take a look at that code... we're using &lt;code&gt;QInput&lt;/code&gt;'s in the cells... &lt;strong&gt;These cells are EDITABLE!!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a common question in the community.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How do we achieve editable cells with q-table?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;well &lt;strong&gt;that&lt;/strong&gt; my friends ☝️☝️☝️, is how 😉&lt;/p&gt;




&lt;p&gt;The rest of this blog post will be very &lt;strong&gt;example driven&lt;/strong&gt; with less eplanation.&lt;/p&gt;

&lt;p&gt;The aim is to make you aware of what's possible, so you can go to bed tonight &lt;strong&gt;dreaming of table possibilities&lt;/strong&gt;! 💤💭😶‍🌫️ (I have no idea what that second emoji is. Found it on emojifinder.com when searching for "dream")&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SO!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ready for this?&lt;/p&gt;

&lt;p&gt;Sweet! Let's go nuts!!!&lt;/p&gt;




&lt;h2&gt;
  
  
  Header Cell Slots
&lt;/h2&gt;

&lt;p&gt;Pretty much the same concept as &lt;code&gt;body-cell&lt;/code&gt; slots&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#header-cell=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-th&lt;/span&gt;
      &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"font-size: 1.4em;"&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-primary"&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;col&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-th&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FndADNte.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FndADNte.png" alt="Quasar QTable Header Cell Slots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Specific Header Cell Slot
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#header-cell-email=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-th&lt;/span&gt; &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt;
        &lt;span class="na"&gt;size=&lt;/span&gt;&lt;span class="s"&gt;"sm"&lt;/span&gt;
        &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
        &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"q-mr-sm"&lt;/span&gt;
        &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"grey-7"&lt;/span&gt;
      &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;col&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-th&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F89ISRBv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F89ISRBv.png" alt="Quasar QTable Specific Header Cell Slot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Header Row Slot
&lt;/h2&gt;

&lt;p&gt;In this example, we make the header cells editable! Cool stuff 😎&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#header=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-th&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
          &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"columns[0].label"&lt;/span&gt;
          &lt;span class="na"&gt;dense&lt;/span&gt;
          &lt;span class="na"&gt;borderless&lt;/span&gt;
          &lt;span class="na"&gt;input-class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold"&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-th&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;q-th&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
          &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"columns[1].label"&lt;/span&gt;
          &lt;span class="na"&gt;dense&lt;/span&gt;
          &lt;span class="na"&gt;borderless&lt;/span&gt;
          &lt;span class="na"&gt;input-class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold"&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-th&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;q-th&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"age"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
          &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"columns[2].label"&lt;/span&gt;
          &lt;span class="na"&gt;dense&lt;/span&gt;
          &lt;span class="na"&gt;borderless&lt;/span&gt;
          &lt;span class="na"&gt;input-class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold text-center"&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-th&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FUtux5Zi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FUtux5Zi.png" alt="Quasar QTable Header Row Slot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom And Top Row Slot
&lt;/h2&gt;

&lt;p&gt;Great for aggregations and averages! This is where we use those lodash functions...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#top-row&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Average:
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-center"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;meanBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#bottom-row&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-green-1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Total:
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-center"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;sumBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FGoskK5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FGoskK5f.png" alt="Quasar QTable Bottom And Top Row Slot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Slot (&lt;strong&gt;above&lt;/strong&gt; the actual table)
&lt;/h2&gt;

&lt;p&gt;Perfect for things like &lt;strong&gt;filters&lt;/strong&gt; and a &lt;strong&gt;search input&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#top&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold"&lt;/span&gt;
      &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"font-size: 1.3em;"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      Cute Pups
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"q-ml-md"&lt;/span&gt;
      &lt;span class="na"&gt;dense&lt;/span&gt;
      &lt;span class="na"&gt;outlined&lt;/span&gt;
      &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Search"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;template&lt;/span&gt; &lt;span class="na"&gt;#prepend&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"search"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-input&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F5UcRa96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F5UcRa96.png" alt="Quasar QTable Customizing the Top With A Search Input"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom Slot (&lt;strong&gt;below&lt;/strong&gt; the actual table)
&lt;/h2&gt;

&lt;p&gt;Of course, we have total control over the bottom slot!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#bottom&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;
      dogs from &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://poochypoochypooch.com"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;poochypoochypooch.com&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FNoWgCLO.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FNoWgCLO.png" alt="Quasar QTable Customizing The Bottom"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Left and Top Right Slot
&lt;/h2&gt;

&lt;p&gt;I like using &lt;code&gt;#top-left&lt;/code&gt; and &lt;code&gt;#top-right&lt;/code&gt; more than &lt;code&gt;#top&lt;/code&gt;. I almost always want something on either side, so it feels nicer than just using &lt;code&gt;#top&lt;/code&gt;...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#top-left&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-bold"&lt;/span&gt;
      &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"font-size: 1.3em;"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      Cute Pups
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#top-right&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-input&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"q-ml-md"&lt;/span&gt;
      &lt;span class="na"&gt;dense&lt;/span&gt;
      &lt;span class="na"&gt;outlined&lt;/span&gt;
      &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Search"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;template&lt;/span&gt; &lt;span class="na"&gt;#prepend&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"search"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-input&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FGJIH80S.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FGJIH80S.png" alt="Quasar QTable Top Left and Top Right Slot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  No Data Slot
&lt;/h2&gt;

&lt;p&gt;Of course, we can completely overwrite the message for &lt;strong&gt;no-data&lt;/strong&gt;...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"[]"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#no-data&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Hmmm, I can't find any dang data!&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FtmA1Ah9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FtmA1Ah9.png" alt="Quasar QTable No Data Slot Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  And That's It!
&lt;/h2&gt;

&lt;p&gt;🎉🍾🎊🤗&lt;/p&gt;

&lt;p&gt;Now, a question...&lt;/p&gt;

&lt;h2&gt;
  
  
  Can I Share My Story With You?
&lt;/h2&gt;

&lt;p&gt;If you enjoyed this post &lt;strong&gt;half as much&lt;/strong&gt; as I enjoyed making it for you, we'll be best friends!&lt;/p&gt;

&lt;p&gt;And if you'd like to hear some of my story, head on over to &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'll &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;share the journey that lead to my love of Quasar&lt;/a&gt;, and tell you about the &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Massive&lt;/strong&gt; component series&lt;/a&gt; I'm currently working on 🙃&lt;/p&gt;

&lt;p&gt;So &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;, and I'll see you on the other side!&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;Thanks for reading and remember,&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;nothing&lt;/strong&gt; you can't build...&lt;/p&gt;

</description>
      <category>quasar</category>
      <category>vue</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Quasar's QTable: The ULTIMATE Component (3/6) - Loading State, Pagination, and Sorting</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Wed, 18 Aug 2021 12:26:08 +0000</pubDate>
      <link>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-3-6-loading-state-pagination-and-sorting-2mg0</link>
      <guid>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-3-6-loading-state-pagination-and-sorting-2mg0</guid>
      <description>&lt;p&gt;Here's the video version...&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jnwdEtrdRuI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;You already know what loading state, pagination and sorting is right?&lt;/p&gt;

&lt;p&gt;Sweet! No preamble required, let's just dive right in...&lt;/p&gt;




&lt;p&gt;Oh, and &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;&lt;strong&gt;WACK this link&lt;/strong&gt;&lt;/a&gt; if you'd like to &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;&lt;strong&gt;Learn All 72 Of Quasar's Components&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;




&lt;p&gt;Now let's begin!&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Just want the code? Here's the github repo! &lt;a href="https://github.com/ldiebold/q-table-blog" rel="noopener noreferrer"&gt;ldiebold/q-table-blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'll do some fancy pants stuff in this blog, so we'll need a backend... Luckily, I built a &lt;strong&gt;free api just for you&lt;/strong&gt;! checkout this endpoint...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://table.quasarcomponents.com/dogs" rel="noopener noreferrer"&gt;https://table.quasarcomponents.com/dogs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take a squiz at the data! if you scroll down to the &lt;code&gt;meta&lt;/code&gt; property, you'll notice that we have pagination...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2021-08-17T01:29:29.000000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;updated_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2021-08-17T01:29:29.000000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hollie&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;nshields@yahoo.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2021-08-17T01:29:29.000000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;updated_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2021-08-17T01:29:29.000000Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sonya&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;shields.gonzalo@douglas.info&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="nx"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;first&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://table.quasarcomponents.com/dogs?page=1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;last&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://table.quasarcomponents.com/dogs?page=34&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://table.quasarcomponents.com/dogs?page=2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;current_page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;last_page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;laquo; Previous&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;active&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://table.quasarcomponents.com/dogs?page=1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;active&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://table.quasarcomponents.com/dogs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;per_page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;total&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Note that much of the &lt;code&gt;data&lt;/code&gt; and &lt;code&gt;links&lt;/code&gt; have been removed for brevity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We'll need axios so it's easy to hit that endpoint, so let's go ahead and install it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

yarn add axios


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now we'll use it in our &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineComponent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineComponent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;loading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dogs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;([])&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;// Fetch dogs&lt;/span&gt;
    &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://table.quasarcomponents.com/dogs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;dogs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;dogs&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If you've read the prior two posts, this might be starting to make sense...&lt;/p&gt;

&lt;p&gt;We setup some &lt;strong&gt;data&lt;/strong&gt;, do some &lt;strong&gt;column&lt;/strong&gt; config, &lt;strong&gt;fetch the dogs&lt;/strong&gt;, update our &lt;code&gt;dogs&lt;/code&gt; array, toggle the &lt;code&gt;loading&lt;/code&gt; state, and expose it to the template!&lt;/p&gt;

&lt;h2&gt;
  
  
  Loading State
&lt;/h2&gt;

&lt;p&gt;Quasar gives us a simple, beautiful loading bar when we set the &lt;code&gt;loading&lt;/code&gt; prop to &lt;code&gt;true&lt;/code&gt;. It also respects the tables &lt;code&gt;color&lt;/code&gt; prop!&lt;/p&gt;

&lt;p&gt;Here, I'll show you...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"secondary"&lt;/span&gt;
  &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"loading"&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F6b3ocYi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F6b3ocYi.png" alt="Quasar QTable Basic Loading State"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! You might need to refresh the page to see it loading (especially if you're in Paris, cause that's where the server is!)&lt;/p&gt;

&lt;p&gt;You could also just set &lt;code&gt;:loading="true"&lt;/code&gt;. I usually do this when playing with the styling!&lt;/p&gt;

&lt;p&gt;So that's basic loading but of course...&lt;/p&gt;

&lt;p&gt;Quasar gives us &lt;strong&gt;TOTAL control&lt;/strong&gt; with slots 🙃&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;#loading&lt;/code&gt; Slot
&lt;/h2&gt;

&lt;p&gt;Take a look at the &lt;code&gt;#loading&lt;/code&gt; slot in this example:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"loading"&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt;
  &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#loading&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-inner-loading&lt;/span&gt;
      &lt;span class="na"&gt;showing&lt;/span&gt;
      &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;
    &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FqxN8ZjT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FqxN8ZjT.png" alt="Quasar QTable Loading State With Slots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using Quasar's &lt;code&gt;QInnerSpinner&lt;/code&gt; component, we can create a beautiful alternative way of displaying "loading".&lt;/p&gt;

&lt;p&gt;I personally think &lt;strong&gt;this looks sweet!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alright, that's enough loading you crazy dev you 😁. Let's take a look at pagination.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pagination
&lt;/h2&gt;

&lt;p&gt;Quasar's &lt;code&gt;QTable&lt;/code&gt; gives you &lt;strong&gt;everything you need for pagination&lt;/strong&gt; by allowing you to model &lt;code&gt;pagination&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;let's add it to our script&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineComponent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pagination&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;sortBy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;descending&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;rowsPerPage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// ...&lt;/span&gt;
      &lt;span class="nx"&gt;pagination&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Most of those pagination options likely make sense to you. Note that Quasar also gives us &lt;code&gt;sortBy&lt;/code&gt; and &lt;code&gt;descending&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sortBy&lt;/code&gt; and &lt;code&gt;descending&lt;/code&gt; allow us to set a &lt;strong&gt;default sort&lt;/strong&gt; to our table. Where I work, &lt;strong&gt;we use this a lot&lt;/strong&gt; as clients often want to see their data in &lt;strong&gt;alphabetical order&lt;/strong&gt; by default.&lt;/p&gt;

&lt;p&gt;I'll show you later how it's possible to &lt;strong&gt;change the sort algorithm&lt;/strong&gt; (I always feel smart using the word "algorithm")&lt;/p&gt;

&lt;p&gt;Now let's &lt;strong&gt;model this pagination data&lt;/strong&gt; in the table:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;v-model:pagination=&lt;/span&gt;&lt;span class="s"&gt;"pagination"&lt;/span&gt;
  &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"secondary"&lt;/span&gt;
  &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"loading"&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FHlJNFTf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FHlJNFTf.png" alt="Quasar QTable Basic Pagination"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pretty cool huh?&lt;/p&gt;

&lt;p&gt;AND, we can even change those &lt;strong&gt;Rows per page options&lt;/strong&gt; with a prop:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;v-model:pagination=&lt;/span&gt;&lt;span class="s"&gt;"pagination"&lt;/span&gt;
  &lt;span class="na"&gt;:rows-per-page-options=&lt;/span&gt;&lt;span class="s"&gt;"[3, 5, 10, 0]"&lt;/span&gt;
  &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"secondary"&lt;/span&gt;
  &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"loading"&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FBPZHtMd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FBPZHtMd.png" alt="Quasar QTable Rows Per Page Pagination"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gosh I love Quasar ❤️&lt;/p&gt;

&lt;p&gt;If you're a &lt;strong&gt;POWER user&lt;/strong&gt;, you might be crossing your arms thinking "yea, but I need &lt;strong&gt;server side&lt;/strong&gt; pagination. Server side pagination is always a pain to implement."&lt;/p&gt;

&lt;p&gt;Well &lt;strong&gt;uncross those arms&lt;/strong&gt; because it's a piece of pecan pie with Quasar!&lt;/p&gt;

&lt;h2&gt;
  
  
  Server Side Pagination (A Piece Of Pecan Pie)
&lt;/h2&gt;

&lt;p&gt;This is why I build the &lt;a href="https://table.quasarcomponents.com/dogs" rel="noopener noreferrer"&gt;https://table.quasarcomponents.com/dogs&lt;/a&gt; api! So we can easily play with server side pagination...&lt;/p&gt;

&lt;p&gt;I'm going to &lt;strong&gt;move my explanation into the code&lt;/strong&gt;, since this example is a little more involved! See you there...&lt;/p&gt;

&lt;p&gt;⬇️&lt;em&gt;Jumps into code block below&lt;/em&gt;⬇️&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!--
    Why hello there!
    Meet me at the "script" section. That's where the magic happens 🪄
  --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;q-page&lt;/span&gt;
    &lt;span class="na"&gt;padding&lt;/span&gt;
    &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex justify-center"&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"full-width q-gutter-xl"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="c"&gt;&amp;lt;!--
        Two things to notice here
        1. "rows-per-page-options" has been emptied.
            We're going to let the server decide how many "rows per page"
        2. @request is fired whenever a pagination is clicked! Handy 🙂
       --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
        &lt;span class="na"&gt;v-model:pagination=&lt;/span&gt;&lt;span class="s"&gt;"pagination"&lt;/span&gt;
        &lt;span class="na"&gt;:rows-per-page-options=&lt;/span&gt;&lt;span class="s"&gt;"[]"&lt;/span&gt;
        &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"secondary"&lt;/span&gt;
        &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"loading"&lt;/span&gt;
        &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt;
        &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
        &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;request=&lt;/span&gt;&lt;span class="s"&gt;"onRequest"&lt;/span&gt;
      &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/q-page&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineComponent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineComponent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// And here we are!&lt;/span&gt;
    &lt;span class="c1"&gt;// I'll only comment on the parts that are different 😉&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;loading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dogs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;([])&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pagination&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="c1"&gt;// No longer using sort. if needed, this can now be done using the backend!&lt;/span&gt;
      &lt;span class="c1"&gt;// sortBy: 'name',&lt;/span&gt;
      &lt;span class="c1"&gt;// descending: false,&lt;/span&gt;
      &lt;span class="na"&gt;page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;rowsPerPage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// When using server side pagination, QTable needs&lt;/span&gt;
      &lt;span class="c1"&gt;// to know the "rows number" (total number of rows).&lt;/span&gt;
      &lt;span class="c1"&gt;// Why?&lt;/span&gt;
      &lt;span class="c1"&gt;// Because Quasar has no way of knowing what the last page&lt;/span&gt;
      &lt;span class="c1"&gt;// will be without this information!&lt;/span&gt;
      &lt;span class="c1"&gt;// Therefore, we now need to supply it with a "rowsNumber" ourself.&lt;/span&gt;
      &lt;span class="na"&gt;rowsNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;sortable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;// Fetch dogs&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetchDogs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c1"&gt;// we can specify the "page" to jump to&lt;/span&gt;
      &lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://table.quasarcomponents.com/dogs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// here, we tell the api what "page" to jump to&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nx"&gt;dogs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;
          &lt;span class="c1"&gt;// The api gives us "meta data".&lt;/span&gt;
          &lt;span class="c1"&gt;// this meta data gives us everything we&lt;/span&gt;
          &lt;span class="c1"&gt;// need to get pagination working!&lt;/span&gt;
          &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;

          &lt;span class="c1"&gt;// We now update "pagination" with our meta data&lt;/span&gt;
          &lt;span class="c1"&gt;// from the server. This is where the magic happens 🪄&lt;/span&gt;
          &lt;span class="nx"&gt;pagination&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current_page&lt;/span&gt;
          &lt;span class="nx"&gt;pagination&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rowsPerPage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;per_page&lt;/span&gt;
          &lt;span class="nx"&gt;pagination&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rowsNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// QTable exposes a @request method (see the &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;// This will be called when one of the pagination buttons are clicked.&lt;/span&gt;
    &lt;span class="c1"&gt;// it gives us everything we need, including the new page number!&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;onRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;fetchDogs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pagination&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// The initial fetch&lt;/span&gt;
    &lt;span class="nf"&gt;fetchDogs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;onRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;dogs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;pagination&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;⬆️&lt;em&gt;Jumps out of code block&lt;/em&gt;⬆️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HOW COOL WAS THAT!!??&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Being &lt;strong&gt;INSIDE&lt;/strong&gt; a code block is strange... It was kinda cold in there, will have to take a coat next time 🧥&lt;/p&gt;

&lt;p&gt;Anywho,&lt;/p&gt;

&lt;p&gt;Let's take a look at the result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FOiUTatl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FOiUTatl.png" alt="Quasar QTable Server Side Pagination"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So there you go. Server side pagination is a blast with Quasar!&lt;/p&gt;

&lt;p&gt;And if you &lt;strong&gt;really&lt;/strong&gt; want total control, you could use Quasar's &lt;code&gt;QPagination&lt;/code&gt; component and completely replace &lt;code&gt;QTable&lt;/code&gt;'s pagination.&lt;/p&gt;

&lt;p&gt;Right, let's move on to the &lt;strong&gt;last topic&lt;/strong&gt; for today/night/evening/morning (us devs are worldy people)...&lt;/p&gt;

&lt;h2&gt;
  
  
  Sorting
&lt;/h2&gt;

&lt;p&gt;Want basic sorting? Quasar's got ya sorted! HA! &lt;strong&gt;I made a joke!!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ahem&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sorting is only &lt;strong&gt;one prop away...&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;sortable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;sortable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;sortable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Notice we set &lt;code&gt;sortable: true&lt;/code&gt; on all the columns?&lt;/p&gt;

&lt;p&gt;Also, notice that when we hover over one of the "heading" cells, we get a &lt;strong&gt;sort arrow...&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fz965MkA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2Fz965MkA.png" alt="Quasar QTable Basic Sorting"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sortable: true&lt;/code&gt; will do the job most of the time, otherwise we can use...&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom Sorting
&lt;/h2&gt;

&lt;p&gt;Need to use your own sort function? No problem!&lt;/p&gt;

&lt;p&gt;In this example, we'll sort using &lt;strong&gt;email&lt;/strong&gt; by &lt;strong&gt;domain&lt;/strong&gt; (e.g. gmail.com, hotmail.com, quasarcast.com etc)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;left&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;sortable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;sortable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;sortable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;domainA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;domainB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;domainA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;localeCompare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;domainB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Bon Appétable!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FzkG3RSw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FzkG3RSw.png" alt="Quasar QTable Custom Sort By Email Domain"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're now sorting with our own sorter! Sorta cool right?&lt;/p&gt;

&lt;h2&gt;
  
  
  "What's Next?""
&lt;/h2&gt;

&lt;p&gt;In the next post, I'm going to gift you with QTable's ultimate power!&lt;/p&gt;

&lt;p&gt;We're going to cover &lt;strong&gt;All of Quasar's Slots!!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You're not gonna wanna miss it! Slots give &lt;code&gt;QTable&lt;/code&gt; &lt;strong&gt;UNLIMITED&lt;/strong&gt; flexibility 💪&lt;/p&gt;

&lt;h2&gt;
  
  
  For Those That Need A Little More...
&lt;/h2&gt;

&lt;p&gt;Quasar has a &lt;strong&gt;huge&lt;/strong&gt;, impressive component library.&lt;/p&gt;

&lt;p&gt;The APIs will &lt;strong&gt;bring you to your knees&lt;/strong&gt; with joy! The flexibility will have you &lt;strong&gt;nodding your head with approval&lt;/strong&gt;, and the beautiful community will lead you to &lt;strong&gt;fall in love&lt;/strong&gt; with this framework.&lt;/p&gt;

&lt;p&gt;Sound like something worth exploring?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Of course it is!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now head on over to &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt; and let me to &lt;strong&gt;take you on a journey you'll never forget!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'll teach you &lt;a href="(https://quasarcomponents.com)"&gt;&lt;strong&gt;all 72&lt;/strong&gt;&lt;/a&gt; of Quasar's components in &lt;strong&gt;action packed&lt;/strong&gt; videos that will leave you &lt;strong&gt;excited to code!!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;Click Here and I'll see you on the other side!&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;That's all my dear dev friends. Now can you please do me a &lt;strong&gt;very important favour&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Go to bed tonight remembering, and dreaming about &lt;strong&gt;this one thing&lt;/strong&gt;,&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;nothing&lt;/strong&gt; you can't build...&lt;/p&gt;

</description>
      <category>quasar</category>
      <category>vue</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Quasar's QTable: The ULTIMATE Component (2/6) - Expandable Rows and Selectable Rows</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Tue, 17 Aug 2021 11:43:48 +0000</pubDate>
      <link>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-2-6-expandable-rows-and-selectable-rows-2ng9</link>
      <guid>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-2-6-expandable-rows-and-selectable-rows-2ng9</guid>
      <description>&lt;p&gt;Prefer video? I got ya covered!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/f5Vn0MU5u6w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I use selectable rows, and expandable rows all the time! I'll give you a real world example.&lt;/p&gt;

&lt;p&gt;We record "spraying events" for paddocks, and sometimes a paddock will be sprayed many times! Our app groups individual sprays by paddock, and also gives a "total amount sprayed" in the parent row!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FqtLZRyr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FqtLZRyr.png" alt="Paddock Sprays With QTable"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now look at what happens when we click on one of the rows...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FQxtoB4B.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FQxtoB4B.png" alt="Paddock Sprays With QTable Expanded"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The farmers LOVE IT! And guess what...&lt;/p&gt;

&lt;p&gt;It was &lt;strong&gt;surprisingly easy&lt;/strong&gt; to build with Quasar's QTable! I'll show you how 😊&lt;/p&gt;

&lt;p&gt;Also, notice the &lt;strong&gt;Totals&lt;/strong&gt; row at the bottom? Also a piece of cake with Quasar! (more on summary rows in a future blog post)&lt;/p&gt;

&lt;p&gt;Now before we dive in, take a look at &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt; for some &lt;strong&gt;action packed&lt;/strong&gt;, heart &lt;strong&gt;POUNDING&lt;/strong&gt;, nail &lt;strong&gt;biting&lt;/strong&gt;, high &lt;strong&gt;intensity&lt;/strong&gt; videos on &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;all 72 of Quasar's components!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;click here&lt;/a&gt; and I'll see you on the other side 😁&lt;/p&gt;

&lt;h2&gt;
  
  
  A Little Setup
&lt;/h2&gt;

&lt;p&gt;Let's do some basic setup so things run smoothly!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;selected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Panda&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;panda@chihuahua.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lily&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lily@chihuahua.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;expand&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;expand&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;expand&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;selected&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/ldiebold/q-table-blog" rel="noopener noreferrer"&gt;and here's the github repo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Expandable Rows
&lt;/h2&gt;

&lt;p&gt;Expandable rows are made possible with the &lt;code&gt;#body&lt;/code&gt; slot. I'll here's how it's done 😎&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#body=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&lt;/span&gt; &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="c"&gt;&amp;lt;!-- Expand cell/button --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"expand"&lt;/span&gt;
        &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"expand"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
        &lt;span class="na"&gt;auto-width&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="c"&gt;&amp;lt;!--
          The important part here is
          @click="props.expand = !props.expand"
        --&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-btn&lt;/span&gt;
          &lt;span class="na"&gt;flat&lt;/span&gt;
          &lt;span class="na"&gt;round&lt;/span&gt;
          &lt;span class="na"&gt;:icon=&lt;/span&gt;&lt;span class="s"&gt;"props.expand ? 'remove' : 'add'"&lt;/span&gt;
          &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"props.expand = !props.expand"&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="c"&gt;&amp;lt;!--
        Notice that we the "key" matches the columns "name" property
        Notice that we "proxy" the props from #body="props" to our q-td
      --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"age"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- We show the row if "props.expand" is toggled to true! --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&lt;/span&gt;
      &lt;span class="na"&gt;v-show=&lt;/span&gt;&lt;span class="s"&gt;"props.expand"&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="na"&gt;colspan=&lt;/span&gt;&lt;span class="s"&gt;"100%"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-left"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          Expanded
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;all closed&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FfQ06tvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FfQ06tvw.png" alt="Basic QTable Expandable Row Example Closed"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;one row expanded&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FjWkLe6s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FjWkLe6s.png" alt="Basic QTable Expandable Row Example Opened"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few things to note here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First&lt;/strong&gt;: The &lt;code&gt;#body&lt;/code&gt; slot allows us to tap into individual rows&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second&lt;/strong&gt;: we use Quasar's &lt;code&gt;q-tr&lt;/code&gt; and &lt;code&gt;q-td&lt;/code&gt; components to build the row. This gives us INSANE control!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third&lt;/strong&gt;: We use the scope (&lt;code&gt;#body="props"&lt;/code&gt;) and pass it to every &lt;code&gt;q-td&lt;/code&gt; and &lt;code&gt;q-tr&lt;/code&gt;. This is important! It means our &lt;code&gt;q-tr&lt;/code&gt;'s and &lt;code&gt;q-td&lt;/code&gt;'s get all the styling they need for things like &lt;code&gt;dense&lt;/code&gt; and &lt;code&gt;visible-columns&lt;/code&gt; (more on those later)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fouth&lt;/strong&gt;: We can toggle/track if a row is expanded with &lt;code&gt;props.expanded&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Read those four points back and forth until they make sense! Understand them, and you'll have &lt;strong&gt;IMMENSE power&lt;/strong&gt; over Quasar's QTable!&lt;/p&gt;

&lt;p&gt;Also notice that in the expanded row, we use &lt;code&gt;colspan="100%"&lt;/code&gt; to basically say "take up all the space in this row". Helpful for things like "create" buttons that insert new rows.&lt;/p&gt;

&lt;p&gt;AND, &lt;code&gt;auto-width&lt;/code&gt; which "Tries to shrink column width size; Useful for columns with a checkbox/radio/toggle"&lt;/p&gt;

&lt;h2&gt;
  
  
  Individual Cells For Each Row
&lt;/h2&gt;

&lt;p&gt;To be thorough, here's an example where the expanded row has cells, lining up with cells on the parent row...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="c"&gt;&amp;lt;!-- Expandable Row (cells) --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"columns"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#body=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- PARENT ROW --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&lt;/span&gt; &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="c"&gt;&amp;lt;!-- Expand cell/button --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"expand"&lt;/span&gt;
        &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"expand"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
        &lt;span class="na"&gt;auto-width&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-btn&lt;/span&gt;
          &lt;span class="na"&gt;flat&lt;/span&gt;
          &lt;span class="na"&gt;round&lt;/span&gt;
          &lt;span class="na"&gt;:icon=&lt;/span&gt;&lt;span class="s"&gt;"props.expand ? 'remove' : 'add'"&lt;/span&gt;
          &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"props.expand = !props.expand"&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"age"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- CHILD ROW --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-tr&lt;/span&gt;
      &lt;span class="na"&gt;v-show=&lt;/span&gt;&lt;span class="s"&gt;"props.expand"&lt;/span&gt;
      &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="c"&gt;&amp;lt;!--
        Might want to leave the first cell blank, as it is
        simply space for the "expand" column
      --&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"expand"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt; &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        summary
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        summary
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        summary
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        summary
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-td&lt;/span&gt;
        &lt;span class="na"&gt;key=&lt;/span&gt;&lt;span class="s"&gt;"age"&lt;/span&gt;
        &lt;span class="na"&gt;:props=&lt;/span&gt;&lt;span class="s"&gt;"props"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        summary
      &lt;span class="nt"&gt;&amp;lt;/q-td&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-tr&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRYqt0vU.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRYqt0vU.png" alt="Expandable Rows With Cells In The Child Row"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;those places that say "summary"... You can put whatever you like in those cells!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BIG TIP&lt;/strong&gt;: use &lt;code&gt;props.row&lt;/code&gt; to access the current row 🚣&lt;/p&gt;

&lt;p&gt;HA! Emoji joke 😆&lt;/p&gt;

&lt;p&gt;It's also worth noting that &lt;strong&gt;you can have as many "child" rows as you like!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And THAT my friend, is expandable rows. now let's move on to making rows &lt;strong&gt;selectable&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Selectable Rows. A Gift From Quasar 🎁
&lt;/h2&gt;

&lt;p&gt;This truly is a gift! I've implemented a "selectable rows" feature myself in the past and you know what?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It SUCKS!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quasar makes it easier than blowing out a two year old's birthday candles 🎂 (which you shouldn't do, that's not cool)...&lt;/p&gt;

&lt;p&gt;Check it!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;v-model:selected=&lt;/span&gt;&lt;span class="s"&gt;"selected"&lt;/span&gt;
  &lt;span class="na"&gt;selection=&lt;/span&gt;&lt;span class="s"&gt;"single"&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FLNh0Mpz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FLNh0Mpz.png" alt="QTable Basic Selection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes! It really is &lt;strong&gt;that flippen easy&lt;/strong&gt; 😱😱😱&lt;/p&gt;

&lt;p&gt;Do I even need to explain this code!?&lt;/p&gt;

&lt;p&gt;The one thing to note, is &lt;code&gt;row-key&lt;/code&gt; is used to uniquely identify the selected data, so you'll need it!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HOT TIP&lt;/strong&gt;: use the &lt;code&gt;pre&lt;/code&gt; tag to display this data nicely when testing...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;pre&amp;gt;&lt;/span&gt;{{ selected }}&lt;span class="nt"&gt;&amp;lt;/pre&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;That's what all the cool kids are doing (or so I'm told)&lt;/p&gt;

&lt;h2&gt;
  
  
  "But Luke! I want to use a TOGGLE, not a checkbox
&lt;/h2&gt;

&lt;p&gt;Oh!? Do ya now!?&lt;/p&gt;

&lt;p&gt;No worries my inquisitive friend! Rollup your sleeves and try this!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;v-model:selected=&lt;/span&gt;&lt;span class="s"&gt;"selected"&lt;/span&gt;
  &lt;span class="na"&gt;selection=&lt;/span&gt;&lt;span class="s"&gt;"multiple"&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"rows"&lt;/span&gt;
  &lt;span class="na"&gt;row-key=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#header-selection=&lt;/span&gt;&lt;span class="s"&gt;"scope"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-toggle&lt;/span&gt; &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"scope.selected"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#body-selection=&lt;/span&gt;&lt;span class="s"&gt;"scope"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-toggle&lt;/span&gt; &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"scope.selected"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-table&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FDvUyFCu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FDvUyFCu.png" alt="Customizing Quasar QTable Selected With Slots"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(did you catch my cheeky rollup joke?)&lt;/p&gt;

&lt;p&gt;Note that &lt;code&gt;scope.selected&lt;/code&gt; is a simple function that toggles the selection for you. Easy right?&lt;/p&gt;

&lt;p&gt;Are you starting to see how Quasar's API makes building components bliss? I LOVE it ❤️&lt;/p&gt;

&lt;h2&gt;
  
  
  multiple select
&lt;/h2&gt;

&lt;p&gt;You can enable multiple select by changing &lt;code&gt;selection="single"&lt;/code&gt; to &lt;code&gt;selection="multiple"&lt;/code&gt; 🍪&lt;/p&gt;

&lt;h2&gt;
  
  
  "Luke! This Is SO COOL! I Want &lt;strong&gt;MORE&lt;/strong&gt;"
&lt;/h2&gt;

&lt;p&gt;Oh nice, I love your enthusiasm!&lt;/p&gt;

&lt;p&gt;If you want to learn more about this stuff, head on over to &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In that series, we will...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cover &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;&lt;strong&gt;all 72&lt;/strong&gt;&lt;/a&gt; of Quasar's Components&lt;/li&gt;
&lt;li&gt;Build &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;&lt;strong&gt;YouTube's UI&lt;/strong&gt;&lt;/a&gt; with Quasar&lt;/li&gt;
&lt;li&gt;Build &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;a &lt;strong&gt;Live Chat App&lt;/strong&gt;&lt;/a&gt; with Laravel and Quasar&lt;/li&gt;
&lt;li&gt;Build a Quasar &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;&lt;strong&gt;App Extension&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All proceeds are donated directly to the Quasar Dev team!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;Check it out here&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thanks for reading 🤓. Tomorrow we'll cover &lt;strong&gt;Loading State, Pagination, and Sorting&lt;/strong&gt; (You're gonna LOVE &lt;strong&gt;Pagination&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Bye for now! And please for the love of code remember,&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;nothing&lt;/strong&gt; you can't build...&lt;/p&gt;

</description>
      <category>quasar</category>
      <category>vue</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Quasar's QTable: The ULTIMATE Component (1/6) - Setup, Data and Columns!</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Mon, 16 Aug 2021 13:22:34 +0000</pubDate>
      <link>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-1-6-setup-data-and-columns-126o</link>
      <guid>https://dev.to/quasar/quasar-s-qtable-the-ultimate-component-1-6-setup-data-and-columns-126o</guid>
      <description>&lt;p&gt;Quasar has &lt;strong&gt;72 Components!&lt;/strong&gt; If you want to watch a video on every single one of them, take a look at &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There's also a bunch of bonuses like &lt;strong&gt;Building YouTube's UI&lt;/strong&gt;, Creating a &lt;strong&gt;Live Quasar Chat App&lt;/strong&gt;, Crafting Quasar UI Library with your very own &lt;strong&gt;App Extension&lt;/strong&gt; AND...&lt;/p&gt;

&lt;p&gt;All proceeds go directly to helping the development of Quasar!&lt;/p&gt;

&lt;p&gt;Pretty cool huh?&lt;/p&gt;

&lt;p&gt;So &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;check it out&lt;/a&gt;, and join all the other cool cats at &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let's have some fun with &lt;code&gt;QTable&lt;/code&gt;!!!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/rv35cyGVRVY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Never used Quasar before? Here's the &lt;strong&gt;tldr&lt;/strong&gt; of setting up Quasar so you can follow along 🙂&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @quasar/cli

quasar create q-table-play

&lt;span class="nb"&gt;cd &lt;/span&gt;q-table-play

quasar dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, clone &lt;a href="https://github.com/ldiebold/q-table-blog" rel="noopener noreferrer"&gt;The Github Repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You now have an app that can export to mobile, desktop, spa, pwa, ssr and even a browser extension. &lt;strong&gt;I'm not joking!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now let's get to &lt;code&gt;QTable&lt;/code&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Data
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;QTable&lt;/strong&gt; is likely the most gorgeously designed, magnificently crafted, well thought out components on the web. Why?&lt;/p&gt;

&lt;p&gt;It follows a &lt;strong&gt;wonderful&lt;/strong&gt; pattern (like all other Quasar components)...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Easy to get started, yet configurable to the nth degree!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now check this out...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"[
    {
      name: 'Panda',
      email: 'panda@chihuahua.com',
    },
    {
      name: 'Lily',
      email: 'lily@chihuahua.com',
    }
  ]"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1629118665%2FBasic%2520Example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1629118665%2FBasic%2520Example.png" alt="Basic Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's right! We just give it an array of objects (aka collection) and it runs smoother than a tesla...&lt;/p&gt;

&lt;p&gt;But it gets better...&lt;/p&gt;

&lt;h2&gt;
  
  
  Specifying Columns
&lt;/h2&gt;

&lt;p&gt;So can you customize the columns?...&lt;/p&gt;

&lt;p&gt;OF COURSE YOU CAN!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"My Chihuahuas"&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"[
    {
      name: 'Panda',
      email: 'panda@chihuahua.com',
      age: 6
    },
    {
      name: 'Lily',
      email: 'lily@chihuahua.com',
      age: 5
    }
  ]"&lt;/span&gt;
  &lt;span class="na"&gt;:columns=&lt;/span&gt;&lt;span class="s"&gt;"[
    {
      label: 'Dog Name',
      field: 'name',
      name: 'name',
      align: 'left'
    },
    {
      label: 'Email',
      field: 'email',
      name: 'email',
      align: 'left'
    },
    {
      label: 'Age',
      field: 'age',
      name: 'age',
      align: 'center',
      format: age =&amp;gt; `${age} years`
    }
  ]"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1629118665%2FCustom%2520Columns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1629118665%2FCustom%2520Columns.png" alt="Custom Columns"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You would probably want to move the columns and data out of the template, I just want to keep these examples simple 🙂&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Simple right?&lt;/p&gt;

&lt;p&gt;We just give that bad boi an object for every column. Try changing the order of the columns and see what happens...&lt;/p&gt;

&lt;p&gt;Also, notice we can add a formatter with &lt;code&gt;format&lt;/code&gt; (see the "age" column). And there's something else cool here.&lt;/p&gt;

&lt;p&gt;We can easily &lt;code&gt;align&lt;/code&gt; content, and set the &lt;code&gt;label&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;We also have &lt;code&gt;sortable&lt;/code&gt;, &lt;code&gt;style&lt;/code&gt;, &lt;code&gt;classes&lt;/code&gt; and more! Checkout the QColumn Smörgåsbord &lt;a href="https://quasar.dev/vue-components/table#qtable-api" rel="noopener noreferrer"&gt;here&lt;/a&gt; (click on &lt;code&gt;Column&lt;/code&gt; to see all the options)&lt;/p&gt;

&lt;p&gt;But we need basics like a "title" and of course... &lt;strong&gt;Dark Mode&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Title and Dark Mode
&lt;/h2&gt;

&lt;p&gt;Wait what? Your table doesn't support dark mode? How do you sleep at night!?&lt;/p&gt;

&lt;p&gt;Just fine. Get over it.&lt;/p&gt;

&lt;p&gt;Seriously though, dark mode is pretty sweet, and Quasar's &lt;code&gt;QTable&lt;/code&gt; supports it with the unambiguous &lt;code&gt;dark&lt;/code&gt; property!&lt;/p&gt;

&lt;p&gt;While we're at it, let's use &lt;code&gt;separator&lt;/code&gt; to add &lt;em&gt;horizontal&lt;/em&gt; and &lt;em&gt;vertical&lt;/em&gt; lines!&lt;/p&gt;

&lt;p&gt;We'll also remove &lt;strong&gt;pagination&lt;/strong&gt; with &lt;code&gt;:rows-per-page-options="[0]"&lt;/code&gt; (much more on pagination later), and we'll hide the bottom row to save space!&lt;/p&gt;

&lt;p&gt;And you know what? Those cells are lookin waaay too chunky. Let's dense 'em up with the &lt;code&gt;dense&lt;/code&gt; property!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;q-table&lt;/span&gt;
  &lt;span class="na"&gt;dark&lt;/span&gt;
  &lt;span class="na"&gt;:rows-per-page-options=&lt;/span&gt;&lt;span class="s"&gt;"[0]"&lt;/span&gt;
  &lt;span class="na"&gt;hide-bottom&lt;/span&gt;
  &lt;span class="na"&gt;separator=&lt;/span&gt;&lt;span class="s"&gt;"cell"&lt;/span&gt;
  &lt;span class="na"&gt;dense&lt;/span&gt;
  &lt;span class="na"&gt;:rows=&lt;/span&gt;&lt;span class="s"&gt;"[
    {
      name: 'Panda',
      email: 'panda@chihuahua.com',
    },
    {
      name: 'Lily',
      email: 'lily@chihuahua.com',
    },
  ]"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1629118665%2FDark%2520And%2520Dense.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1629118665%2FDark%2520And%2520Dense.png" alt="Dark And Dense"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There we go. Thanks to that &lt;code&gt;dark&lt;/code&gt; property, we're hip... and accepted in the coding community 🙄 😆&lt;/p&gt;

&lt;h2&gt;
  
  
  Oh so much more to come!...
&lt;/h2&gt;

&lt;p&gt;So there you have it! &lt;strong&gt;This is just the beginning&lt;/strong&gt; of a 6 part series. I have so much cool $^*&amp;amp;#% to share with you AND...&lt;/p&gt;




&lt;p&gt;If you &lt;strong&gt;love Quasar's components&lt;/strong&gt; as much as me, or want to see an &lt;strong&gt;in depth video on&lt;/strong&gt; &lt;code&gt;QTable&lt;/code&gt;, meet me over at &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'll cover &lt;strong&gt;All 72 Quasar Components&lt;/strong&gt; and...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building YouTube's UI&lt;/li&gt;
&lt;li&gt;Create a Live Quasar Chat App&lt;/li&gt;
&lt;li&gt;Craft a Quasar UI Library with our very own &lt;strong&gt;App Extension&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;All proceeds are sent directly to the Quasar team&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;So thanks for reading. Tomorrow we'll cover &lt;strong&gt;expandable rows&lt;/strong&gt; and &lt;strong&gt;selectable rows&lt;/strong&gt;. Really cool stuff, and Quasar makes it simple 😉&lt;/p&gt;

&lt;p&gt;And remember!&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;nothing&lt;/strong&gt; you can't build...&lt;/p&gt;

</description>
      <category>quasar</category>
      <category>vue</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Quasar's "Select" Component... 7 Reasons It's The Gift That Just Keeps Giving!</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Sun, 08 Aug 2021 08:08:37 +0000</pubDate>
      <link>https://dev.to/quasar/quasar-s-select-component-7-reasons-it-s-the-gift-that-just-keeps-giving-4j48</link>
      <guid>https://dev.to/quasar/quasar-s-select-component-7-reasons-it-s-the-gift-that-just-keeps-giving-4j48</guid>
      <description>&lt;p&gt;Errrg, building a select component from scratch is like building a house out of sand. Just when you think you're making headway, everything comes crashing down. I hate it...&lt;/p&gt;

&lt;p&gt;Luckily, Quasar's &lt;code&gt;QSelect&lt;/code&gt; component is a gorgeously crafted work of art! And that's awesome, because if there's one wheel I never want to reinvent, it's QSelect (though in reality, it's more like reinventing calculus).&lt;/p&gt;

&lt;p&gt;So without any furthur adon't... let's take a look at what makes QSelect the &lt;strong&gt;One QSelect To Rule Them ALLL!!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Oh... And head over to &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt; to learn more about this stuff!&lt;/p&gt;

&lt;h2&gt;
  
  
  #0: The Script Tag!
&lt;/h2&gt;

&lt;p&gt;Following along? Sweet!&lt;br&gt;
Here's the js you'll need to get started. Whack it in, and everything else will be easier to follow :)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineComponent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PageIndex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

  &lt;span class="nf"&gt;data &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;slotDog&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;dog&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;dogsPretty&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;dogsObjectOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;dogsMultiple&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
      &lt;span class="na"&gt;dogsOtt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
      &lt;span class="na"&gt;longList&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;And here is a &lt;a href="https://github.com/ldiebold/quasar-q-select-blog-post" rel="noopener noreferrer"&gt;GitHub repo with all the examples&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  #1: Model That Data!
&lt;/h2&gt;

&lt;p&gt;To get started with &lt;code&gt;QSelect&lt;/code&gt;, we model some data, and add an array of &lt;code&gt;options&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Basic%2520Example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Basic%2520Example.png" alt="Quasar QSelect Basic Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-select&lt;/span&gt;
  &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"dog"&lt;/span&gt;
  &lt;span class="na"&gt;:options=&lt;/span&gt;&lt;span class="s"&gt;"['Panda', 'Lily', 'Moe']"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  #2: Or Use an Object For Your Options...
&lt;/h2&gt;

&lt;p&gt;Of course, you can also use a collection of objects. Here's a taste of what that might look like! Note that by default, &lt;code&gt;label&lt;/code&gt; and &lt;code&gt;value&lt;/code&gt; are used by &lt;code&gt;QSelect&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Basic%2520Example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Basic%2520Example.png" alt="Quasar QSelect Basic Example With An Object For Options"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-select&lt;/span&gt;
  &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"dogsObjectOptions"&lt;/span&gt;
  &lt;span class="na"&gt;:options=&lt;/span&gt;&lt;span class="s"&gt;"[
    {
      label: 'Panda',
      value: 1
    },
    {
      label: 'Lily',
      value: 2
    },
    {
      label: 'Moe',
      value: 3
    }
  ]"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  #3: Multiple Select!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Of course&lt;/strong&gt; multiple select is possible. Just add the &lt;code&gt;multiple&lt;/code&gt; flag and you'll be modeling an array:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Multiple.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Multiple.png" alt="Quasar QSelect Multiple"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-select&lt;/span&gt;
  &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"dogsMultiple"&lt;/span&gt;
  &lt;span class="na"&gt;:options=&lt;/span&gt;&lt;span class="s"&gt;"['Panda', 'Lily', 'Moe']"&lt;/span&gt;
  &lt;span class="na"&gt;multiple&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  #4: Making it Sexy!!!
&lt;/h2&gt;

&lt;p&gt;Check out this gorgeous select. Bruised my chin after building this one (10 points to Gryffindor if you can decipher that joke).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Sexified.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Sexified.png" alt="Quasar QSelect Sexified"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-select&lt;/span&gt;
  &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"dogsPretty"&lt;/span&gt;
  &lt;span class="na"&gt;label=&lt;/span&gt;&lt;span class="s"&gt;"Selected Dog"&lt;/span&gt;
  &lt;span class="na"&gt;label-color=&lt;/span&gt;&lt;span class="s"&gt;"purple-8"&lt;/span&gt;
  &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"purple"&lt;/span&gt;
  &lt;span class="na"&gt;bg-color=&lt;/span&gt;&lt;span class="s"&gt;"purple-1"&lt;/span&gt;
  &lt;span class="na"&gt;popup-content-class=&lt;/span&gt;&lt;span class="s"&gt;"text-grey-8"&lt;/span&gt;
  &lt;span class="na"&gt;options-selected-class=&lt;/span&gt;&lt;span class="s"&gt;"bg-purple-4 text-white"&lt;/span&gt;
  &lt;span class="na"&gt;:options=&lt;/span&gt;&lt;span class="s"&gt;"['Panda', 'Lily', 'Moe']"&lt;/span&gt;
  &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"max-width: 200px;"&lt;/span&gt;
  &lt;span class="na"&gt;outlined&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  #5: Bunch of Other Cool Stuff In One OTT Example
&lt;/h2&gt;

&lt;p&gt;The API is so dang intuitive, you can probably figure out what most of this does...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Over%2520The%2520Top%2520Example%2520A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Over%2520The%2520Top%2520Example%2520A.png" alt="Quasar QSelect Over The Top Example A"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Over%2520The%2520Top%2520Example%2520B.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Over%2520The%2520Top%2520Example%2520B.png" alt="Quasar QSelect Over The Top Example B"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Error%2520Handling.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Error%2520Handling.png" alt="Quasar QSelect Error Handling"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-select&lt;/span&gt;
  &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"dogsOtt"&lt;/span&gt;
  &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"dog"&lt;/span&gt;
  &lt;span class="na"&gt;option-label=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;
  &lt;span class="na"&gt;option-value=&lt;/span&gt;&lt;span class="s"&gt;"id"&lt;/span&gt;
  &lt;span class="na"&gt;multiple&lt;/span&gt;
  &lt;span class="na"&gt;options-dense&lt;/span&gt;
  &lt;span class="na"&gt;use-chips&lt;/span&gt;
  &lt;span class="na"&gt;filled&lt;/span&gt;
  &lt;span class="na"&gt;rounded&lt;/span&gt;
  &lt;span class="na"&gt;hint=&lt;/span&gt;&lt;span class="s"&gt;"Select a dog"&lt;/span&gt;
  &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"brown"&lt;/span&gt;
  &lt;span class="na"&gt;:suffix=&lt;/span&gt;&lt;span class="s"&gt;"dogsOtt.map(dog =&amp;gt; dog.sound).join(', ')"&lt;/span&gt;
  &lt;span class="na"&gt;:loading=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
  &lt;span class="na"&gt;clear-icon&lt;/span&gt;
  &lt;span class="na"&gt;counter&lt;/span&gt;
  &lt;span class="na"&gt;:rules=&lt;/span&gt;&lt;span class="s"&gt;"[val =&amp;gt; val.length &amp;gt; 1 || 'Please select at least 2 dogs']"&lt;/span&gt;
  &lt;span class="na"&gt;:options=&lt;/span&gt;&lt;span class="s"&gt;"[
    {
      name: 'Panda',
      id: 1,
      sound: 'rrrruf! Ruf RUF!'
    },
    {
      name: 'Lily',
      id: 2,
      sound: 'Beep!'
    },
    {
      name: 'Moe',
      id: 3,
      sound: 'Aroooooooo'
    }
  ]"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;pre&amp;gt;&lt;/span&gt;{{ dogsOtt }}&lt;span class="nt"&gt;&amp;lt;/pre&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  #6: What About Performance for Looooong Lists?
&lt;/h2&gt;

&lt;p&gt;Now THIS is cool!&lt;br&gt;
If your list is massive &lt;strong&gt;it will still perform fast!&lt;/strong&gt;&lt;br&gt;
Why? Because Quasar does some fancy pants &lt;em&gt;virtual scroll&lt;/em&gt; voodoo behind the scenes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392864%2FQuasar%2520QSelect%2520Massive%2520List%2520Example%2520A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392864%2FQuasar%2520QSelect%2520Massive%2520List%2520Example%2520A.png" alt="Quasar QSelect Massive List Example A"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Massive%2520List%2520Example%2520B.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392863%2FQuasar%2520QSelect%2520Massive%2520List%2520Example%2520B.png" alt="Quasar QSelect Massive List Example B"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-select&lt;/span&gt;
  &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"longList"&lt;/span&gt;
  &lt;span class="na"&gt;:options=&lt;/span&gt;&lt;span class="s"&gt;"Array.from(Array(1000000).keys())"&lt;/span&gt;
  &lt;span class="na"&gt;multiple&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  #7: Extend it to the Nth Degree with Slots
&lt;/h2&gt;

&lt;p&gt;Want to go on a rampage with me? Okay, grab a coffee, hold onto your seat and we'll modify this bad boi like a 7 of 9!&lt;/p&gt;

&lt;p&gt;Good luck coming up with a "but I can't xyz" excuse after this! WOOHOOOO!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392865%2FQuasar%2520QSelect%2520Scoped%2520Slots%2520Example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fquasarcast-com%2Fimage%2Fupload%2Fv1628392865%2FQuasar%2520QSelect%2520Scoped%2520Slots%2520Example.png" alt="Quasar QSelect Scoped Slots Example"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;q-select&lt;/span&gt;
  &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"slotDog"&lt;/span&gt;
  &lt;span class="na"&gt;label&lt;/span&gt;
  &lt;span class="na"&gt;filled&lt;/span&gt;
  &lt;span class="na"&gt;:options=&lt;/span&gt;&lt;span class="s"&gt;"[
    {
      name: 'Panda',
      color: 'grey-4',
    },
    {
      name: 'Lily',
      color: 'yellow-8',
    },
    {
      name: 'Moe',
      color: 'brown',
    }
  ]"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- Add an icon WITHIN the input --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#prepend&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"pets"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- Add an icon AFTER the input  --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#after&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt;
      &lt;span class="na"&gt;v-if=&lt;/span&gt;&lt;span class="s"&gt;"slotDog"&lt;/span&gt;
      &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"green"&lt;/span&gt;
      &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"check_circle"&lt;/span&gt;
    &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- We can take total control of the label... --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#label&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    Favourite Dog
    &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt;
      &lt;span class="na"&gt;size=&lt;/span&gt;&lt;span class="s"&gt;"xs"&lt;/span&gt;
      &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"favorite"&lt;/span&gt;
    &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- We can take total control of how options are rendered... --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#option=&lt;/span&gt;&lt;span class="s"&gt;"scope"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-item&lt;/span&gt;
      &lt;span class="na"&gt;clickable&lt;/span&gt;
      &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"scope.toggleOption(scope.opt)"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-item-section&lt;/span&gt; &lt;span class="na"&gt;side&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;q-checkbox&lt;/span&gt;
          &lt;span class="na"&gt;:model-value=&lt;/span&gt;&lt;span class="s"&gt;"scope.selected"&lt;/span&gt;
          &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"scope.toggleOption(scope.opt)"&lt;/span&gt;
        &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-item-section&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;q-item-section&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/q-item-section&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-item&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- We can change how the selection is displayed! --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#selected&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt;
      &lt;span class="na"&gt;v-if=&lt;/span&gt;&lt;span class="s"&gt;"slotDog"&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex items-center"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt;
        &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"q-mr-xs"&lt;/span&gt;
        &lt;span class="na"&gt;size=&lt;/span&gt;&lt;span class="s"&gt;"xs"&lt;/span&gt;
        &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"circle"&lt;/span&gt;
        &lt;span class="na"&gt;:color=&lt;/span&gt;&lt;span class="s"&gt;"slotDog.color"&lt;/span&gt;
      &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;slotDog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- Hooking into the top of our options list is easy! --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#before-options&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-item-label&lt;/span&gt; &lt;span class="na"&gt;header&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      Favourite Dog &lt;span class="nt"&gt;&amp;lt;q-icon&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"favorite"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/q-item-label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;&amp;lt;!-- And hooking into AFTER our options is peasy! --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt; &lt;span class="na"&gt;#after-options&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;q-btn&lt;/span&gt;
      &lt;span class="na"&gt;v-close-popup&lt;/span&gt;
      &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"full-width"&lt;/span&gt;
      &lt;span class="na"&gt;label=&lt;/span&gt;&lt;span class="s"&gt;"cancel"&lt;/span&gt;
    &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/q-select&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;em&gt;Phone Calls&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Luke: Hello?&lt;/p&gt;

&lt;p&gt;Other end: Hi, is this Luke? The creator of select-a-pet-like-a-boss.com?&lt;/p&gt;

&lt;p&gt;Luke: Ummm yes, this is he. How can I help?&lt;/p&gt;

&lt;p&gt;Other end: I just want to let you know, that was the most amazing dog selecting experience I've ever had on the internet. Thankyou!!!&lt;/p&gt;

&lt;p&gt;Luke: Oh wow, you're most welcome kind stranger!&lt;/p&gt;




&lt;p&gt;And that's how you make friends with a Select Component!&lt;/p&gt;

&lt;h2&gt;
  
  
  What Else Is Covered On &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com?...&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A whooole lot more!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filtering&lt;/li&gt;
&lt;li&gt;lazy loading list items (like from an API)&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;positioning the menu&lt;/li&gt;
&lt;li&gt;displaying sanitized html&lt;/li&gt;
&lt;li&gt;keyboard navigation&lt;/li&gt;
&lt;li&gt;use in a &lt;code&gt;QForm&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Advanced Virtual Scroll techniques (to improve performance for long lists that have custom styling)&lt;/li&gt;
&lt;li&gt;mapping object fields rather than the entire object...
And probably a bazillion other things I can't think of right now. We go deep!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;click here&lt;/a&gt;, and meet me on the other side of &lt;a href="https://quasarcomponents.com" rel="noopener noreferrer"&gt;QuasarComponents.Com&lt;/a&gt; to discover more!&lt;/p&gt;




&lt;p&gt;There you have it! "7 Reasons Quasar's Select Component Is The Gift That Just Keeps Giving!"&lt;/p&gt;

&lt;p&gt;Until next time, and remember:&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;nothing&lt;/strong&gt; you can't build...&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Episode 1 Of "The Quasar Show" goes live on Thursday</title>
      <dc:creator>Luke</dc:creator>
      <pubDate>Thu, 01 Apr 2021 01:23:32 +0000</pubDate>
      <link>https://dev.to/quasar/episode-1-of-the-quasar-show-goes-live-on-thursday-1c1b</link>
      <guid>https://dev.to/quasar/episode-1-of-the-quasar-show-goes-live-on-thursday-1c1b</guid>
      <description>&lt;h2&gt;
  
  
  Episode 1 of "The Quasar Show" goes live tomorrow! Thursday 9:00pm CET
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/XxUYIg1eS9o"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Hello Quasar Developers!&lt;/p&gt;

&lt;p&gt;My name's Luke, and I'm a new member of the quasar team, focusing on video content.&lt;/p&gt;

&lt;p&gt;This is a quick post to let you know that &lt;strong&gt;Episode 1 of "The Quasar Show" goes live tomorrow!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;time: Thursday 9:00pm CET&lt;/p&gt;

&lt;h2&gt;
  
  
  What will be covered?
&lt;/h2&gt;

&lt;p&gt;I hope to see you there! We'll be covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The latest quasar/vue news&lt;/li&gt;
&lt;li&gt;A short play with the composition API&lt;/li&gt;
&lt;li&gt;Showcasing awesome quasar projects, live in the real world!&lt;/li&gt;
&lt;li&gt;Two cool components and how to use them&lt;/li&gt;
&lt;li&gt;"Corners of the docs" you may not know about&lt;/li&gt;
&lt;li&gt;Architecture (For all you Intermediate to Advanced Devs)&lt;/li&gt;
&lt;li&gt;And the story of how I fell in love with Quasar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Excited? Me too!&lt;br&gt;
Here's a short teaser...&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/rnB0YcGUOPM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Save the date/time&lt;/em&gt; in your calendar, and remember...&lt;/p&gt;

&lt;p&gt;You can build anything.&lt;/p&gt;

</description>
      <category>quasar</category>
      <category>vue</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
