Let's create a filter table component in Vue

  Рет қаралды 22,014

Andrew Schmelyun

Andrew Schmelyun

Күн бұрын

A plain table element displaying your data in Vue is pretty boring, let's make it more dynamic!
In this video, we'll use computed properties, events, fetch requests, and emits to build out a component that acts like a filter and search table with Vue 3 and the Composition API.
By the end of the video, we'll be able to search through a data set with text, select based on radio button options, or choose multiple statuses with checkboxes.
- 0:00 Intro
- 0:58 Setting up the table
- 3:55 Pulling in data
- 6:37 Adding the filter components
- 8:52 Search bar
- 16:54 Radio buttons
- 22:34 Dropdown checkboxes
- 30:18 Wrap up
Send me new video ideas and vote on what's coming next: suggest.gg/aschmelyun
Follow me on Twitter! / aschmelyun
Join my newsletter, where I send out new information about twice a month in the PHP, JavaScript, and Docker realms: aschmelyun.substack.com

Пікірлер: 66
@sibow
@sibow 10 ай бұрын
This was very comprehensive, and found to be useful… thanks man
@anangyoga1381
@anangyoga1381 6 ай бұрын
thank you! it helps me understanding how to make search functionality
@NebulaM57
@NebulaM57 3 ай бұрын
Man, you did a great job with this video!!! Would love to see more straight Vue tutorials!
@sohanrahman1897
@sohanrahman1897 10 ай бұрын
Great & Very Helpful! Thank You Sir!❤
@MrCellodj
@MrCellodj 9 ай бұрын
Amazing video!!! 👏 I love how clear you teach these concepts in your videos. Will you be doing a follow-up adding pagination and order-by toggles by any chance?
@aschmelyun
@aschmelyun 9 ай бұрын
Yep, I have that planned, stay tuned!
@CookingFantasies
@CookingFantasies 9 ай бұрын
Amazing video and very helpful, thanks you very much! Do you happen to have a repo with the code?
@codedjango
@codedjango 9 ай бұрын
@23:28 ...here we will additionally need to clear the statuses array upon the clicking of "Filter" button by emitting 1 more event from FilterDropdown component to parent DataTable component so that the filter in the parent DataTable component is cleared when the filter button is clicked in the FilterDropdown component, and next time it will start sending the updated list to its parent....
@gidaban79
@gidaban79 9 ай бұрын
Hi, Really great job :) just one question, If we working with API then we should send filters to backend or no ?
@angeloserenuela4065
@angeloserenuela4065 14 күн бұрын
THANK YOU REALLY HELPFUL!
@MagickzRex
@MagickzRex 8 ай бұрын
Is it possible for you to provide the source code for this project? Thanks.
@naalexis
@naalexis 2 ай бұрын
Great video!
@usamaramzan2497
@usamaramzan2497 5 ай бұрын
which font you are using in your editor ??
@ElectroTechKh
@ElectroTechKh 6 ай бұрын
Great video
@matthiashoffmann6555
@matthiashoffmann6555 9 ай бұрын
"And as always: " Thanks for this great video!
@sayedahmadnaweed1
@sayedahmadnaweed1 2 ай бұрын
Thank you. The tutorial is easy, useful with a fully comprehendible explanation.
@aschmelyun
@aschmelyun 2 ай бұрын
I'm glad you liked it!
@sayedahmadnaweed1
@sayedahmadnaweed1 2 ай бұрын
@@aschmelyun return cuisineFilter.value.splice(cuisineFilter.value.indexOf(filter), 1); this doesn't work until I changed it to return cuisineFilter.value.splice(cuisineFilter.value.indexOf(filter), -1); I am wondering if the same happened to others as well.
@ContextF1
@ContextF1 7 ай бұрын
what it the full code of the class of input field inside searchform and of the input inside filterdropdown
@guarddogchronicles
@guarddogchronicles 5 ай бұрын
Makes so much sense to me compared to using React, thanks very clear. When i was trying to do something like this my initial thought was to filter at the end point to only fetch the desired "tasks" for example instead of fetching all the tasks and then filtering on the frontend, would what i was trying to do be considered bad practice? This method seems a lot easier, thank you for your time. I am going to start using Vue now
@bohdan.vorona
@bohdan.vorona 9 ай бұрын
Thanks 💓
@user-tt6nc6mo7k
@user-tt6nc6mo7k 10 ай бұрын
Excellent video as always. That being said, I would always store the state for a table like that in the url. Guessing you didn't to keep it simple for the demo?
@aschmelyun
@aschmelyun 10 ай бұрын
Correct! I'm planning a follow-up video to this that deals with more intricacies like browser state, v-model usage, and pagination.
@rafeek6730
@rafeek6730 7 күн бұрын
love the video, are you going to upload more videos for this project or thats it ?
@iUmerFarooq
@iUmerFarooq 9 ай бұрын
Man! Love your videos. Please make more Vue js project base tutorials.
@aschmelyun
@aschmelyun 9 ай бұрын
Thanks! I have more coming down the line, just need to build out the projects and record them
@iUmerFarooq
@iUmerFarooq 9 ай бұрын
@@aschmelyun Thank you Thank you. Just waiting
@NaviView
@NaviView 2 ай бұрын
Thank you! very useful information. Can you make a video about adding pagination on this data using vue?
@nutzersht1179
@nutzersht1179 10 ай бұрын
Nice 🙏👌
@diarqoroviqi4869
@diarqoroviqi4869 9 ай бұрын
Hey Andrew great video thanks man, could you mind posting a video something like how to "manage" Roles and Permission in a SPA using vue.js? It would be a great video for example in Laravel using the Spatie Roles & Permission package
@sdsd-ec8rw
@sdsd-ec8rw 7 ай бұрын
4:20 "from the API that I set up earlier" - which video this API from and did you use Elasticsearch in there?
@pearkid
@pearkid 4 ай бұрын
idk either man, thats where im at now
@NotEdwinDev
@NotEdwinDev 3 ай бұрын
bro just saved my live on this because I was told to add the same exact features by my supervisor.
@sametc001
@sametc001 2 ай бұрын
thank you
@emmanuelterdoomzer6309
@emmanuelterdoomzer6309 Ай бұрын
Where is the api data coming from please? Is there a github repo to clone to follow along? I think you should have shared the resources used in the video so it is easy to follow along.
@boysmart339
@boysmart339 9 ай бұрын
Thanks you sir. Can you create filter with date_booking. Example: Hotel booking. ❤
@freshhb100
@freshhb100 6 ай бұрын
Anyone have a link for the source code?
@imhayatunnabi
@imhayatunnabi 5 ай бұрын
Is it possible to share the github code for this ? will be very helpful for this
@patsechaluce4407
@patsechaluce4407 8 ай бұрын
Can you this be integrated with laravel/inertia? thanks.
@aschmelyun
@aschmelyun 8 ай бұрын
Yes, definitely! It's just a plain Vue component which means we can add it easily to a Laravel app with Inertia. You'll just have to ensure that your controller has the functionality to pull in things like filter/sort changes, which can then be fired off with a partial reload: inertiajs.com/partial-reloads
@patsechaluce4407
@patsechaluce4407 8 ай бұрын
Thank you for the advice Sir? looking forward for more content like this :D @@aschmelyun
@BossAPlays
@BossAPlays 8 ай бұрын
crystal clear explanation. can I request. how about a paginated version and table sorting with same search filters.. would appreciate it.
@aschmelyun
@aschmelyun 8 ай бұрын
That's coming in a future version, yes!
@BossAPlays
@BossAPlays 8 ай бұрын
tnx in advance! looking forward.
@ordago123
@ordago123 10 ай бұрын
I think I disagree with having that many handle methods. Probably should've been `v-model`s. That would also allow having a clearAllFilters method in the table and send state from the server to those fields.
@mattskelton7471
@mattskelton7471 10 ай бұрын
Can you explain what you mean? Do you mean use v-model instead of events?
@aschmelyun
@aschmelyun 10 ай бұрын
100% agree, kept it more verbose to kind of see how everything's moving in between components. I have a follow-up video planned that refactors this to use models and stores state via query params!
@aschmelyun
@aschmelyun 10 ай бұрын
@@mattskelton7471 For each of the inputs (the search bar, radio buttons, and checkboxes), in Vue instead of listening to an event and using a handler function to modify the local ref, we could just directly attach the ref to the input using Vue's v-model attribute.
@macton182
@macton182 Ай бұрын
@@aschmelyun hello and thanks for your work. Is there a chance that the video (that you planned) will still appear?
@recompiled2
@recompiled2 8 күн бұрын
Where's the example showing how to filter for a date that's between two chosen dates such as when you're filtering a log?
@thangnq
@thangnq 10 ай бұрын
cool! how to setup jetbrains like you?
@aschmelyun
@aschmelyun 10 ай бұрын
It didn't take much work! I'm using the Material UI plugin, Palenight theme, and have a lot of the elements turned off from the View panel.
@user-wt3pf7wf7u
@user-wt3pf7wf7u 7 ай бұрын
What IDE are you using, Webstorm ?
@aschmelyun
@aschmelyun 7 ай бұрын
PHPStorm, another JetBrains product!
@user-wt3pf7wf7u
@user-wt3pf7wf7u 7 ай бұрын
Last question, is the UI framework bootstrap or something else ?@@aschmelyun
@mp-web3
@mp-web3 6 ай бұрын
It's Tailwindcss @@user-wt3pf7wf7u
@firojahmed4730
@firojahmed4730 8 ай бұрын
Very declarative content. Can you share the code at git?
@k0wu705
@k0wu705 9 ай бұрын
Thank You :) Please can u do pagination and headers sorting for this table component? :))
@aschmelyun
@aschmelyun 9 ай бұрын
Great suggestion! It's definitely planned for the follow-up
@freddyhuonder2969
@freddyhuonder2969 3 ай бұрын
its a very good video. What's about the pagination and sort?@@aschmelyun
@mcprah
@mcprah 9 ай бұрын
Great video. Could you please add pagination as well 🙏🏾
@aschmelyun
@aschmelyun 9 ай бұрын
Of course! It's planned for the follow-up video out soon
@NebulaM57
@NebulaM57 3 ай бұрын
Pagination AND column sorting too??
@azzhraanee201128
@azzhraanee201128 9 ай бұрын
have you tried to use v-model on the filters components directly ?? passing ":value" and emitting "input", its called custom input component
@aschmelyun
@aschmelyun 9 ай бұрын
That's definitely best practices, and will be a way to refactor this in a future video. Wanted to show off the "hard way" to do this!
@mahadevmushrooms
@mahadevmushrooms 9 ай бұрын
🙏
A Better Way To Organize Components In Vue
10:10
Program With Erik
Рет қаралды 18 М.
You don't need a frontend framework
15:45
Andrew Schmelyun
Рет қаралды 116 М.
Finger Heart - Fancy Refill (Inside Out Animation)
00:30
FASH
Рет қаралды 25 МЛН
WORLD'S SHORTEST WOMAN
00:58
Stokes Twins
Рет қаралды 50 МЛН
ЧУТЬ НЕ УТОНУЛ #shorts
00:27
Паша Осадчий
Рет қаралды 10 МЛН
Learn Pinia in 30 MINUTES! (Vue JS 3)
33:58
Make Apps with Danny
Рет қаралды 116 М.
A Better Way To Create Vue Components With Props Using TypeScript
12:40
Program With Erik
Рет қаралды 9 М.
A Response to  You don't need a frontend framework
30:59
wat the doodle!
Рет қаралды 4,1 М.
When to use Traits, Interfaces, and Abstract Classes in PHP
15:08
Andrew Schmelyun
Рет қаралды 17 М.
5 Ways to Fetch Data from an API in Vue 3 Composition API
6:28
Justin Brooks
Рет қаралды 71 М.
useAsyncData vs. useFetch 🤯
15:20
Alexander Lichter
Рет қаралды 8 М.
Props and Emitters in Vue 3 (FULL TUTORIAL)
14:53
VueReference
Рет қаралды 15 М.
A few different ways to seed databases in Laravel
13:02
Andrew Schmelyun
Рет қаралды 3,6 М.
low battery 🪫
0:10
dednahype
Рет қаралды 937 М.
Я купил первый в своей жизни VR! 🤯
1:00
Вэйми
Рет қаралды 3,3 МЛН
iPhone 16 с инновационным аккумулятором
0:45
ÉЖИ АКСЁНОВ
Рет қаралды 10 МЛН
Это Xiaomi Su7 Max 🤯 #xiaomi #su7max
1:01
Tynalieff Shorts
Рет қаралды 2,1 МЛН
ВАЖНО! Не проверяйте на своем iPhone после установки на экран!
0:19
ГЛАЗУРЬ СТЕКЛО для iPhone и аксессуары OTU
Рет қаралды 6 МЛН
Это - iPhone 16 и вот что надо знать...
17:20
Overtake lab
Рет қаралды 137 М.
Rate This Smartphone Cooler Set-up ⭐
0:10
Shakeuptech
Рет қаралды 5 МЛН