Zoaib Khan
Zoaib Khan
  • 97
  • 546 243
How to make your Angular apps responsive with CDK Layout and CSS?
#angular #responsivewebdesign #cdk
✨✨ Get the code for the theme builder app here:
buymeacoffee.com/zoaibkhan/e/254994
🧪 Try out the Theme Builder app LIVE yourself:
material-theme-builder.zoaibkhan.com/
Blog post on Responsive CSS grid:
zoaibkhan.com/blog/create-a-responsive-card-grid-in-angular-with-css-2023/
Learn how to make your Angular apps truly responsive for all screen sizes, from mobile to desktop. This video provides a step-by-step guide on optimizing the layout of an Angular Material theme builder app using a combination of CSS and Angular CDK Breakpoint Observer.
📽️ My courses:
zoaibkhan.com/courses
✍️My blog for more free Angular posts:
zoaibkhan.com/blog
Socials:
Twitter - zoaibdev
Facebook - thisiszoaib
LinkedIn - www.linkedin.com/in/zoaib-khan-b6456815/
Sections
00:00 Introduction to Responsive Angular Apps
00:11 Challenges with Current Layout
00:54 Overview of Responsive Strategies
01:52 Understanding Angular CDK Breakpoint Observer
04:48 Implementing Responsive Service
12:37 Creating Responsive Layouts with CSS
16:01 Conclusion and Additional Resources
Переглядів: 751

Відео

How to add reset password functionality with Angular and Firebase
Переглядів 181День тому
#angular #firebase #authentication ✨ Link to the course (with lowest price for the next 5 days) www.udemy.com/course/angular-firebase-authentication-create-full-sign-up-app/?couponCode=A36A8E41DE5768CF7BA7 📽️ My courses: zoaibkhan.com/courses ✍️My blog for free Angular posts: zoaibkhan.com/blog In this video, you'll get a sample lecture from a Udemy course on integrating Angular and Firebase. T...
How to create a Nested Sidebar in Angular 18 with Material Components!
Переглядів 2,3 тис.14 днів тому
#angular #sidebar #nested ✨ Get the code of the nested sidebar here: buymeacoffee.com/zoaibkhan/e/177346 📽️ Complete playlist for the Angular youtube sidebar ua-cam.com/play/PLHbz-DWIAPJC9QksAO1PHobAGXde3CgIz.html 📽️ My courses: zoaibkhan.com/courses ✍️My blog for more free Angular posts: zoaibkhan.com/blog In this video, I fulfill a long standing request by some viewers by adding nested featur...
How Angular Model Inputs helped me fix a weird bug in my app!
Переглядів 54828 днів тому
#angular #signals #input ✨ Get the theme builder app shown in the video here: buymeacoffee.com/zoaibkhan/e/254994 Or try it out LIVE: easy-material-theming.vercel.app/ ❤️ If you liked the video, you can buy me a coffee here: buymeacoffee.com/zoaibkhan 📽️ My courses: zoaibkhan.com/courses ✍️My blog for more free Angular posts: zoaibkhan.com/blog In this video, I'll discuss how we fixed a bug in ...
I tested Angular 18 Zoneless mode and this is what I found out!
Переглядів 1,3 тис.Місяць тому
#angular #signals #reactivity ✨ Try out the demo here: angular-zoneless-demo.vercel.app/ 🧑‍💻 Github link: github.com/thisiszoaib/angular-zoneless ❤️ If you'd like, buy me a coffee here: buymeacoffee.com/zoaibkhan This video explains a little experiment I did to test out Angular Change Detection flows after the new Zoneless mode is enabled in Angular 18. The findings are interesting! 📽️ My cours...
Easy, Dynamic Angular Material Theming with just 6 colors!
Переглядів 3,4 тис.Місяць тому
#angular #material #css ✨ Get the theming patch CSS file here: buymeacoffee.com/zoaibkhan/e/254988 ✨✨ Get the whole theme builder app here: buymeacoffee.com/zoaibkhan/e/254994 (Note: If you're a student, send me your ID at consult@zoaibkhan.com and I can send you a discount code!) 🧪 Try out the Theme Builder app LIVE yourself: material-theme-builder.zoaibkhan.com/ Discover an innovative approac...
Customizing Angular Material just got easier in v18!
Переглядів 7 тис.Місяць тому
#angular #material #design 🧪 Try out a theme builder app I created using design tokens here: material-theme-builder.zoaibkhan.com/ In this video, I discuss the new changes in Angular Material v18 - which will make customization of components so much more easier! 📽️ My courses: zoaibkhan.com/courses ✍️My blog for more free Angular posts: zoaibkhan.com/blog Socials: Twitter - zoaibdev...
The problem with Angular Signals and Async Reactivity
Переглядів 9502 місяці тому
#angular #signals #rxjs The complete app I was building can be found on my shop buymeacoffee.com/zoaibkhan/e/224382 📽️ My courses: zoaibkhan.com/courses ✍️My blog for more free Angular posts: zoaibkhan.com/blog In this video, I discuss a problem I got with implementing a very common front-end problem using the Signals API in Angular. And the best way to resolve it! Socials: Twitter - twitter.c...
How to add Quick Search to your Angular app with Google Books API!
Переглядів 4302 місяці тому
#angular #searchbar ✨ Grab the code for the search bar app here www.buymeacoffee.com/zoaibkhan/e/224382 Guide to getting the API key for the Google Books API developers.google.com/books/docs/v1/using 📽️ My courses: zoaibkhan.com/courses ✍️My blog for more free Angular posts: zoaibkhan.com/blog This video tutorial demonstrates how to add quick search functionality to an Angular application using...
Top 5 Angular Errors and how to resolve them!
Переглядів 4453 місяці тому
#angular #errors #fix This video addresses the top five most common Angular errors encountered during development, provides explanations for why they occur, and offers solutions to resolve them. 📽️ My courses: zoaibkhan.com/courses ✍️My blog for more free Angular posts: zoaibkhan.com/blog Socials: Twitter - zoaibdev Facebook - thisiszoaib LinkedIn - www.linkedin.com/in/...
How I built a Videos Explorer App with Angular 17 & YouTube Data API
Переглядів 5423 місяці тому
How I built a Videos Explorer App with Angular 17 & UA-cam Data API
Power of Computed Signals in Angular #angular #reactivity #javascript
Переглядів 1974 місяці тому
Power of Computed Signals in Angular #angular #reactivity #javascript
How to create a Google Style Search Bar with Angular CDK Overlay and Material!
Переглядів 2,7 тис.4 місяці тому
How to create a Google Style Search Bar with Angular CDK Overlay and Material!
Is AnalogJS good enough for my blog site?
Переглядів 7845 місяців тому
Is AnalogJS good enough for my blog site?
Why did we need Signal Inputs in Angular, again?
Переглядів 1,8 тис.5 місяців тому
Why did we need Signal Inputs in Angular, again?
Angular 16+ DX feature: Component Input Route Parameter Bindings!
Переглядів 4225 місяців тому
Angular 16 DX feature: Component Input Route Parameter Bindings!
Angular Signals and Firebase integration tutorial: Full Stack Contacts App!
Переглядів 2 тис.6 місяців тому
Angular Signals and Firebase integration tutorial: Full Stack Contacts App!
Angular 17 View Transitions API: Create smooth transition animations in a few steps!
Переглядів 6 тис.6 місяців тому
Angular 17 View Transitions API: Create smooth transition animations in a few steps!
Preview of View Transitions API Tutorial for Angular 17! Coming soon
Переглядів 2786 місяців тому
Preview of View Transitions API Tutorial for Angular 17! Coming soon
Angular 17 Defer block: Create Lazy Loaded Material Tabs UI with `when` trigger!
Переглядів 3,6 тис.7 місяців тому
Angular 17 Defer block: Create Lazy Loaded Material Tabs UI with `when` trigger!
Udemy Course Sample Lecture: Modern Angular Concepts!
Переглядів 1477 місяців тому
Udemy Course Sample Lecture: Modern Angular Concepts!
Angular 17 Defer block: Create a Lazy-loaded Youtube Player for a blog!
Переглядів 1,8 тис.7 місяців тому
Angular 17 Defer block: Create a Lazy-loaded UA-cam Player for a blog!
Udemy Course Sample Lecture: Overview of the final Sign Up app!
Переглядів 2188 місяців тому
Udemy Course Sample Lecture: Overview of the final Sign Up app!
New Udemy Course (Paid): Learn about Angular and Firebase Authentication, Firestore and Storage!
Переглядів 4598 місяців тому
New Udemy Course (Paid): Learn about Angular and Firebase Authentication, Firestore and Storage!
Create a YouTube sidebar clone with Angular Material Components! (Part 3 - Animations)
Переглядів 4,8 тис.8 місяців тому
Create a UA-cam sidebar clone with Angular Material Components! (Part 3 - Animations)
Create a YouTube sidebar clone with Angular Material Components! (Part 2)
Переглядів 8 тис.8 місяців тому
Create a UA-cam sidebar clone with Angular Material Components! (Part 2)
Create a YouTube sidebar clone with Angular Material Components! (Part 1)
Переглядів 19 тис.8 місяців тому
Create a UA-cam sidebar clone with Angular Material Components! (Part 1)
Uploading Image with Angular and Firebase Storage: Angular Image Cropper Part 2
Переглядів 3,3 тис.8 місяців тому
Uploading Image with Angular and Firebase Storage: Angular Image Cropper Part 2
Don't use Signals with Angular Reactive Forms!
Переглядів 3,6 тис.9 місяців тому
Don't use Signals with Angular Reactive Forms!
How to build an Image Cropper Control in Angular with Material and ngx-image-cropper
Переглядів 3,8 тис.10 місяців тому
How to build an Image Cropper Control in Angular with Material and ngx-image-cropper

КОМЕНТАРІ

  • @GerardoRojasPacheco
    @GerardoRojasPacheco 5 днів тому

    Excellent, thank you very much for your contribution, very clear and useful Please, how could I make the menu expand when I hover over it, something like adminlte

    • @GerardoRojasPacheco
      @GerardoRojasPacheco 3 дні тому

      I found the solution and share it..: <mat-sidenav opened mode="side" #sidenavElement [style.width]="sideNavWidth()" (mouseover)="collapsed.set(false)" (mouseout)="collapsed.set(true)" >

  • @andresmauriciofajardoolaya2721
    @andresmauriciofajardoolaya2721 7 днів тому

    Awesome tips to make apps responsive with material cdk, thanks for this video 😀

    • @ZoaibKhan
      @ZoaibKhan 7 днів тому

      Thanks Andres! Glad you found it helpful ☺️

  • @wilfredomartel7781
    @wilfredomartel7781 7 днів тому

    🎉

  • @IAMKINGOFKINGSLORDOFLORDS
    @IAMKINGOFKINGSLORDOFLORDS 9 днів тому

    Hi Khan I have a few things which don't match up. One thing is the profile picture seems to be not centered it is off to the left. Another thing is the sidenavbar has a very small height not taking up the full height available and lastly i don't get the highlight of the active route. Can you help please? I am loving your videos.

    • @IAMKINGOFKINGSLORDOFLORDS
      @IAMKINGOFKINGSLORDOFLORDS 9 днів тому

      I should also add that I have header and footer components and i'd like the hamburger to be in the header as opposed to right below it.

    • @IAMKINGOFKINGSLORDOFLORDS
      @IAMKINGOFKINGSLORDOFLORDS 9 днів тому

      and where is the Dashboard and other MenuItems icon being set?

    • @ZoaibKhan
      @ZoaibKhan 9 днів тому

      Please go through the styling part more closely, it seems you've missed out some CSS styles. E.g. the height of sidenav is set in the styles

    • @ZoaibKhan
      @ZoaibKhan 9 днів тому

      It's in the menu items array signal defined in the sidenav component

    • @IAMKINGOFKINGSLORDOFLORDS
      @IAMKINGOFKINGSLORDOFLORDS 9 днів тому

      @ZoaibKhan are you available on a Consulting basis in an advisory role? 30 minutes or 1 hour per day to answer questions? I work for Ministry of Foreign Affairs in Belgium and we are moving all apps to Angular we are building reusable share libraries that will reside in a common separate repository that can be leveraged by any Angular App within the organization using single sign on common components services etc. In short are you available to coach us just a few minutes per day to support our efforts.

  • @paschalokafor9043
    @paschalokafor9043 10 днів тому

    Thank you very much Zoaib Khan. I have learnt quite alot from you channel. I am new to angular and I wish I could work with you on any project

    • @ZoaibKhan
      @ZoaibKhan 10 днів тому

      You are most welcome, Paschal! If you're looking for mentoring, you can email me at consult@zoaibkhan.com - and I'll try to help you out as much as possible :)

  • @BlackbirdStudiosBXL
    @BlackbirdStudiosBXL 11 днів тому

    Brilliant. I had no idea how to implement this will try today to get this woeking in our project. Thank you so much!!!

    • @ZoaibKhan
      @ZoaibKhan 10 днів тому

      Also check out my recent followup to this - where I add the nested menu items functionality as well ua-cam.com/video/u83tICIfLWc/v-deo.html

    • @BlackbirdStudiosBXL
      @BlackbirdStudiosBXL 10 днів тому

      What other tricks do you have up your sleeve im hooked. ​@@ZoaibKhan

    • @BlackbirdStudiosBXL
      @BlackbirdStudiosBXL 10 днів тому

      Will this work in Angular 17 and 18 probably right? You are using standalone components

    • @ZoaibKhan
      @ZoaibKhan 10 днів тому

      @@BlackbirdStudiosBXL yes, the nested one esp was made in v18

  • @BlackbirdStudiosBXL
    @BlackbirdStudiosBXL 11 днів тому

    Thank you so much for this. Exactly what i need.

    • @ZoaibKhan
      @ZoaibKhan 10 днів тому

      Glad it was helpful! :)

  • @techwake360
    @techwake360 12 днів тому

    could you please make a tutorial about setup firebase in angular 17 or above from scratch ? with some crud operations

    • @ZoaibKhan
      @ZoaibKhan 12 днів тому

      Alright, noted! Thanks for the input

  • @techwake360
    @techwake360 12 днів тому

    جزاک اللہ خیرا

  • @jkf16m96
    @jkf16m96 14 днів тому

    Tbh I would completely ditch the css unless I have styles to import. Or maybe we can import styles while online, if that's an option then I'll ditch css too. Im starting to make really small components in angular, combined with the template patterns like ngtemplateoutlet

    • @ZoaibKhan
      @ZoaibKhan 14 днів тому

      I'm doing the same myself! Single file components actually help you in that direction because you know when the component is getting too large

  • @gekoskipatric
    @gekoskipatric 14 днів тому

    will this work with an ng-module based app?

    • @ZoaibKhan
      @ZoaibKhan 14 днів тому

      Yes, it should work

  • @davoodsoleimani9482
    @davoodsoleimani9482 15 днів тому

    Thank you. But why material outline icons did not work for me?!🤔

  • @GabrielGuerreroIssa
    @GabrielGuerreroIssa 16 днів тому

    Great video

  • @davoodsoleimani9482
    @davoodsoleimani9482 16 днів тому

    Thanks a lot. I have a problem! When navbar collapsed, and it's width decreased to 64px, an scroll bar appears at bottom of navbar! how can I fix it?

    • @ZoaibKhan
      @ZoaibKhan 16 днів тому

      Is it a horizontal scrollbar? Also, is it scrolling by small amount or more than that? Having the scroll usually means there is more content than what can be shown in that width. So you can try increasing the width a bit to accommodate any extra space so the scrollbar disappears. Or you can simply disable scroll by using overflow hidden instead of auto

    • @davoodsoleimani9482
      @davoodsoleimani9482 16 днів тому

      @@ZoaibKhan Yes, it is a horizontal scrollbar, but why it appears just in my project, while I did all steps as you shown?! I set navbar's width to auto, and the width increased to about 100px, that is not nice for collapsed state!

    • @ZoaibKhan
      @ZoaibKhan 15 днів тому

      @@davoodsoleimani9482 There must be some content which remains in the sidebar increasing its width to 100px. Make sure that content is not there in collapsed state

  • @sow-jr4xr
    @sow-jr4xr 16 днів тому

    waste video :(

    • @ZoaibKhan
      @ZoaibKhan 16 днів тому

      Thanks for your comment...

  • @miguelito3056
    @miguelito3056 18 днів тому

    Well explained video, thanks a lot. Your rock!

    • @ZoaibKhan
      @ZoaibKhan 18 днів тому

      Glad you found it useful! ☺️

  • @H2-oe4cu
    @H2-oe4cu 19 днів тому

    This is very useful, thank you. Does your code work with Material 3, or does your code still use Material 2?

    • @ZoaibKhan
      @ZoaibKhan 18 днів тому

      Material 2, because I didn't change anything when upgrading from v16 to v18. Would be interesting to try it out though - the menu items might display bit differently in material 3

    • @H2-oe4cu
      @H2-oe4cu 18 днів тому

      @@ZoaibKhan Thank you for your reply. Like many others I'm trying to upgrade to M3 and found it very challenging, as there is no clear, beginner-friendly documentation available. Your content has been immensely helpful, and an M3 version of your excellent rail/sidenav would be even more helpful. Thanks again.

    • @ZoaibKhan
      @ZoaibKhan 18 днів тому

      Ok, let me try it out by upgrading to M3. Could be an interesting topic for a video :) Meanwhile, I hope you've gone through the official docs on migrating to M3: material.angular.io/guide/material-2-theming#how-to-migrate-an-app-from-material-2-to-material-3

    • @H2-oe4cu
      @H2-oe4cu 18 днів тому

      @@ZoaibKhan That would be great. Yes I have gone through the documentation, like I said I found it very challenging, and I'm slightly put out by guidance starting off with "ultimately it is up to you".

    • @ZoaibKhan
      @ZoaibKhan 18 днів тому

      @@H2-oe4cu haha, yeah it is confusing! Thanks for your input

  • @imohanreddy
    @imohanreddy 19 днів тому

    Hi , you are using function call menuItems() for iterating , which is a function is it optimal? as angular will have verify and update everytime irrespective of menuItems array changing?

    • @ZoaibKhan
      @ZoaibKhan 19 днів тому

      It is a signal, Mohan! Signal values are accessed just like you're calling a function. As we move forward with the new changes in Angular and Zoneless apps, using signals in templates is the recommended approach!

    • @imohanreddy
      @imohanreddy 19 днів тому

      @@ZoaibKhan oh , Thanks for the clarification 🙌

  • @lshadowSFX
    @lshadowSFX 20 днів тому

    Your content is SUPER USEFUL plus you don't only show the topic of the video itself but you also teach proper ways to do it when comunicating between components!

    • @ZoaibKhan
      @ZoaibKhan 19 днів тому

      Thanks man! Glad you're finding it useful :) Everything we create goes through a process so it's important to understand the process as well, so that we can learn lessons for the future! Thanks for your input

    • @lshadowSFX
      @lshadowSFX 17 днів тому

      @@ZoaibKhan I trully love your content! It is super easy to follow, it does feel like you always know what you are doing and not just "guessing" like a lot of people! your channel is super instructive! new subscriber here! Could please make a tutorial on how to properly migrate to angular 18 from older versions of angular? like angular 16 to angular 18, for example. I've tried doing it and there are always so many errors, problems with installed libraries because of versions support, etc., plus, the older versions of angular managed all components as a non-standalone, so everything went into a app.module.ts huge file with all services, components, custom pipes, etc. With no configuration for hydration and what not, so how is it done? :( I'd really appreaciate it! and i'm sure a lot of people will too! thank you so much for all your work!

    • @ZoaibKhan
      @ZoaibKhan 16 днів тому

      Well, a little secret: I had to record this video multiple times, because the first time I made a lot of mistakes which would've caused a lot of confusion. But that's just the process all of us creators have to go through :) Thanks for the subscribe and I hope you find more value here. About your suggestions, that is another frequently asked topic. And the only reason I haven't yet created a video on upgrade guide to latest version is because of its complexity. I recently upgraded one of my client's apps to the newest version - and from upgrading material to standalone to routing/state and third party libraries - it can get messy pretty quickly. But I've it in my list of todos - and hopefully will get to create one soon. I have an older chat app in Angular - maybe that would be a good cast study to follow for an upgrade to the latest version :)

    • @lshadowSFX
      @lshadowSFX 13 днів тому

      @@ZoaibKhan I can tell you put a lot of effort into the videos! It makes it really pleasant to watch and listen to! thank you very much!

  • @rohitkharche7562
    @rohitkharche7562 20 днів тому

    I was scouting internet for this implementation and then found you uploaded video about it, thanks for this. Would love a similar with material 3 as well.

    • @ZoaibKhan
      @ZoaibKhan 20 днів тому

      You're welcome 🤗 About material 3, it's going to change the look and feel of the sidebar a bit, so I'm not sure. Currently it is mimicking the UA-cam studio sidebar

  • @informer9261
    @informer9261 20 днів тому

    sir please make an video of how to share data between in different siblings components and how to setup up architechture of an project when we start build apllication.

    • @ZoaibKhan
      @ZoaibKhan 20 днів тому

      Ok, those are common issues, so I've noted them for future videos.

  • @palashjain81
    @palashjain81 20 днів тому

    hii, in the end how to ignore that scroll every time user enter the chat

    • @ZoaibKhan
      @ZoaibKhan 20 днів тому

      Hello :) you mean you want to remove the auto scroll functionality?

  • @Razes9ooo474lO4
    @Razes9ooo474lO4 21 день тому

    Subscribed and hitted the bell.... did u heared it ... yay

  • @Razes9ooo474lO4
    @Razes9ooo474lO4 21 день тому

    keep teaching us with new angular 18 with spring boot as backend... looking forward more videos on these topics from you....

  • @Razes9ooo474lO4
    @Razes9ooo474lO4 21 день тому

    keep posting from the basic... finally found good teacher...

  • @to15108
    @to15108 22 дні тому

    Hello...when starting video #2 it says in the previous video we created our chat app but I did not see that in video #1. Can you tell me which video has the initial creation of the app, or if there is one video will all? Thanks.

    • @ZoaibKhan
      @ZoaibKhan 22 дні тому

      Here you go with the whole playlist: ua-cam.com/play/PLHbz-DWIAPJDxWTyoq0O2v4T3AO5W94vl.html

    • @to15108
      @to15108 22 дні тому

      @@ZoaibKhan Thanks. In #2 it talks about starting the app in a previous video (on authentication) . Can you share that too please? Thanks.

    • @ZoaibKhan
      @ZoaibKhan 22 дні тому

      @@to15108 ua-cam.com/play/PLHbz-DWIAPJAkAKmKr4AkIeqUgnvcxLXF.html&si=Lpld0vZBov9mYQO1

  • @tornyu
    @tornyu 23 дні тому

    Please check your sound levels: that Subscribe sound effect was _way_ too loud compared to your voice. Quite a shock. Great explanation tho, thanks for the video.

    • @ZoaibKhan
      @ZoaibKhan 23 дні тому

      Oops, apologies for that! Will try to adjust audio if possible. Glad to know you found the video helpful :)

  • @vladnovski6050
    @vladnovski6050 23 дні тому

    does this mean that Angular is still monkeypatches browser events as before?

    • @ZoaibKhan
      @ZoaibKhan 23 дні тому

      No, only event handlers/listeners. Other browser events are not monkey patched because no zone js

  • @khizerrehan7164
    @khizerrehan7164 24 дні тому

    Great Explanation! Q1: In your demo if you are using experimental zone and use obs$ without async pipe in template and do subscription in TS file does it run CD and Render too? Q2: Are you using some paid vpn for Twitter at least in pakistan? Q3: Do you provide some mentorship/guidance (Paid)? Subscribed +1

    • @ZoaibKhan
      @ZoaibKhan 24 дні тому

      Thanks Khizer! 1) No, you'd have to call markForCheck manually in the subscription block to trigger CD and render 2) Free VPN - zenmate 3) Sure, you can email at consult@zoaibkhan.com - I have a consultation option on my Upwork page as well

  • @MonaCodeLisa
    @MonaCodeLisa 24 дні тому

    I have not encountered that problem because I always delete the default databinded state and I set it to opened="open" that is like the default thing I do first, and then the second default thing is to remove "example-" from all classes & rearrange CSS styles to SCSS 🙂 But I like your approach and cool video 👍

    • @ZoaibKhan
      @ZoaibKhan 24 дні тому

      So you basically keep the state opened by default and then open and close using styles?

    • @MonaCodeLisa
      @MonaCodeLisa 24 дні тому

      @@ZoaibKhan the toggle still works, just it is initially open and clicking or tapping on mobile outside of the sidenav - does not close it, it is only controlled by the menu mat-icon

    • @ZoaibKhan
      @ZoaibKhan 24 дні тому

      @@MonaCodeLisa aah, so you're using the "side" mode instead of the "over" mode. It works for me in that case as well. The issue comes up when for smaller screens I need to make it work in "over" mode with backdrop click enabled.

    • @MonaCodeLisa
      @MonaCodeLisa 24 дні тому

      @@ZoaibKhan I am still using both, I am using the mediaquery matches, so desktop is "side" and turns into "over" for mobile, I keep all that Angular Material provides for me :) and the only thing I remove is the data binding there to set it to open as default state when page loads

  • @ZoaibKhan
    @ZoaibKhan 25 днів тому

    Have you tried the new Zoneless mode yet? Let me know what you found interesting :)

  • @ZoaibKhan
    @ZoaibKhan 25 днів тому

    I would love to hear your thoughts on model inputs! Have you ever used them in your apps or plan to? Let me know :)

  • @dylanjhalltech8313
    @dylanjhalltech8313 26 днів тому

    Excellent explanation.

    • @ZoaibKhan
      @ZoaibKhan 25 днів тому

      Glad you found it useful! :)

  • @rahulshukla6748
    @rahulshukla6748 29 днів тому

    Please bring one full length Angular and Angular Material course in Udemy 🙏

  • @codeblitz2354
    @codeblitz2354 29 днів тому

    Keep it up bro nice content

  • @BJAnderson
    @BJAnderson Місяць тому

    Great video. Thanks for the effort! You can use sass to compile your styles.scss file into styles.css and it will have all the css variables defined in there. Add this to your package.json scripts: "sass": "sass --load-path ./node_modules --load-path ./ --no-source-map", "sass:styles": "npm run sass src/styles.scss ./tmp/styles.css", Then run npm run sass:styles The generated css file will be in the tmp folder under your project root. If you have your material config defined in a different file, you have to compile that file instead of styles.scss... There are about 850 --mat-* css variables defined in my styles.css in Ng18

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Oh, nice way of finding out all design tokens! Thanks for the input 🙏

  • @HypemanWaz
    @HypemanWaz Місяць тому

    Vid put toghether nicely. Would like to hear more about the host component prop.

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Glad you liked it! The host component binding is the best way currently to bind attributes and css classes on the component with signals. That's why I've used it here in this way.

  • @KannanArjunan
    @KannanArjunan Місяць тому

    Very neat explanation. Keep rocking!! Expecting more videos like this...

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Thanks Kannan! Any special topics you might be interested in?

  • @KostasOreopoulos
    @KostasOreopoulos Місяць тому

    Excellent as always. Your udemy course is also great! highly recommended.

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Thanks Kostas! 🙏

  • @ngOnBreak
    @ngOnBreak Місяць тому

    amazing content!

  • @radvilardian740
    @radvilardian740 Місяць тому

    the worst thing about angular is angular material, everytime u do upgrade version it breaks really hard, again and again.

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      It should get better on this count with design tokens and easier customization! :)

  • @madeOfClay99
    @madeOfClay99 Місяць тому

    Thanks for the video but it would have been beneficial if you would just share the source code without having to pay it

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Thanks for your concern and I can understand. I do explain the exact process I followed, so if you'd like you can follow the same and come up with your own version of it. I spent time and energy on it, so... :) If you're a student and need the code, you can also drop me an email at consult@zoaibkhan.com and I can provide you a discount. P.S. Your support helps me sustain the channel and keep making useful content. Thanks again for your interest, Cheers

    • @madeOfClay99
      @madeOfClay99 Місяць тому

      I appreciate your reply, although I don't agree with you. Sharing is caring, you are putting a simple demo behind a paywall, a demo....is not even an application for production use. It's like you created a delicious meal and you are putting a price for the recipe instead of sharing it with the community so others can learn and modify it and everyone wins, or setting a price for a response on Stackoverflow for someone in need. In any case, that's how you role, fine. You have lost a subscriber, there are other youtubers, certificate Angular developers experts that share in their videos their demos, not asking for a price. Good luck with your channel

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      That's fine, sometimes we agree to disagree. It's a nice analogy though about the recipe. The thing is I've already given away the recipe in this and the previous video for FREE - so you can come up with your dish yourself if you want :) And if you want to taste the dish (as you said), I added a link to a LIVE deployment of the Theme Builder App after the video was published (in the description and an in video card). But yeah I did it after publishing, so it might have escaped your notice. It's given below again: easy-material-theming.vercel.app/ So hope that helps. And I wish you all the best in your learning journey! And I also respect all the other youtubers and content creators who give their time and energy to teaching others. Thanks for expressing your opinion here :)

  • @KostasOreopoulos
    @KostasOreopoulos Місяць тому

    Or we can wrap the signal sets in an untracked scope I guess. But looking at the source code of derivedAsync, its very very clever.

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Oh, I haven't looked at it in detail myself. Can you share some of the clever stuff there? :)

    • @KostasOreopoulos
      @KostasOreopoulos Місяць тому

      @@ZoaibKhan It converts the promise if given to an observable, flattens it, uses DestroyRef, which I have never heard of to unsubscribe on destroy, peaks on the initial value in an untracked scope to avoid recursion, does the computation in an untracked scope, and gives back a computed signal based on the objeservable's next value. Its a little bit confusing because it tries to handle a lot of function signatures in the same function

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      @@KostasOreopoulos Wow, that's quite a lot! Respect for the maintainers increased even more :)

  • @ovalle346
    @ovalle346 Місяць тому

    Thank you for such a beautiful contribution, the sidenav implemented, now the dark theme. 🤩

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Glad you liked it! ☺️

  • @bartson4425
    @bartson4425 Місяць тому

    Why do I need metaframework is express js/nest js with ejs not enough for ssr?

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Well, the SSR support in Angular is getting better with every release, but AnalogJS still has an edge in terms of features like file based routing and built in markdown support. So I guess its more about DX for content focused sites such as blogs and such.

    • @bartson4425
      @bartson4425 Місяць тому

      @@ZoaibKhan ah okay nice then I will try it out 🔥

  • @kieransharpe4532
    @kieransharpe4532 Місяць тому

    Would it be possible to extend the variables to also include the accent colour that is present on the angular material website? Where the color="accent" property is set?

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Yes, it is possible to do so by setting the primary or other color values under the relevant selector. So when color="accent" property is set, angular material adds the '.mat-accent' class to the button. So you can modify the theming file to target body plus the .mat-accent selector: --accent: red; body .mat-accent { --primary: var(--accent); } And then add another --accent variable as above. Note, you don't need to specify each token and assign it to accent, you can simply change any of the six variables to whatever you need for the accent style. You can also create your own component in angular e.g. like an accent-button, which specificially sets the primary color to your accent color. This is the flexibility that CSS variables provide! Let me know if you need more help - I'll be glad to explain in a video perhaps.

    • @kieransharpe4532
      @kieransharpe4532 Місяць тому

      @@ZoaibKhan Thanks for the quick reply! I'm not sure if this is working as expected. I've set this up and it doesn't seem to be taking the changed value of the --primary variable. Using the Button page on the material documentation as an example. Basic, Primary, Warn and Link are the correct color but the Accent button remains whatever the default material style sheet is set to. Below is the info from the dev tools for that accent button in the example .mat-accent.mat-mdc-button-base { --mdc-text-button-label-text-color: #343dff; --mdc-protected-button-label-text-color: #343dff; --mdc-filled-button-container-color: #343dff; --mdc-filled-button-label-text-color: #ffffff; --mdc-outlined-button-label-text-color: #343dff; --mat-text-button-state-layer-color: #343dff; --mat-text-button-ripple-color: rgba(52, 61, 255, 0.12); --mat-protected-button-state-layer-color: #343dff; --mat-protected-button-ripple-color: rgba(52, 61, 255, 0.12); --mat-filled-button-state-layer-color: #ffffff; --mat-filled-button-ripple-color: rgba(255, 255, 255, 0.12); --mat-outlined-button-state-layer-color: #343dff; --mat-outlined-button-ripple-color: rgba(52, 61, 255, 0.12); } body .mat-accent { --primary: var(--accent); } --accent: #F7C245;

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      ​@@kieransharpe4532 It'll be a difficult to discuss here. If possible, please send me a stackblitz or GitHub repo link on consult@zoaibkhan.com - so I can see what the problem might be

  • @raul834
    @raul834 Місяць тому

    Great video! Thank you very much. Is there any statement from Angular Material about their commitment to the tokens? Will they stay stable?

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Yes, there is a mention of them being "stable" in the FAQs for v17 and a schematic to be provided in case they change before being stable. v17.material.angular.io/guide/material-3#can-i-depend-on-the-css-custom-property-names-being-stable

    • @raul834
      @raul834 Місяць тому

      @@ZoaibKhan thank you again. You got my subscription. I have been looking at lots of Angular videos and your channel must be one of the best.

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      @@raul834 🙏

  • @hooped8907
    @hooped8907 Місяць тому

    Thanks for video. I just upgraded to Angular 18 and Material Components V18 but the @angular/material:m3-theme schematic for whatever reason, isn't generating the additional color entries for the neutral palette as seen in your video. Oddly, there is a "_patch-missing-hues" that the built in palettes are generated with for this exact issue. I checked the package.json to be sure I was on 18 and I am. Any idea's what might be going on?

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      That's odd. I generated the m3 theme file in the video with the v18 RC version, so let me check it again with the v18 release and get back

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      Update: I just tried with latest v18 release and it seems to be working fine. Perhaps clear all node modules and try again?

    • @hooped8907
      @hooped8907 Місяць тому

      @@ZoaibKhan Hey thanks for testing that out. I'll try a fresh project rather than the existing app I just upgraded from 17 and see what happens and report back when I get a moment. Again, thanks for your video (and all the other ones!).

    • @hooped8907
      @hooped8907 Місяць тому

      @@ZoaibKhan I was providing the primary, secondary, tertiary and neutral colors. I narrowed it down to if you provide a neutral color, then the schematic doesn't generate those extra 10 colors for the neutral palette. I'm not sure if that's a bug or what but it's good enough for now.

    • @ZoaibKhan
      @ZoaibKhan Місяць тому

      @@hooped8907 thanks for the update!